天天看点

Debian和Ubuntu系统的软件包管理工具

Debian和Ubuntu系统的软件包管理工具

Debian和Ubuntu系统的软件包管理工具主要包括: dpkg、apt-get和aptitude。本文将介绍这三种工具的使用方法

及其区别。

1、dpkg的使用方法

dpkg是一个Debian的一个命令行工具,它可以用来安装、删除、构建和管理Debian的软件包。下面是它的一些命令的使用方法及解释: 

(1) 安装软件

用法: dpkg -i <.deb file name>

示例:dpkg -i sogoupinyin_2.0.0.0078_amd64.deb

(2) 安装一个目录下面所有的软件包

用法:dpkg -R

示例:dpkg -R /usr/local/src

(3) 释放软件包,但是不进行配置

用法:dpkg –unpack package_file 如果和-R一起使用,参数可以是一个目录

示例:dpkg –unpack sogoupinyin_2.0.0.0078_amd64.deb

(4) 重新配置和释放软件包

用法:dpkg –configure package_file

如果和-a一起使用,将配置所有没有配置的软件包

示例:dpkg –configure sogoupinyin_2.0.0.0078_amd64.deb

(5) 删除软件包(保留其配置信息)

用法:dpkg -r

示例:dpkg -r sogoupinyin

(6) 替代软件包的信息

用法:dpkg –update-avail <Packages-file>

(7) 合并软件包信息

用法: dpkg –merge-avail <Packages-file>

(8) 从软件包里面读取软件的信息

用法:dpkg -A package_file

(9) 删除一个包(包括配置信息)

用法:dpkg -P

(10) 丢失所有的Uninstall的软件包信息

用法:dpkg –forget-old-unavail

(11) 删除软件包的Avaliable信息

用法:dpkg –clear-avail

(12) 查找只有部分安装的软件包信息

用法:dpkg -C

(13) 比较同一个包的不同版本之间的差别

用法:dpkg –compare-versions ver1 op ver2

(14) 显示帮助信息

用法:dpkg –help

(15) 显示dpkg的Licence

用法:dpkg –licence (or) dpkg –license

(16) 显示dpkg的版本号

用法:dpkg –version

(17) 建立一个deb文件

用法:dpkg -b direc×y [filename]

(18) 显示一个Deb文件的目录

用法:dpkg -c filename

(19) 显示一个Deb的说明

用法:dpkg -I filename [control-file]

(20) 搜索Deb包

用法:dpkg -l package-name-pattern

示例:dpkg -I vim

(21) 显示所有已经安装的deb包,同时显示版本号以及简短说明

用法:dpkg -l

(22) 报告指定包的状态信息

用法:dpkg -s package-name

示例:dpkg -s ssh

(23) 显示一个包安装到系统里面的文件目录信息

用法:dpkg -L package-Name

示例:dpkg -L apache2

(24) 搜索指定包里面的文件(模糊查询)

用法:dpkg -S filename-search-pattern

(25) 显示包的具体信息

用法:dpkg -p package-name

示例:dpkg -p cacti

(26) 有些软件很难卸载,而且还阻止了别的软件应用,就需要使用如下命令

用法: dpkg --force-all --purge packagename

示例: dpkg --force-all --purge xinetd

(27) 常见的问题: 

a. 安装Ubuntu或者Debian以后,想要知道软件安装到具体的路径,可以使用 dpkg -L 命令来查看。

b. 如果想暂时删除程序以后再安装,可以使用 dpkg -r 命令 

2、apt-get 的使用方法

apt-get 是一条linux命令,适用于deb包管理式的操作系统;主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。它的基本使用方法如下:

(1) 获得最近的软件包的列表,列表中包含一些包的信息,比如这个包是否更新过

用法: apt-get update 

(2) 将系统升级到新版本

用法: apt-get -u upgrade 或 apt-get dist-upgrade 

说明: 由于包与包之间存在各种依赖关系,upgrade 只是简单的更新包,不管这些依赖,它不会添加包或是删除包;而 dist-upgrade 可以根据依赖关系的变化,添加包,删除包。一般在运行 upgrade 或 dist-upgrade 之前,要运行 update。

(3) 安装软件包

用法: apt-get install packagename

示例: apt-get install mdadm 

(4) 卸载一个已安装的软件包(保留配置文档)

用法: apt-get remove packagename

示例:apt-get remove sqlite3

(5) 卸载一个已安装的软件包(删除配置文档)

用法: apt-get remove --purge packagename

示例: apt-get remove --purge samba

(6) 删除包及其依赖的软件包

用法: apt-get autoremove packagename

示例: apt-get autoremove openssh-server

(7) 删除包及其依赖的软件包和配置文件,比上面的要删除的彻底一点

用法: apt-get autoremove --purge packagname

示例: apt-get autoremove --purge xinetd

(8) 清除那些已卸载的软件包的.deb文档

用法: apt-get autoclean

说明: 

a. 通过这种方式,您能够释放大量的磁盘空间。

b. 假如您的需求十分迫切,能够使用apt-get clean以释放更多空间,apt-get clean 这个命令会将已安装软件包裹的.deb文档一并删除。

3、aptitude 的使用方法

aptitude是Debian GNU/Linux系统中,非常神奇的的软件包管理器,基于大名鼎鼎的APT机制,整合了dselect和apt-get的所有功能,并提供的更多特性,特别是在依赖关系处理上。   

aptitude与apt-get一样,是Debian及其衍生系统中功能极其强大的包管理工具。与apt-get不同的是aptitude在处理依赖问题上更佳一些。

举例来说,aptitude在删除一个包时,会同时删除本身所依赖的包,这样系统中不会残留无用的包,整个系统更为干净。

aptitude常用的使用方法如下:

(1) 更新可用的包列表

用法: aptitude update 

(2) 升级可用的包

用法: aptitude upgrade 

(3) 将系统升级到新的发行版

用法: aptitude dist-upgrade 

(4) 安装软件包

用法: aptitude install pkgname

示例: aptitude install php5 php5-gd php5-curl php5-sqlite php5-mysql

(5) 删除软件安装包

用法: aptitude remove pkgname

示例: aptitude remove php5 

(6) 删除软件包及其配置文件 

用法: aptitude purge pkgname

示例: aptitude purge gcc

(7) 搜索软件包

用法: aptitude search string 

示例: aptitude search samba

(8) 显示包的详细信息

用法: aptitude show pkgname

示例: aptitude show vsftpd

(9) 删除下载的包文件

用法: aptitude clean

(10) 仅删除过期的包文件

用法: aptitude autoclean

4、三种工具的区别

(1) dpkg绕过apt包管理数据库对软件包进行操作,因此当你用dpkg安装过的软件包,然后再使用apt也可以再安装一遍,系统不知道之前安装过了,将会覆盖之前dpkg的安装。

(2) dpkg主要是用来安装.deb文件,但不会解决模块(软件包)的依赖关系,且不会关心系统中软件仓库内的软件(包),可以用于安装本地的deb文件。

(3) apt会解决和安装模块的依赖问题,并会咨询软件仓库,但不会安装本地的deb文件,apt是建立在dpkg之上的软件管理工具。

(4) aptitude与apt-get一样,是Debian及其衍生系统中具有极其强大的包管理工具,与apt-get不同的是aptitude在处理依赖问题上更佳一些。举例来说,aptitude在删除一个包时,会同时删除本身所依赖的包。这样系统中不会残留无用的包,整个系统更为干净。

继续阅读