ubuntu中的包管理工具apt、apt-get、dpkg

0、简介:

        Debian 作为 Ubuntu等 Linux 操作系统的母板,其具有强健的「包管理」系统,它的每个组件和应用程序都内置在系统中安装的软件包中。Debian 使用一套名为 Advanced Packaging Tool(APT)的工具来管理这种包系统,在基于 Debian 的 Linux 发行版中,有各种工具可以与 APT 进行交互,以方便用户安装、删除和管理的软件包,apt-get 便是其中一款广受欢迎的命令行工具, 最常用的 Linux 包管理命令都被分散在了 apt-get、apt-cache 和 apt-config 这三条命令当中。

        Ubuntu 16.04 一个引人注目的新特性便是 apt 命令的引入,apt 命令的引入就是为了解决命令过于分散的问题,它包括了 apt-get 命令出现以来使用最广泛的功能选项,以及 apt-cache 和 apt-config 命令中很少用到的功能。在使用 apt 命令时,用户不必再由 apt-get 转到 apt-cache 或 apt-config,而且 apt 更加结构化,并为用户提供了管理软件包所需的必要选项。越来越多的其它 Linux 发行版也开始遵循 Ubuntu 的脚步,开始鼓励用户使用 apt 而不是 apt-get。

        简单来说就是:apt = apt-get、apt-cache 和 apt-config 中最常用命令选项的集合。


1、apt和apt-get命令之间的区别:

apt 命令取代的命令命令的功能
apt searchapt-cache search搜索软件包
apt showapt-cache show

显示软件包信息

apt installapt-get install

安装软件包

(加-y参数无需提示直接安装)

(加-f参数自动修复损坏的软件包,尝试卸载出错/冲突的包,重新安装正确版本的)

安装的软件包会存储在/var/cache/apt/archives/

/var/cache/apt/archives/partial/两个目录下

apt updateapt-get update

刷新存储库索引,大多数 Linux 都使用本地数据库来存储远程可用的包仓库列表,

所以在安装或升级包之前最好更新一下这个数据库,确保软件包列表是最新的。

apt upgradeapt-get upgrade

更新所有已安装的软件包(加-u参数显示完整的可更新软件包列表)

apt full-upgradeapt-get dist-upgrade

将系统升级到新版本(谨慎操作)

在升级软件包时自动处理依赖关系

apt purgeapt-get purge删除软件包,并删除配置文件
apt removeapt-get remove删除软件包,不删除配置文件
 apt-get remove --purge删除软件包,并删除配置文件
apt autoremoveapt-get autoremove删除包及其依赖的软件包,不删除配置文件
 apt-get autoremove --purge删除包及其依赖的软件包,并删除配置文件
 apt-get clean 
 apt-get autoclean 

apt 新的命令:

新的apt命令命令的功能
apt list列出包含条件的包(已安装,可升级等)
apt edit-sources编辑源列表

参考:Linux中apt与apt-get命令的区别与解释 


3、dpkg

dpkg 是Debian package的缩写,为Debian操作系统专门开发的套件管理系统,用于软件的安装、更新和移除。所有源自Debian的Linux的发行版都使用dpkg,如Ubuntu。

dpkg命令命令的功能
dpkg -s package查找包的详细信息
dpkg -c package.deb列出 deb 包的内容
dpkg -i package.deb安装软件(不能自动处理依赖关系)
dpkg -L package安装完包后,可以用此命令查看软件安装到什么地方

dpkg -l

dpkg -l package

列出(所有)已安装的软件包信息。

列出和模式相匹配的软件包(“*name*”)

dpkg -r package移除安装的软件包,但不删除配置文件
dpkg -p package移除软件包和配置文件
dpkg -c package.deb列出 deb 包的内容
dpkg –unpack package.deb解开 deb 包的内容
dpkg -S keyword搜索所属的包内容
dpkg –configure package配置包
dpkg --force-all --purge 

