不管您使用什么包管理器,在Linux上安装程序有两种方法。您可以使用预构建的包,也可以自己编译程序。现在,前者通常在默认情况下胜出,但有时你可能会考虑从源代码中编译。
在Linux上安装程序通常与在Windows上安装软件的传统方式大不相同。这些文件不是从供应商的网站下载安装程序,而是来自程序库,这些程序库通常是根据您的Linux发行版定制的。您可以使用Linux软件包管理器或Linux应用商店访问此存储库。
这些存储库中构成程序的文件以归档格式提供。这将所有内容捆绑到一个文件中,以便于访问和分发。例如,Debian使用DEB格式来存储和分发程序。这些包称为二进制包。
您需要一个特殊的程序来提取这些文件并将其安装到您的计算机上,通常是您的package manager或app store。这些工具还执行其他有用的功能,例如跟踪已安装的文件,以及管理软件更新。
所有的软件都是由源代码组成的文本行,用C或C++等特定的编程语言编写。通常,您不能将这些源代码捆绑到一个归档文件中并称之为包。这些行需要翻译成计算机能够理解和执行的语言。
这个过程称为编译,最终结果是创建计算机可以运行的二进制文件。软件包和软件的区别在于,软件二进制文件与其他东西(如配置文件)一起存储在一个软件包中。
“从源代码”安装程序意味着在不使用包管理器的情况下安装程序。您可以编译源代码并将二进制文件复制到您的计算机。
大多数情况下,您可以从GitHub、GitLab或Bitbucket等托管服务下载项目的源代码。大型程序甚至可能在个人网站上托管源代码。代码通常以归档格式(也称为源代码包)进行压缩。
一组特殊的工具有助于自动化构建过程。在Linux桌面上,这通常以一个名为make的命令行程序的形式出现。用不同语言编写的源代码需要特定的编译器和命令才能将其转换为二进制文件。make程序自动执行此过程。
为了实现自动化,程序为make提供了一个makefile,告诉它要做什么和编译什么。如今,它通常是由特殊软件(如CMake)自动生成的。这就是你进来的地方。从这里,您可以确切地指定要编译到软件中的功能。
例如,下面的命令使用CMake为Calligra Office套件生成一个配置文件。创建的文件告诉make程序只编译Calligra的Writer组件。
cmake -DPRODUCTSET=WORDS -DCMAKE_INSTALL_PREFIX=$HOME/kde/inst5 $HOME/kde/src/calligra完成这项工作后,一个人所要做的就是运行make工具来编译并将结果复制到他们的计算机上。这是通过以下方式完成的:
makemake install虽然这是编译程序的一般模式,但安装源程序包还有许多其他方法。例如,GentooLinux有一种内置的方法来处理这个问题,使这个过程更快、更容易。但是构建二进制软件包需要比上述命令多几个步骤。
如果您使用的是Linux,那么很可能有人预先编译了您安装的软件。这已经变得比使用源代码包更为常见。但是为什么呢?
二进制软件包包含的不仅仅是编译的安装文件。它们还存储信息,使包管理器能够轻松跟踪所有程序。例如,DEB文件(Debian和Debian衍生产品的软件包格式)也包含重要信息,如程序需要运行的其他软件及其当前版本。
这使得软件包更容易安装,因为您不需要担心成功运行程序所需的其他文件。包管理器可以从包本身读取该信息,并自动下载所有必要的依赖项。
从源代码安装程序时,除非您将代码编译成自己的二进制软件包,否则您将负责管理该软件。您需要记住需要哪些其他程序才能使其正常工作,并自行安装。
为您的软件包管理器维护存储库的人员倾向于测试二进制文件是否存在问题,并尽力修复出现的问题。这可以提高程序的稳定性,从源代码安装的人可能会错过这一点。
此外,软件包通常必须遵守一套严格的规则,以帮助确保它们在您的系统上运行。例如,Debian和Ubuntu都有策略手册,许多其他Linux发行版也是如此。
有些程序还依赖于同一软件依赖项的不同版本来运行。包存储库尽最大努力解决这些冲突,所以您不必担心这一点。
从源代码安装程序并不是每个人都需要做的事情,因为如果你坚持使用二进制软件包,维护你的电脑通常会更容易。即使如此,使用这种稍微复杂一点的安装程序的方法仍然有一些优势。
使程序更可靠的一个缺点是需要时间来改进和修复。因此,这可能导致您使用旧版本的软件。对于那些想要最新和最伟大的东西的人来说,他们甚至可能更愿意用一点不稳定来换取它。
虽然有些Linux操作系统不需要编译程序就能满足这一需求,但它们确实有一些缺点。例如,与从源代码安装相比,不经常发布集合包版本的软件更难在存储库中保持最新。
这是因为二进制软件包通常是由程序的官方版本**的。因此,通常不考虑这些版本之间的更改。通过从源代码编译您自己的软件,您可以立即从这些更改中获益。
您的Linux操作系统也可能没有为您预先**的软件。如果是这样,那么从源代码安装它是您唯一的选择。
使用源代码包的另一个好处是,您可以更好地控制所安装的程序。从二进制存储库安装时,您在自定义软件包的方式上受到限制。
例如,看看FFmpeg,一种基于命令行的音频和视频转换器。默认情况下,它附带了大量的功能,其中一些功能你甚至可能从未接触过。例如,FFmpeg中提供了JACK音频支持,尽管该软件通常仅用于生产环境。
编译FFmpeg允许您从中删除不想要的内容,使其更轻,并根据您的需要进行定制。这同样适用于其他重量级节目。
当资源稀缺时,删除功能是减轻负载的一个好方法。难怪许多低端电脑上的Chrome操作系统都基于Gentoo Linux。Gentoo是基于源代码的,它编译了大量的软件,有可能使这些系统运行得更轻。
虽然您可能不想每天编译包,但记住这一点很有用。这就是说,随着Snap Store和Flathub等网站提供的新的通用软件包格式,您不太可能需要从源代码构建来获得最新的软件。
Join our newsletter for tech tips, reviews, free ebooks, and exclusive deals!
Click here to subscribe
有了几十种行业标准编程语言和数百种其他活动语言来考虑,挑选最好的编程语言学习可能会很困难。如果你要投入数千小时的时间学习和实践,你希望结果是值得的。 ...
...执行文件的格式。操作系统希望它运行的文件遵循特定的二进制文件格式。例如,在Linux和FreeBSD等操作系统上运行的可执行和可链接格式(ELF)文件必须以特定字节指定文件的某些属性,如下图所示。 ...
... 好吧,apt remove只是删除二进制文件,但这会导致遗留的文件——通常是配置文件。 ...
...你会注意到两个版本。有一个源代码版本和一个预编译的二进制软件包。预编译的迭代拥有更短的安装时间,这真是太棒了。Portage包管理器和emerging意味着您可以指定各种标志,如Java使用标志,以便Portage安装所有用于OpenOffice的...
...例中,我使用了文档转换器Pandoc。它包括/usr/local/bin中的二进制文件和/usr/local/share/man中的一些文档。这些东西到底是如何到位的?我们来看看每一个都是如何安装到你的Mac上的。 ...
...这似乎违反直觉。一个算法的步长怎么会比n增长慢呢?二进制搜索就是一个很好的例子。让我们考虑一个算法来搜索唯一值数组中的数字。 ...
...用于Zeek日志的命令行工具,因此您还需要下载一个包含zq二进制文件的ZIP文件。 在ubuntu上安**rim 如果您使用的是Ubuntu,则需要下载DEB包文件和zqlinux ZIP文件。双击下载的DEB包文件,Ubuntu软件应用程序就会打开。Brim许可证被错误...
...ile命令将快速告诉您它是什么类型的文件。如果它是一个二进制文件,你可以找到更多关于它。文件里有一大堆马厩,可以帮你分析。我们将向您展示如何使用这些工具。 识别文件类型 文件通常具有一些特性,允许软件包识...
...Wine官方版本。然而,这些并不一定是最佳选择。这些Wine二进制文件允许您运行Windows软件,但不提供任何有助于安装和设置常用应用程序的图形工具,因此它们最适合已经熟悉Wine的高级用户。 相反,您可能应该考虑一个第三方...
...间。抱歉:这是没有办法的,至少在有人提供一个工作的二进制文件之前,我们只能找到无法工作的二进制文件(如果此更改请与我们联系,我们会更新文章) 第三步:编译并安装gmailator 接下来,关闭Mail,然后打开名为gmailator...