[转]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(可选) 这是最 ...
随机推荐
- Struts2中EL表达式取值
http://blog.csdn.net/cuihaiyang/article/details/41950141 (写的不错,可以知道为什么struts2可以用El取属性值的问题.正常el从reque ...
- PHP语言、浏览器、操作系统、IP、地理位置、ISP
)]; } else { $Isp = 'None'; } return $Isp; }}
- ios专题 -线程互斥与同步
[原创]http://www.cnblogs.com/luoguoqiang1985 今天遇见了这问题,决定要需要讨论下. 线程同步的方法: @synchronized 官方文档解释:The @syn ...
- JavaScript DOM编程艺术第二版学习(1/4)
接下来项目需要网页相关知识,故在大牛的指引下前来阅读本书. 记录方式:本书分四部分阅读,完成阅读之后会多写一篇包括思维导图的算是阅读指南的东西,浏览的童鞋看着指南可以跳过一些不必要的坑~ 当前水平:H ...
- 问题:Bringing up interface eth0: Device eth0 does not seem to be present,delaying initialization. [FAILED]—— 找不到网卡。
克隆虚拟机的时候或其他情况出现以下问题(命令service network restart): Bringing up interface eth0: Device eth0 does not ...
- 通过javascript实现页面的横竖屏固定
javascript是不能固定页面是横屏还是竖屏的,但是我们可以通过另外一种思路来监听window.orientation状态,假设我们要固定页面为横屏显示,则当window.orientation返 ...
- 配置并学习微信JS-SDK(2)—图片接口
测试地址:http://www.qq210.com/shoutu/android 检查图像接口 选择本地或拍照的图片 上传选择的图片 预览上传的图片 //1.检查图像接口 document.query ...
- js更新页面,随机更新数字
代码1: <script> function getRandom(){ var i = Math.random()*40+160; document.getElementById(&quo ...
- Android ART简介
一. Android ART简介 Android DEX/ODEX/OAT文件
- linux安装python使用的MySQLdb
安装mysqldb模块需已安装mysql 使用pip安装MySQLdb pip install mysql-python mac os安装mysqldb sudo pip install mysql- ...