闲话debian类系统的包管理工具ATP

                                                    转自  清尘:http://qingchen.me/2011/12/atp-intro/

                                                                   

                              闲话debian类系统的包管理工具ATP

想必很多人被ubuntu中安装软件的magic方法所困惑吧, 因为, 虽然apt-get很好用, 但是很多时候不清楚它的工作方式, 出现问题之后很难去追踪, 更让人郁闷的是有好多个安装软件的方法, 到底他们之间都有什么区别, 有什么联系,我在synatic里边安装的包会不会与apt-get安装的冲突, 为什么我自己手动编译安装的包有时候不能覆盖通过apt-get安装的包?

带着这些问题, 我们探讨一下基于debian apt的包管理工具。 这个问题应该从这里开始, 在遥远的哪个xxx年代, linux刚开始, GNU也不像现在这么火热, 谁要想自己整一个linux系统跑起来, 那可就是神人了, 因为这些都是很散乱的存在的, 后来, 随着linux迅速扩张, 出现了各种良好定制的发行版(distro),比较著名的当然就是基于Fedora core的Redhat linux,suse等。 不过这些distro要安装新的软件的时候还是需要自己下载源码, 编译安装,很不方便, 而且耗时的严重, debian作为早期的一个distro, 引入了一个新的特性就是deb包管理机制, deb就是debian的缩写, 它的策略是预编译各个平台的二进制, 用户安装的
时候直接使用二进制就可以(二进制文件在各个发行版之间是兼容的), Redhat作为当时的第一大distro也仿照着做了一个叫做rpm的包管理, 其实deb的包和rpm的包没有什么特别的东西, 就是一个各种文件的打包集合。 于是deb 的和rpm的包就开始漫天飞了。

貌似扯的有点远了, 没事, 就当是练习码字的吧。

这里就出现了dpkg这个东西, 这个东西才是debian系统deb包管理的核心, 他是真正的唯一的底层包管理工具, 他处理的单元是一个deb文件, 比如你在网上下载了一个deb文件,my_lib-1.8.0.deb,那么就可以这样安装它:

$sudo dpkg -i my_lib-1.8.0.deb

然后dpkg会将deb文件解包,按照配置信息进行复制配置等工作。

那APT是什么呢, 其实APT是个工具集, 包含了像apt-get, apt-cache 等人民大众喜闻乐见的一些命令, 其实还有个libapt的库, 这个可以说是dpkg的前端,或者更准确的说dpkg是apt工具集的总后端, apt工具集处理的逻辑是, 针对已知的包(souces.list指定了在那里可以获得这些包的信息)建立索引, 然后当用户输入:
$sudo apt-get install my_lib 

的时候, 查找最相近的包, 这里例如上面就是my_lib-1.8.0.deb, 而且可能这个deb包还需要其他的包, 这时候apt工具集就会做一个智能的拓扑排序, 然后按照特定的顺序安装所有依赖, 再安装这个deb的包。 关于它是如何获取所有包的信息的, 这里有/etc/apt/sources.list 文件一枚, 和/etc/apt/sources.list.d目录一个, 后者主要用来处理PPA的, PPA下一篇blog再讲, 夜深了慢慢来。

对, 应该讲清楚apt工具集和dpkg的关系了, 要知道dpkg是apt工具集的back-ends, apt只是做个匹配和相关依赖的拓扑排序, 真正的去安装一个个deb是dpkg干的事儿。

然后, 在apt工具集的上层!!!又有几个更好用的工具, 这里就大致分为两派,一派是GUI的, 一派是终端的(ncurses)。

基于终端的最著名和好用的当然属aptitude, 他在处理依赖的时候能一般会自动安装依赖(提示用户选择), 所以我一般运行apt-get缺少的包的时候都换成aptitude来安装:
$sudo aptitude install mylib
如果直接输入aptitude会进入一个基于字符终端的超级强大的package manager,跟synatic非常像。 其他还有很多这里就不列举了。

基于GUI的就比较熟悉了, synaptic, software-center, update-manager等都属于,这些工具都能自动给出依赖, 提示用户标记, 特别是software-center更是用户用好的典范, 当然这些都是基于apt工具集的。

当然, 你也可以手动编译安装, 那样将不经过任何包管理工具, dpkg一点儿也不知道这件事情, 所以经常会出现, 用apt装了, 也编译安装了, 版本混乱到不可以的那种情况发生。 这里建议安装前确认以下系统是不是已经存在, 如果存在使用dpkg -P pakage或apt-get remove packe的方法删除。

总结一下, 基于debian的类系统包管理工具真实的只有dpkg, apt是位于其上的一个工具集, 包含了apt-get(自动匹配,自动下载, 自动拓扑排序, 调用dpkg安装),apt-cache和lipapt库等好用的工具, 位于apt工具集上层, 又有基于终端的aptitude和GUI的synatic(full featherd), update-manager(功能有限)等, 还有更霸气的software-center. 最后举一个例子, 假如有一个应用叫做foo,则在各个层面安装:

software-center: foo
synaptic: foo-1.8-dev
apt: foo-1.8-dev
dpkg foo-1.8-dev-ubuntu1.deb, somelib.deb

参考链接:(建议感兴趣的同学直接看官方文档, 当然得多找几个, 都不全面)
AptGet/Howto – Community Ubuntu Documentation
—->https://help.ubuntu.com/community/AptGet/Howto
apt-get, aptitude, … pick the right Debian package manager for you
—->http://raphaelhertzog.com/2011/06/20/apt-get-aptitude-%E2%80%A6-pick-the-right-debian-package-manager-for-you/

还有个 apt-file, auto-get 等都比较好用, 可以自己查阅,这里有个比较详尽的中文命令一堆:

http://hi.baidu.com/zzcqh/blog/item/cc8cfcd6b999042607088b9c.html

安,北京!

后记:(附上这几个工具的截图, 大家认识认识:-)

aptitude

 

software-center

 

synaptic

synaptic

 

update-manager

update-manager

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值