安装应用程序软件和复制应用程序的可执行文件(例如:a.out)之间有什么区别?当我们运行 a.out 文件时,它会产生一些结果,运行已安装的应用程序也会产生一些结果。我不明白有人说“安装应用程序”和复制可执行文件时有什么区别。安装应用程序时实际上会发生什么?这与将可执行文件从一台计算机复制到另一台计算机(相同的操作系统和类似的硬件)并在那里运行它有什么不同?
答案1
好吧,当说安装应用程序,这通常意味着您使用类似dpkg
或更高级别的软件包管理器apt
。在这种情况下,可执行文件包含在软件包中,该软件包还可以包含运行可执行文件、手册页、开发人员文件、配置文件等所需的其他库。这样做的好处是管理员可以跟踪已安装的内容,并确保在安装新软件或更新时,新软件不会与已安装的其他软件和库发生冲突,从而导致其他应用程序崩溃。
因此,虽然将可执行文件复制到另一个系统可能有效,但不建议这样做,因为这可能会破坏系统。将可执行文件复制到系统路径之外的某个位置(如、、、/bin/
)是安全的。 您可以使用和来实现此目的,或者最好在下面为您的可执行文件创建一个目录并将其放在那里。然后使用完整路径调用可执行文件或将可执行文件的路径添加到您的环境变量中。/sbin
/usr/bin
/usr/sbin
/usr/local/bin
/usr/local/sbin
/opt
PATH
$ mkdir -p /opt/myapp/bin
$ cp myexec /opt/myapp/bin/
$ /opt/myapp/bin/myexec
或者
$ export PATH=$PATH:/opt/myapp/bin
$ myexec
答案2
所有类 Unix 操作系统(如 Ubuntu)的核心原则是一切皆文件。如果你查看软件包的内容,你还会发现一个可执行文件,是的,对于两台具有完全相同(或至少非常相似)软件和硬件组合的机器(平台),您可以只使用可执行文件。但大多数程序不只包含一个可执行文件。运行ls -R /usr |grep libreoffice
一个更复杂的包的示例,您现在不想手动将所有这些文件复制到它们各自的位置,对吗?
虽然在某些情况下(尤其是在测试小程序时),仅向某人发送他们可以运行的可执行文件是有意义的,但您几乎总是希望为成品提供一个包裹。
包管理器通常还负责安装依赖项,将您的程序添加到已安装的应用程序和 PATH 列表中,最后但并非最不重要的是,在发布新版本时提供更新程序的选项。