在Linux上安装程序通常与在Windows上传统的安装软件方式有所不同。你可以使用预构建的软件包,或者自己编译程序。如今,预构建软件包通常是默认的选择,但在某些情况下,你可能想考虑从源代码进行编译。
什么是二进制包?
(相关资料图)
在Linux上安装程序通常与在Windows上传统的安装软件方式有所不同。而不是从供应商的网站上下载安装程序,文件来自于一个程序仓库,通常根据你的Linux发行版进行定制。你可以使用Linux软件包管理器或应用商店访问这个仓库。
这些仓库中的程序由多个文件组成,并以一个归档格式进行打包,以便于访问和分发。例如,Debian使用DEB格式存储和分发程序。这些打包文件被称为二进制包。
如何阅读二进制代码
你需要一个特殊的程序来提取这些文件并将其安装到计算机上,通常是你的软件包管理器或应用商店。这些工具还具有其他有用的功能,例如跟踪已安装的文件和管理软件更新。
较新的软件包格式,如Flatpak和Snap,适用于不同版本的Linux,但它们仍然由预编译的二进制程序组成。两者都需要图形化的应用商店或基于命令行的软件包管理器进行安装。
什么是源代码?
所有软件都由称为源代码的文本行组成,用特定的编程语言编写,例如C或C++。通常情况下,你不能只将这些源代码打包成一个存档文件并称之为软件包。这些行需要被转换为计算机可以理解和执行的语言。
这个过程被称为编译,最终的结果是创建出计算机可以运行的二进制文件。软件包和软件的区别在于,软件的二进制文件与其他文件(如配置文件)一起存储在一个包中。
什么是“从源代码安装”?
从源代码安装程序意味着不使用软件包管理器进行安装。你需要编译源代码,并将二进制文件复制到计算机上。
大多数情况下,你可以从诸如GitHub、GitLab或Bitbucket等托管服务上下载项目的源代码。较大的程序甚至可能在个人网站上托管源代码。该代码通常以一个归档格式(也称为源代码包)进行压缩。
一组特殊的工具帮助自动化构建过程。在Linux桌面上,通常以一个名为make的命令行程序的形式存在。用不同语言编写的源代码需要特定的编译器和命令将其转换为二进制文件。make程序自动化了这个过程。
为了使这个自动化工作起来,程序提供了一个名为Makefile的文件,告诉make应该做什么和如何编译。如今,Makefile通常由特殊的软件(如CMake)自动生成。这就是你需要介入的地方。从这里开始,你可以指定想要编译到软件中的具体功能。
从源代码构建的示例
例如,下面的命令使用CMake为Calligra办公套件生成一个配置文件。创建的文件告诉make程序只编译Calligra的Writer组件。
cmake -DPRODUCTSET=WORDS -DCMAKE_INSTALL_PREFIX=$HOME/kde/inst5 $HOME/kde/src/calligra
完成这一步骤后,用户只需运行make工具来编译并将结果复制到他们的计算机上。操作步骤如下:
make make install
虽然这是编译程序的一般模式,但还有许多其他安装源代码包的方法。例如,Gentoo Linux内置了一种处理源代码包的方法,使得该过程更快捷、更简便。但是构建二进制包需要比上述命令更多的步骤。
使用二进制包的好处
如果你使用Linux,很可能有人预编译了你已安装的软件。这比使用源代码包更为常见。但是为什么会这样呢?
1、二进制版本更易管理
二进制包不仅包含已编译的安装文件,还存储了其他信息,使得你的包管理器能够轻松跟踪所有程序。例如,DEB文件(Debian及其衍生版的包格式)还包含重要信息,如程序运行所需的其他软件以及当前版本。
这使得安装包变得更加简单,因为你不需要担心需要哪些其他文件才能成功运行程序。你的包管理器可以从包本身读取这些信息,并自动下载所有必要的依赖项。
而当从源代码安装程序时,除非将代码编译为独立的二进制包,否则你将需要负责管理该软件。你需要记住你需要哪些其他程序来使其工作,并自行安装它们。
2、二进制版本具有更好的稳定性
负责维护包管理器仓库的人员往往会对二进制文件进行测试,并尽力修复出现的问题。这可能导致提高稳定性,因为包维护人员可能会发现安装源代码的人可能忽视的问题。
此外,包通常必须遵守一套严格的规则,以确保它们能在你的系统上运行。例如,Debian和Ubuntu都有一个政策手册,许多其他Linux发行版也有类似的手册。
有些程序还依赖于不同版本的同一软件依赖项来运行。软件包仓库会尽力解决这些冲突,以免给你带来麻烦。
编译源代码包的好处
从源代码安装程序并不是每个人都需要做的事情,因为如果坚持使用二进制包,通常更容易维护你的计算机。尽管如此,使用这种稍微复杂一些的方式安装程序仍然有一些优势。
1、源代码提供最新软件
使程序更加可靠的一个缺点是需要时间来改进和修复。有时候可能有可用的二进制文件,但源代码会稍后提供。对于希望拥有最新和最好的软件的人来说,他们可能愿意在交换较新软件的同时稍微牺牲一些稳定性。
虽然有一些Linux操作系统可以满足这种需求而无需编译程序,但它们也有一些缺点。例如,那些不经常发布固定软件包版本的软件在存储库中难以保持最新。相比之下,从源代码安装则不受这些限制。
这是因为二进制包通常是根据官方发布的程序版本制作的。因此,这些版本之间的更改通常不会被考虑在内。通过从源代码编译自己的软件,你可以立即从这些更改中受益。
也有可能你的Linux操作系统没有预先为你准备好你想要的软件。过去,这将使得从源代码安装是唯一的选择。通用的软件包格式已经改变了这一点。Flatpak和Snap软件包通常也比系统存储库更快地接收更新。但仍然有时候编译是获得所需软件的唯一途径。
2、你可以自己选择功能
FFmpeg的功能 使用源代码包的另一个好处是你可以更加掌控你安装的程序。当从二进制软件库安装时,你在自定义软件包方面受到限制。
以FFmpeg为例,它是一个基于命令行的音视频转换工具。默认情况下,它带有大量的功能,其中一些你可能从未使用过。例如,FFmpeg支持JACK音频,尽管这个软件通常只在生产环境中使用。
通过编译FFmpeg,你可以移除你不需要的功能,使其更加轻巧并符合你的需求。同样的原理也适用于其他庞大的程序。
当资源有限时,移除功能可以有效减轻负荷。难怪许多低端计算机上都使用基于Gentoo Linux的ChromeOS。Gentoo是基于源代码的,它编译了许多软件,潜在地使这些系统运行得更加轻巧。
为什么不同时使用二进制和源代码包呢?
虽然你可能不会每天都想编译软件包,但这是一种有用的方法。尽管如此,随着从Snap Store和Flathub等网站提供的新的通用软件包格式,你更不太可能需要从源代码构建以获得最新的软件。
最近很多小伙伴找我要一些程序员必备资料,于是我翻出了压箱底的宝藏,免费分享给大家!
审核编辑:汤梓红
上一篇:红酒过期后还能喝吗?行家给出了最终答案,喜欢喝红酒的不要错过了
下一篇:最后一页
【2023年6月19日】近日,挪威乘联会NAF结束了为期两天的2023年夏季电动汽车测试,小鹏G9(欧版)打破充电纪录,充电峰值功率达到319kw,并
【2023年6月16日】今日,2023年粤港澳大湾区国际汽车博览会正式开幕,小鹏汽车携旗下全系车型登陆深圳会展中心9号馆,这也是被受关注的超智
【2023年5月25日】行稳致远 扶摇而上。5月25日,小鹏汽车在肇庆市召开首届全球合作伙伴大会。肇庆市委书记、市人大常委会主任张爱军,肇庆
2023年5月24日,小鹏汽车公布2023年一季度财报。财报显示,小鹏汽车一季度总交付量为18230台,营收40 3亿元,公司现金储备规模达341 2亿元
这几天的倒春寒可是把不少小伙伴给冻得够呛,不过根据天气预报,今年夏天却会是一个挑战历史的高温天气。这让我想起去年夏天坐我朋友的车从
从燃油车时代到新能源时代,整个车市都经历着转型的阵痛,如今的价格战就是一个很典型的现象,面对价格大乱斗,可以说绝大多数的车企都采用
近些年,随着自主品牌纷纷聚焦发力SUV,更多高品质、智能化的SUV逐步推向市场,也使得整个SUV市场逐渐内卷化,许多实力相近的产品,已经展
每当我们谈到性能车、JDM等话题时,似乎总是绕不过去一个名字:思域。15万左右的售价,7秒多就能够破百的动力表现,思域被冠以神车头衔,成
2022年8月15日,哈弗新能源技术媒体沟通会在北京举行。哈弗品牌CEO李晓锐、CTO吕文斌,与多位资深车圈媒体大咖分享了哈弗品牌2022年上半年
本不想躺平周末,浪费这难得的大好时光,但如何做,才能让自己的周末生活更有趣、过得更有意义呢?不如把自己交给哈弗H6S吧!出色性能+极致驾
X 关闭
X 关闭