apt-get在Debian项目中的地位是无可替代的,如果说有一个程序可以代表Debian,那毫无疑问,是apt-get,apt-get和deb包提供了RPM所无法提供的强大功能。除了apt的便捷以外,apt-get的一大好处是极大地减小了所谓依赖关系恶梦的发生几率(dependency hell),即使是陷入了ependency hell,apt-get也提供了很好的援助手段,帮你逃出魔窟。
通常apt-get都和网上的压缩包一起出没,从互联网上下载或是安装。全世界有超过200个 debian 官方镜像,还有繁多的非官方软件包提供网站。你所使用的基于Debian的发布版不同,你所使用的软件仓库可能需要手工选择或是可以自动设置。你能从Debian官方网站得到完整的镜像列表。而很多非官方网站提供各种特殊用途的非官方软件包,当然,使用非官方软件包会有更多风险了。
软件包都是为某一个基本的Debian发布版所准备的(从unstable到stable),并且划分到不同类别中(如 main contrib nonfree),这个是依据 debian 自由软件纲领而划分的(也就是常说的dfsg),因为美国限制加密软件出口,还有一个non-us类别。
apt-get获取软件包所依赖的配置文件 /etc/apt/sources.list 中的设置编写格式是deb [server-type] [address] [directories] [areas]
例子:
deb http://mirror.peer1.net/debian main contrib non-free
例子
deb http://debian.ustc.edu.cn/debian/ testing main contrib non-free
例如下面是一个debian5的apt配置文件:
deb ftp://debian.ustc.edu.cn/debian/ stable main contrib non-free
deb-src ftp://debian.ustc.edu.cn/debian/ stable main contrib non-freedeb ftp://debian.ustc.edu.cn/debian-uo sid marillat rareware ustc java misc jrfonseca firefly
deb-src ftp://debian.ustc.edu.cn/debian-uo sid marillat rareware ustc java misc jrfonseca fireflydeb http://update.inlsd.org/debian-multimedia stable main
deb-src http://update.inlsd.org/debian-multimedia stable maindeb http://mirrors.oss.org.cn/debian stable main contrib non-free
deb-src http://mirrors.oss.org.cn/debian stable main contrib non-freedeb http://mirrors.163.com/debian/ testing main non-free contrib
deb-src http://mirrors.163.com/debian/ testing main non-free contribdeb http://ftp.cn.debian.org/debian/ lenny main contrib non-free
deb-src http://ftp.cn.debian.org/debian/ lenny main contrib non-free #Added by software-propertiesdeb http://http.us.debian.org/debian/ lenny main contrib non-free
deb-src http://http.us.debian.org/debian/ lenny main contrib non-free #Added by software-properties
如果用deb-src而不是deb的话,那么就是指的源代码包。通常都会使用http和ftp方式获取文件,不过也可以使用本地文件,更罕见的还有rsh和SSH,但都是可以的。使用 netselect-apt 可以用来判断哪个镜像更快。修改了镜像信息后,应该使用apt-get update 命令,更新软件包的信息你可以从Debian 网站上看软件包的相关信息,而另一方面可以使用 dpkg -l 看哪些软件包已经被安装了。很大的程序,比如gnome,通常有个空的软件包,只是通过依赖关系来安装其他所有的相应的软件,而这些软件也可以被逐一安装。
使用apt-get install [package-name]
就可以安装软件包了,这里不需要版本号,apt-get会自动选择最新的。如果最新的已经被安装了,那么就不会安装了。如果希望安装一个较老的版本,可以选择版本,比如apt-get install gimp=2.2你也可以选择特定的发布版apt-get install -t unstable gimp
对于安装源代码,使用source代替install就可以了,如果需要编译,使用 -b 选项,软件包会被下载到当前目录的。(aptitude 注:只有root可以install,但是谁都可以source的。)
执行之前,apt-get 会列出有多少软件包要被安装、升级,如果要被安装的软件不只是你所指出的软件包,那么它会问你是否继续。可以使用-s来看看运行的结果(注:不知道这个是怎么仿真的,没试过)
apt-get安装过程中,会显示安装的状况,有时 apt-get 会根据软件包的需求调用debconf 来让用户输入一些配置选项。这个配置一般都是一些选择,通常选择缺省情况都可以,也可以使用 –yes 来声明,全部使用缺省选项,无需提问。(注:如果使用cron来每天自动更新系统,这个选项还是挺有用的,虽然总觉得有点害怕吧。)
apt-get的upgrade不会安装新的软件包,只会升级原有的软件包的版本,要升级整个系统,可能要安装新的软件包,这可以通过 dist-upgrade 完成,比如升级stable到testing,建议要升级stable到unstable,先升级到testing,以减小风险。
使用 apt-get clean 可以释放被 apt-get 所占用的缓存空间也可以使用 autoclean 命令,这样仅仅删去已经不可能被再次下载的文件。
也可以使用 remove 命令删除软件包。(注:如果要连配置文件也一起删除,需要使用 –purge 参数)
有时也会出问题,可以用下面一些办法解决:
* -f 修复依赖关系
* -m 忽略有问题的包 (这个不像是解决问题的态度哦)
* -ignore-hold 忽略有问题的 hold
* -s 报告软件包状态
当然,如果你的技巧和耐心不够的话,还是小心使用系统吧,正常的使用通常不会造成很多需要解决的问题。
多年以来,apt-get有了很多前端,除了商业版本外,其他的都可以通过apt-get来安装。文本界面下,aptitude 还不错,浏览软件包比较方便。对于图形界面 synaptic是个不错的选择,比较原汁原味的apt,而kpachage就不那么像apt了。大部分的桌面用 linux版本都有摒弃命令行的倾向,不过,apt-get 是一个命令行是最好的的特例。它的存在正是那些基于debian的系统大行其道的原因。而且apt-get甚至已经被移植到rpm 系统之中了。
常用的APT命令参数:
搜索包
apt-cache search package
获取包的相关信息,如说明、大小、版本等
apt-cache show package
安装包
sudo apt-get install package
重新安装包
sudo apt-get install package – - reinstall
修复安装”-f = ——fix-missing”
sudo apt-get -f install
删除包
sudo apt-get remove package
删除包,包括删除配置文件等
sudo apt-get remove package – - purge
更新源
sudo apt-get update
更新已安装的包
sudo apt-get upgrade
升级系统
sudo apt-get dist-upgrade
使用 dselect 升级
sudo apt-get dselect-upgrade
了解使用依赖
apt-cache depends package
是查看该包被哪些包依赖
apt-cache rdepends package
安装相关的编译环境
sudo apt-get build-dep package
下载该包的源代码
apt-get source package
清理无用的包
sudo apt-get clean && sudo apt-get autoclean
检查是否有损坏的依赖
sudo apt-get check
网名:李子

这些都没有接触过嘞!