[转]Ubuntu上的包管理:dpkg,apt和aptitude
一直以来对于ubuntu的包管理的概念就是apt-get,偶尔手动装个包就是dpkg -i,现在觉得是要系统地了解一下这几个包管理的命令。
原文转自: http://zhouliang.pro/2011/10/23/ubuntu-apt-aptitude-dpkg/
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 | 配置包 |
注意:更多选项可通过 dpkg -h 查询,有些指令需要超级用户权限才能执行
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 | 检查是否有损坏的依赖 |
备注:package 为软件包名称。
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 | 仅删除过期的包文件 |
当然aptitude也是text-based,也就是命令行模式的
Synaptic
由于synaptic是GUI界面的,没啥命令好说的,其实这个在Ubuntu里面也挺少用到的,更多的还是通过apt-get命令就可以搞定。
需要熟记的:
1). 查询vim是否安装:
fbw@fbw-kylin:~$ dpkg -l | grep vim
ii vim 2:7.3.429-2ubuntu2.1 Vi IMproved - enhanced vi editor
ii vim-common 2:7.3.429-2ubuntu2.1 Vi IMproved - Common files
ii vim-runtime 2:7.3.429-2ubuntu2.1 Vi IMproved - Runtime files
ii vim-tiny 2:7.3.429-2ubuntu2.1 Vi IMproved - enhanced vi editor - compact version
2). 查看python-six包的详情:
fbw@fbw-kylin:/var/cache/apt/archives$ dpkg -s python-six
Package: python-six
Status: install ok installed
Priority: optional
Section: python
Installed-Size: 53
Maintainer: Colin Watson <cjwatson@debian.org>
Architecture: all
Source: six
Version: 1.1.0-2
Depends: python2.7, python (>= 2.7.1-0ubuntu2), python (<< 2.8)
Description: Python 2 and 3 compatibility library (Python 2 interface)
Six is a Python 2 and 3 compatibility library. It provides utility
functions for smoothing over the differences between the Python versions
with the goal of writing Python code that is compatible on both Python
versions.
.
This package provides Six on the Python 2 module path. It is complemented
by python3-six.
PS:deb包对应的文件名为:"包名"_"Version"_"Architecture".deb
3). apt-cache 查看包的详情:
fbw@fbw-kylin:/var/cache/apt/archives$ apt-cache show python-six
Package: python-six
Priority: optional
Section: universe/python
Installed-Size: 53
Maintainer: Colin Watson <cjwatson@debian.org>
Architecture: all
Source: six
Version: 1.1.0-2
Depends: python2.7, python (>= 2.7.1-0ubuntu2), python (<< 2.8)
Filename: pool/universe/s/six/python-six_1.1.0-2_all.deb
Size: 6062
MD5sum: d934e809c17d748f15c1d989862bd7cd
SHA1: 1ccffda8d00bb874a8163410e39c3f499a931b87
SHA256: 12e087fb95a7f11185ac04b3cf49aa880d353d62b5dd8d043edf33ded265940e
Description-en: Python 2 and 3 compatibility library (Python 2 interface)
Six is a Python 2 and 3 compatibility library. It provides utility
functions for smoothing over the differences between the Python versions
with the goal of writing Python code that is compatible on both Python
versions.
.
This package provides Six on the Python 2 module path. It is complemented
by python3-six.
Homepage: http://packages.python.org/six/
Description-md5: cfd46d2babaaa95d96b4e170cd5bf348
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu
[转]Ubuntu上的包管理:dpkg,apt和aptitude的更多相关文章
- Homebrew- MAC上的包管理利器
包管理器是神马东西?让我们看看wikipedia上的介绍. In software, a package management system, also called package manager, ...
- MAC上的包管理利器
Homebrew- MAC上的包管理利器 2013-07-01 16:25 by 黄博文, 76 阅读, 0 评论, 收藏, 编辑 包管理器是神马东西?让我们看看wikipedia上的介绍. In s ...
- 菜鸟玩云计算之十五:在Ubuntu上创建和管理Redhat虚拟机
菜鸟玩云计算之十五:在Ubuntu上创建和管理Redhat虚拟机 chedou@hgdb.net 虚拟机给工作带来巨大的便利,不仅仅体现在资源的按需使用,而且配置的迁移特别方便.本文将使用Ubuntu ...
- ubuntu包管理命令apt和dpkg的用法
apt-get命令: apt-get是debian,ubuntu发行版的包管理工具,与红帽中的yum工具非常类似,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索.安装.升级.卸载 ...
- 程序包管理dpkg、apt-get、服务端openssh-server与客户端Xshell设置及lrzsz安装使用
一.程序包管理器 dpkg.apt-get 1.dpkg 安装:sudo dpkg -i cmatrix_1.2a-5build3_amd64.deb 卸载:sudo dpkg -r cmatrix ...
- 03--软件包管理工具 apt
APT APT(the Advanced Packaging Tool)是Ubuntu 软件包管理系统的高级界面,由几个名字以“apt-”打头的程序组成.apt-get.apt-cache ...
- Ubuntu的软件安装管理---dpkg与apt-*详解
摘要:软件厂商先在他们的系统上面编译好了我们用户所需要的软件,然后将这个编译好并可执行的软件直接发布给用户安装.不同的 Linux 发行版使用不同的打包系统,一般而言,大多数发行版分别属于两大包管理技 ...
- 如何在Ubuntu上创建及管理LXC容器?
将LXC安装到Ubuntu上 $ sudo apt-get install lxc 安装完毕之后,运行lxc-checkconifg工具,检查当前Linux内核支持LXC的情况.要是一切都已被启用,内 ...
- ZH奶酪:如何在Ubuntu上安装Java/管理多个JAVA/设置JAVA_HOME
0.简介 Java的地位及重要性,大家都懂的,很多软件都依赖于jdk,在Ubuntu上安装Java的选择有很多,openJDK,Oracle Jdk... 1.安装默认 JRE/JDK(可选) 这是最 ...
随机推荐
- CALayer 认识
一篇很好的讲述calayer的博客 http://www.cnblogs.com/kenshincui/p/3972100.html
- iOS pop使用通知传值
iOS pop回父级页面,使用通知传值 输入所要发送的信息 ,同时将label的值通过button方法调用传递, - (IBAction)buttonClick:(id)sender { //添加 字 ...
- 设置透明navigationBar
三行代码轻松实现透明navigationBar: [self.navigationController.navigationBar setBackgroundImage:[UIImage new] ...
- POJ 1159 Palindrome(LCS)
题目链接:http://poj.org/problem?id=1159 题目大意:给定一串字符,添加最少的字符,使之成为回文串. Sample Input 5 Ab3bd Sample Output ...
- [LeetCode OJ] Word Search 深度优先搜索DFS
Given a 2D board and a word, find if the word exists in the grid. The word can be constructed from l ...
- 【随记】数据库还原失败System.Data.SqlClient.SqlError: 无法执行 BACKUP LOG,因为当前没有数据库备份
解决方法:去掉下图中箭头所指的项.
- windows下面composer安装yii2
1,安装composer "https://getcomposer.org/Composer-Setup.exe" 2,安装 composer-asset-plugin ,打开cm ...
- laravel学习前期遇到的小知识点(1)
1. 目前我用的laravel 5.2.36版本web中间件成为全局中间件(不知道从5.2.26以上就改变了还是怎样,没有深究),也就是之前的版本路由里默认会有一个Route::group的web中间 ...
- Android ART简介
一. Android ART简介 Android DEX/ODEX/OAT文件
- git推送失败的问题
git报错如下: fatal: 'origen' does not appear to be a git repositoryfatal: The remote end hung up unexpec ...