最初只有.tar.gz的打包文件,用户必须编译每个他想在GNU/Linux上运行的软件。用户们普遍认为系统很有必要提供一种方法来管理这些安装在机器上的软件包,当Debian诞生时,这样一个管理工具也就应运而生,它被命名为dpkg。从而著名的“package”概念第一次出现在 GNU/Linux系统中,稍后RedHat才决定开发自己的“rpm”包管理系统。
很快一个新的问题难倒了GNU/Linux制作者,他们需要一个快速、实用、高效的方法来安装软件包,当软件包更新时,这个工具应该能自动管理关联文件和维护已有配置文件,再次,Debian率先解决了这个难题,APT(Advanced Packaging Tool)诞生了。APT后来还被Conectiva改造用来管理rpm,并被其它Linux发行版本采用为它们的软件包管理工具。
作为操作系统的一部分,apt命令使用一个文件列出可以获得的软件包的镜像站点,这个文件为/etc/apt/sources.list。文件内容的格式如下:
deb http://www.baidu.com/debian distribution section1 secion2deb-src http://www.baidu.com/debian distribution section1 secion2第一列描述了文件类型,是deb类型还是deb-src类型的,deb是已经编译好的二进制软件包,deb-src是源码包,第二列是使用的镜像地址,apt可以使用多种类型的地址,如:http、ftp、file等。在每次修改list文件都需要运行apt-get update命令更新源列表。
包管理系统使用一个私有的数据库跟踪列表中软件包的状态:已安装、未安装等,apt-get通过该数据库来确定如何安装用户想用的软件包以及其关联包。使用apt-get update来更新数据库列表,这个命令会检查list文件的配置。
安装软件包 apt-get install name apt扫描数据库找到最新版的软件包,然后从list中指定的镜像站点把软件包下载到本地。apt会自动检查关联性包并自动下载到本地。并在安装过程中进行提示,如果在安装A包时有B包依赖,如果没有在命令行指定B包,则会提示安装B包,如果在命令行指定安装B包,则不会提示该包,apt只提示确认没有在命令行中指定的包。apt会把发布镜像站点的包下载到本地的/var/cache/apt/archives目录,稍后安装。可以在一条命令后面跟多个软件包。
删除软件包 apt-get remove filename apt会注意哪些包与被删除的包有依赖关系,使用apt删除一个包会删除与该包有依赖关系的包。但是这样只会不会删除该软件包的配置文件,如果有的话,如果想连同配置文件一起删除,可以使用--purge参数。 更新软件包 apt-get upgrade可以使用这个命令从相同版本号的发布版中更新软件包,当然也可从新版本号的发布版中更新软件包,使用apt-get dist-upgrade命令。在使用apt-get upgrade时,-u参数可以显示完整的可更新的软件包列表。apt会下载每个软件包的最新更新版本,然后按照合理的次序安装。
清理软件包 当你使用apt-get安装软件包时,会在list的发布站点中把软件包下载到本地,随着包的增多会非常占用空间的,有时候就有必要清理软件包,可以使用apt-get clean和apt-get autoclean命令。clean清除/var/cache/apt/archives和/var/cache/apt/archives/partial中的所有文件,除了被锁定的文件。autoclean仅仅清除那些不需要再次下载的文件。
以下是一些经常使用的包管理命令:
apt-get update —— 在修改/etc/apt/sources.list或者/etc/apt/preferences之後运行该命令。 apt-get install packagename——安装一个新软件包 apt-get remove packagename —— 卸载一个已安装的软件包(保留配置文件) apt-get -–purge remove packagename —— 卸载一个已安装的软件包(删除配置文件) apt-get clean —— 这个命令会把安装的软件的备份也删除,不过这样不会影响软件的使用的。 apt-get upgrade —— 更新所有已安装的软件包 apt-get dist-upgrade —— 将系统升级到新版本 apt-cache search packagename 可以搜索相关软件包 apt-cache show packagename 显示该包的详细信息 apt-cache depends packagename 列出与该包关联的包 dpkg -l —— 列出所有的软件包。 dpkg -L package —— 列出软件包中的所有文件。 dpkg -S file —— 找出文件属于哪个软件包,会找到所有包含该文件的包,如果使用文件的绝对路径,则会找到对应的包文件。
apt-file search filename —— 查找包含特定文件的软件包(不一定是已安装的),这些文件的文件名中含有指定的字符串。 注意:apt-file是一个独立的软件包。先使用apt-get install来安装它,然後运行apt-file update升级信息。
以下是在使用apt-get时经常会用到的参数:
--no-install-recommends 不考虑安装推荐的包 --install-suggests 安装推荐的包 -d, --download-only 仅仅是下载该软件包 -m, --ignore-missing, --fix-missing 忽视丢失的包 --no-download Disables downloading of packages -y, --yes, --assume-yes 在安装过程中,自动回答yes --assume-no 在安装过程中,自动回答no -u, --show-upgraded 显示哪些包会被升级 --reinstall 重装已经安装的包 --purgeremove并且删除配置文件 --allow-unauthenticated 忽略包的认证机制