Ubuntu上的包管理:dpkg,apt和aptitude
简述
最开始的时候,Linux上的软件以源代码的方式发布,用户下载源代码包(通常打包为.tar.gz),然后自行编译。
dpkg是Debian软件包管理器的基础,它被伊恩·默多克创建于1993年。dpkg与RPM十分相似,同样被用于安装、卸载和供给和.deb软件包相关的信息。
dpkg本身是一个底层的工具,本身并不能从远程包仓库下载包以及处理包的依赖的关系,基于dpkg的上层工具,如APT,则用于从远程获取软件包以及处理复杂的软件包关系。
APT全称Advanced Packaging Tool,可以自动下载,配置,安装二进制或者源代码格式的软件包,因此简化了Unix系统上管理软件的过程。现在Debian和其衍生发行版(如Ubuntu)中都包含了APT。
APT最早是基于dpkg的开发的,只用来处理deb格式的软件包。现在经过APT-RPM组织修改,APT已经可以安装在支持RPM的系统管理RPM包。
而aptitude是一个APT的文本界面客户端,现在也逐渐加入了GUI的界面,详见http://linuxtoy.org/archives/gtk-gui-for-aptitude.html
Synaptic是Ubuntu中自带的APT的GUI客户端,也就是传说中的新立得。
dpkg命令
(来自:http://linuxtoy.org/archives/dpkg_reference.html)
命令 | 作用 |
---|---|
dpkg -i package.deb | 安装包 |
dpkg -r package | 删除包 |
dpkg -P package | 删除包(包括配置文件) |
dpkg -L package | 列出与该包关联的文件 |
dpkg -l package | 显示该包的版本 |
dpkg --unpack package.deb | 解开 deb 包的内容 |
dpkg -S keyword | 搜索所属的包内容 |
dpkg -l | 列出当前已安装的包 |
dpkg -c package.deb | 列出 deb 包的内容 |
dpkg --configure package | 配置包 |
APT命令
(来自:http://linuxtoy.org/archives/apt_reference.html)
命令 | 作用 |
---|---|
apt-cache search package | 搜索包 |
apt-cache show package | 获取包的相关信息,如说明、大小、版本等 |
sudo apt-get install package | 安装包 |
sudo apt-get install package --reinstall | 重新安装包 |
sudo apt-get -f install | 强制安装 |
sudo apt-get remove package | 删除包 |
sudo apt-get remove package --purge | 删除包,包括删除配置文件等 |
sudo apt-get autoremove | 自动删除不需要的包 |
sudo apt-get update | 更新源 |
sudo apt-get upgrade | 更新已安装的包 |
sudo apt-get dist-upgrade | 升级系统 |
sudo apt-get dselect-upgrade | 使用 dselect 升级 |
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 | 检查是否有损坏的依赖 |
aptitude命令
(来自http://linuxtoy.org/archives/aptitude_quick_reference.html)
aptitude是基于APT的又一个包管理的前端,aptitude似乎在处理依赖问题上更佳一些。据说aptitude 另外用一份数据量很小的扩展标记来实现所谓更佳的管理,我没有发现有什么比apt命令更加牛逼的功能,不过看起来命令比apt要简洁。
命令 | 作用 |
---|---|
aptitude update | 更新可用的包列表 |
aptitude upgrade | 升级可用的包 |
aptitude dist-upgrade | 将系统升级到新的发行版 |
aptitude install pkgname | 安装包 |
aptitude remove pkgname | 删除包 |
aptitude purge pkgname | 删除包及其配置文件 |
aptitude search string | 搜索包 |
aptitude show pkgname | 显示包的详细信息 |
aptitude clean | 删除下载的包文件 |
aptitude autoclean | 仅删除过期的包文件 |
Synaptic
由于synaptic是GUI界面的,没啥命令好说的,其实这个在Ubuntu里面也挺少用到的,更多的还是通过apt-get命令就可以搞定。