deb包管理系统

什么是软件包

软件包是包含计算机程序和软件部署(deployment)所需元数据(metadata)的存档文件(archive file)。

 

 

 

 

包元数据包括包描述,包版本和依赖关系(需要预先安装的其他包)。

 

 

deb是Debian软件包格式,文件扩展名为.deb。与Debian的命名一样,deb也是因Debra Murdock(Debian创始人Ian Murdock的前妻)而得名。Debian软件包是Unix ar归档的标准文件,将包文件信息以及包内容用gzip和tar打包而成。处理这些包的主要程序是dpkg,实际经是通过apt调用。通过Alien工具可以将deb包转换成其他形式的软件包。

包管理工具主要有:dpkg,apt,aptitude,synaptic,dselect,tasksel等。这些工具的关系如下:

扫描二维码关注公众号,回复: 3564817 查看本文章

dpkg是最基础原始的安装与管理软件包程序,其它工具均以其为基础。

apt是dpkg的前端,用于从远程获取软件包以及处理复杂的包依赖关系,增加了自动下载,配置,安装二进制或者源代码格式等功能,因此简化了Unix系统上管理软件的过程。

dselect是使用菜单界面的包管理工具,基于apt和dpkg。相对于apt,操作起来更简单。

 aptitude也是使用菜单界面的包管理工具,整合了 dselect 和 apt-get的所有功能,并提供更多特性,特别在依赖关系的处理上更佳。举例来说,aptitude删除一个包时,会同时删除其依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。

            synaptic是图形界面的apt前端。

            tasksel基于apt-get和dpkg。和其它工具比它不允许用户选择要安装的软件包,而是让用户选择任务。在Debian的术语中,一个任务实际是一个软件包的集合。例如,X Window系统的XFree86实现由许多不同的软件包所构成,包括核心软件,各种视频卡的驱动模块和字体文件。

Debian有“任务”的概念,可以允许发行版本将软件包集合分组,例如将XFree86放入一个虚拟包中。当用户选择一个任务,实际上他选择一个包含多个Debian deb软件包的集合。

      下面分别介绍各工具

     dpkg是Debian软件包管理系统的中流砥柱,负责安全卸载软件包,配置,以及维护已安装的软件包.也是Debian系统中众多软件包管理工具的后端。

dpkg --help                                       列出所有选项。

dpkg --info foo_VVV-RRR.deb         列出特定软件包的控制文件(和其它信息)。

dpkg --install foo_VVV-RRR.deb      安装软件包。

dpkg -R foo_VVV-RRR.deb              安装一个目录下面所有的软件包
dpkg --unpack foo_VVV-RRR.deb    解压 (但不配置)包。 

注:这个操作产生的文件不可用,除非对一些文件进行进一步设置。 它移除已安装软件并运行preinstal脚本。

dpkg --configure foo                          配置已解压的包:

注:它运行postinst脚本,更新conffiles包含的文件。 它以软件名(foo)为参数,而不是软件包名(foo_VVV-RRR.deb)。

dpkg --remove foo                             移除软件 (不包括配置文件):。

dpkg --purgefoo                                 移除软件 (包括配置文件)

dpkg --list 'foo*'                                  列出名字包含字符串(或正则表达式)"foo*"软件包的安装信息。

dpkg --fsys-tarfile foo_VVV-RRR.deb | tar -xf -blurf        不从软件包中抽取名字包含“blurf”的文件。

APT由以下的几个主要的命令构成:apt-get,apt-cache,apt-file。在Debian系統中,APT建构于dpkg之上。

       apt-cache是一个apt软件包管理工具,它可查询apt的二进制软件包缓存文件可查询软件包的状态信息。

  • apt-cache show package_name   显示软件的信息,包括版本号,安装状态和包依赖关系等。

  • apt-cache search package_name 搜索软件包,可用正则表达式。

  • apt-cache showpkg package_name  显示软件包的依赖关系信息。

  • apt-cache policy package_name 显示软件包的安装状态和版本信息。

  • apt-cache depends package_name 显示指定软件包所依赖的软件包。

  • apt-cache rdepends package_name 显示软件包的反向依赖关系,即有什么软件包需依赖你所指定的软件包。

apt-file是一个软件包查找工具,可以查到软件包所含的文件和安装的位置。

apt-file update       更新软件包的文件库,第一次使用或apt-get update后都需运行一次。

apt-file search file_name      查找该文件存在于哪些软件包中。

apt-file list package_name    显示该软件包的文件。

 

 

关于apt-get的缓存目录:默认的缓存目录是/var/cache/apt/archives/

apt-get update         在修改/etc/apt/sources.list或/etc/apt/preferences之後运行该命令。此外您需要定期运行这一命令以确保您的软件包列表是最新的。
apt-get install packagename           安装一个新软件包(参见下文的aptitude)
apt-get remove packagename         卸载一个已安装的软件包(保留配置文档)
apt-get --purge remove packagename       卸载一个已安装的软件包(删除配置文档)
apt-get autoremove packagename             同上,比上面的要删除的彻底一点
dpkg --force-all --purge packagename        有些软件很难卸载,而且还阻止了别的软件的应用,就能够用这个,但是有点冒险。
apt-get autoclean         apt会把已装或已卸的软件都备份在硬盘上,所以假如需要空间的话,能够让这个命令来删除您已删掉的软件
apt-get clean        这个命令会把安装的软件的备份也删除,但是这样不会影响软件的使用。
apt-get upgrade     可以使用这条命令更新软件包,apt-get upgrade不仅可以从相同版本号的发布版中更新软件包,也可以从新版本号的发布版中更新软件包,尽管实现后一种更新的推荐命令为apt-get dist-upgrade;
在运行apt-get upgrade命令时加上-u选项很有用(即:apt-get -u upgrade)。这个选项让APT显示完整的可更新软件包列表。不加这个选项,你就只能盲目地更新。APT会下载每个软件包的最新更新版本,然后以合理的次序安装它们。注意在运行该命令前应先运行 apt-get update更新数据库。更新任何已安装的软件包。
apt-get dist-upgrade    将系统升级到新版本

 

你需要安装某个软件包时,APT从/etc/apt/sources.list中所列的主机下载所需的文件,将它们保存到本机软件库(/var/cache/apt/archives/),然后开始安装。

本地软件库会不断膨胀占用大量硬盘空间,幸运的是,APT提供了工具来管理本地软件库:apt-get的clean方法和autoclean方法。

apt-get clean将删除/var/cache/apt/archives目录和/var/cache/apt/archives/partial目录下锁文件以外的所有文件。这样以来,当你需要再次安装某个软件包时,APT将重新下载它。

apt-get autoclean仅删除那些不需要再次下载的文件。

猜你喜欢

转载自blog.csdn.net/tom601/article/details/8871659
今日推荐