分类: LINUX
2010-01-03 16:59:12
摘自《LINUX系统管理技术手册》
APT(Advanced Package Tool,高级软件包工具)是最成熟的软件包管理系统。用一条apt-get命令就可以更新整一个系统的所有软件,甚至还可以不需要人工干预,保持你的机器不断得到更新。
各种linux发行版一般都包含几个空的软件包(虚包),之所以存在这样的软件包,只是为了把其他软件包当作前提条件列出。apt-get会根据需要,自动下载和升级作为前提的软件包,所以这样的软件包就能很容易地把几个软件包当作一个整体来安装或者升级。例如,安装gnome-desktop-environment这个软件包就会保证你获得安装和运行GNOME用户桌面所需的全部软件包。
apt-get最重要的配置文件是/etc/apt/sources.list,它告诉apt-get到哪儿去找它的软件包。这个文件里每行规定的内容如下:
以Ubuntu系统为例
#General format: type uri distribution [components] deb hardy main restricted deb-src hardy main restricted deb hardy-updates main restricted deb-src hardy-updates main restricted deb hardy universe deb-src hardy universe deb hardy-updates universe deb-src hardy-updates universe deb hardy multiverse deb-src hardy multiverse deb hardy-updates multiverse deb-src hardy-updates multiverse deb http://security.ubuntu.com/ubuntu hardy-security main restricted deb-src http://security.ubuntu.com/ubuntu hardy-security main restricted deb http://security.ubuntu.com/ubuntu hardy-security universe deb-src http://security.ubuntu.com/ubuntu hardy-security universe deb http://security.ubuntu.com/ubuntu hardy-security multiverse deb-src http://security.ubuntu.com/ubuntu hardy-security multiverse
其中的distribution和components字段帮助apt-get遍历Ubuntu软件库中文件系统的层次结构,这个结构的布局有标准可循。
例子中distributiong字段有hardy、hardy-updates、hardy-security等,components字段有main、restricted、universe、multiverse等。
如果你打算在大量主机上使用apt-get,或者想要把软件包缓存在本地——为每台机器都下载每个软件包的一个副本对带宽的使用来说并不划算。你可能也需要指示apt-get通过代理下载软件包,如果防火墙要求有这层保护作用的话。
既然apt-get用的就是普通的HTTP和FTP协议,所以你可以使用任何碰巧已经装好的Web代理。apt-get认可环境变量http_proxy,同样可以在文件/etc/apt/apt.conf里显式地设置代理:
Acquire::http::Proxy “”
你可以从cron定期执行apt-get。即使你并不打算自动安装软件包,也可能想要定期执行apt-get update来保持包汇总信息得到更新。
如果想要冒险,那么就让机器自动执行这项升级——使用-yes选项,这样就无需人来干预操作,它将对apt-get可能回答的任何确认性问题都热诚的回答说“Yes”!
ps:软件包管理系统值得深入研究,有时间好好看一下apt-get、dpkg的man手册