dpkg -l 命令详解

dpkg -l 命令会列出系统中所有已安装的软件包信息,结合grep,可以过滤出自己想要的内容。

输出第一列:一般为两个字母,分别代表(期望状态和当前状态)最常见的就是ii。在出错情况下会是三个字母,一般为iHR(期望安装,安装不完全,需要重装) 一般在安装过程中强行Ctrl-C就会出现这样的问题。

  • 期望状态标识:未知(u)、安装(i)、删除(r)、清除(p)、保持(h)
  • 当前状态标识:未安装(n)、已安装(i)、仅存配置(c)、仅解压缩(U)、配置失败(F)、不完全安装(H)、触发器等待(W)、触发器未决(T)
  • 错误标识:无、需重装(R)

一般我们系统中最常见的就是ii(期望安装,并且已正常安装)。还有一种比较常见的是rc(期望卸载,目前仅仅保留了一些配置信息)。 

输出第二列:软件包名称

输出第三列:软件包版本号

输出第四列:软件包支持的体系结构

输出第五列:软件描述信息

输出来源:系统中所有的安装的包的内容都被记录在:/var/lib/dpkg/status,dpkg -l 命令就是读取的这个文件中的内容进行显示。


/etc/apt/sources.list 详解

/etc/apt/source.list 是包管理工具 apt 所用的记录软件包仓库位置的配置文件,同样的还有位于 /etc/apt/source.list.d/*.list 的各文件。sources.list.d目录下的*.list文件为在单独文件中写入源的地址提供了一种方式,通常用来安装第三方的软件。

source.list 文件中的条目一般都有如下的形式:

deb http://site.example.com/debian发行版component1 component2 component3
deb-src http://site.example.com/debian发行版component1 component2 component3

ubuntu16.04官方sources.list文件如下 

deb http://archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse

档案类型 (Archive type)

条目的第一个词 deb 或是 deb-src 表明了所获取的软件包档案类型。其中,deb 档案类型为二进制预编译软件包,一般我们所用的档案类型。deb-src 档案类型为用于编译二进制软件包的源代码。

仓库地址 (Repository URL)

条目的第二个词则是软件包所在仓库的地址。如在浏览器中输入 http://archive.ubuntu.com/ubuntu/,并进入dists目录,可以看到对应的目录结构。可以更换仓库地址为更靠近自己的镜像来提高下载速度。

发行版 (Distribution)

跟在仓库地址后的是发行版。发行版有两种分类方法,一类是发行版的具体代号,如 xenialtrustyprecise 等;还有一类则是发行版的发行类型,如 oldstablestabletesting 和 unstable

另外,在发行版后还可能有进一步的指定,如 xenial-updatestrusty-securitystable-backports 等。

软件包分类 (Component)

跟在发行版之后的就是软件包的具体分类了,可以有一个或多个。不同的 Linux 发行版对软件有着不同的分类,如:

Ubuntu 对软件包的分类如下(参考wikipedia

 自由软件非自由软件
官方支持的MainRestricted
非官方支持的UniverseMultiverse

  参考:

https://wiki.debian.org/SourcesList

https://wiki.ubuntu.com/Releases


选择源

ubuntu官方有自身的软件源,直接从官方的软件源获取数据的速度比较慢,而通过国内的一些的源的镜像进行更新一般能够获得比官方源更快的速度,不过不同国内的源的下载速度也会不一样。这里给出了较为详细的ubuntu软件源列表,个人现在觉得选取ubuntu软件源的方法是首先选择位于相同地区的源,然后进行ping操作,时延不是太高即可。对比aliyun、sohu、ubuntu官方ping的数据,可以发现aliyun的源在时延上表现最好。

修改源列表

首先,备份源列表。

sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup

然后,用vim或其他编辑器打开源列表,选择合适的源替换掉文件中所有的內容并保存。

sudo vim /etc/apt/sources.list

最后,刷新源列表。

sudo apt-get update

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值