Linux平台上的各种包管理

曾几何时,Linux平台上配置最让人头疼的就是安装软件时的各种组件依赖,应用都是靠着其他应用一级级的组合而成。
也就是说一个软件很像一座冰山,我们看到的只是上面的一小部分,而构成它功能的各种组件则是海平面下面那个更大的部分。
使用包管理器最大的好处就是,可以无视海平面下的部分,无须繁琐地一次次下载、安装,管理器可以自动处理依赖性关系,并且一次安装所有依赖的软体包。

对面非常复杂的组合关系,平台方都做了自己的依赖包管理器。今天我们就来梳理一下linux里那些主流的包管理器。

Linux阵营

因为包管理涉及到不同的系统版本,很有必要开始要先说一下Linux世界形势。

Linux经过几十年的发展,形成了商业和社区共同繁荣的局面,市面上流行的版本既有商业公司的收费产品也有社区维护的免费版本。

这其中商业阵营代表公司就是Redhat,社区阵营代表则是Debian。具体到产品Redhat有收费的Redhat enterprise版,也有他支持的FedoraCentos社区版。而Debian阵营主流是Debian和Ubuntu

随着服务器操作系统Linux占的份额越来越大,免费的Debian和Centos已经成为服务器系统的主要选择,而Ubuntu在个人桌面系统发展的则更好一些。

操作系统级包管理

无论收费版还是社区免费版都会优先使用自己阵营的包管理器,我们先有了上面的阵营概念,就能更容易理解和分类各种包管理了。

阵营分支 包类型 后缀 包管理器
Debian、Ubuntu dkpg deb apt
Redhat、Centos、Fedora rpm rpm yum

用过linux的同学,对上面的apt或者yum都该很熟悉吧,只要安装软件少不了要和他们打交道的。其实这里的dkpg或者rpm软件包都能像win10的exe一样安装的,只不过为了减少处理和其他包依赖的问题,有人帮我们准备好了更智能的安装方法:apt和yum > [1]。

编程语言级包管理

说完了操作系统包管理,在程序员写的各种编程语言中也有着程序包的依赖问题,同样也有在各式各样的包管理器,
下面列出了主流编程语言对应的包管理器。

编程语言 包管理器
php composer
python pip
javascript npm,yarn
node npm,yarn
ruby rubygems
java maven,gradle,npm

从表中可以看出,大部分编程语言都有自己专属的包管理工具,其中facebook还为类js语言开发了一个yarn管理JavaScript包。Java这边由于历史原因,没有官方包管理工具,但实在是影响力大,于是就有各种第三方相继支持了java的程序包管理。

这里没有介绍各种包的详细用法,只是单摆浮搁的把各种包管理梳理了一遍,不理清这些关系,用的时候总是容易弄混。记得用Eclipse开发java的时候,为了引入一些功能,要去各个网站下载jar包,再拷贝引入到自己工程里,还要查询各种不兼容的异常解决办法,真是超级麻烦,废了太多的时间和精力,想想现在真的太幸福了。


  1. Redhat这边还有个DNF正在成为主流,以后会逐步替换yum ↩︎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章