[转]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(可选) 这是最 ...
随机推荐
- 3.SQL*Plus命令
3.1SQL*Plus与数据库的交互 主要用来数据库查询和数据处理的工具. 3.2SQL*Plus运行环境设置 3.2.1SET命令概述 用户可以使用SET命令设置SQL*Plus的运行环境,SET命 ...
- O-C相关04:类方法的概述与定义和调用
类方法的概述与定义和调用 1, 类方法的概述 类方法(class method)在其他编程语言中常常称为静态方法(例如 Java 或 C# 等). 与实例方法不同的是,类方法只需要使用类名即可调用, ...
- 网络编程(学习整理)---3--(Udp)FeiQ实现广播消息群发
1.广播群发消息: 这里使用的任然是UDP协议,使用方法还是比较简单的! 我就记录一下需要注意的一些地方(笔记): (1)这里是在局域网内,借用FeiQ聊天软件,编写一段程序,实现对局域网内的每一个登 ...
- boost::thread 线程锁
1.boost锁的概述: boost库中提供了mutex类与lock类,通过组合可以轻易的构建读写锁与互斥锁. 2.mutex对象类(主要有两种): 1.boost::mutex(独占互斥类) --& ...
- thinkphp框架使用心得
接触的第一个PHP框架就是TP,在使用的了一段时间后就放弃了,说实话TP的弊端挺多,之后又接触laravel框架,慢慢的就爱上laravel这个框架了.这段时间由于公司的原因,又不得不使用thinkp ...
- oracle简单两个操作
sqlplus sys/密码 as sysdba ALTER USER 账号 IDENTIFIED BY 新密码; select * from (select rownum 别名 ,表名.* fro ...
- ARM开发板系统移植-----rootfs的制作
前面两篇文章分别介绍了mini2440开发板上运行的bootloader和kernel,到这里系统启动后其实是停留在一个“僵死”的状态---无法挂载根文件系统. 这里将介绍如何制作一个根文件系统,并且 ...
- ibatis面试笔记
ibatis是在结果集与实体类之间进行映射hibernate是在数据库与实体类之间进行映射Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序 ...
- Ubuntu 误改/etc/sudoers 文件权限
添加用户时不小心修改了/etc/sudoers 权限,结果不能sudo了,Ubuntu默认关闭root帐户,结果傻X了,无法改回了. 方法如下: 1.重启机器,开机按ESC,进入恢复模式 2.此时,磁 ...
- const变量与define定义常量的区别
一.概念性区别 const 变量就是在普通变量前边加上一个关键字const,它赋值的唯一机会就是“定义时”,此变量不能被程序修改,存储在rodata区. define定义的是常量,不是变量,所以编译器 ...