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 search apt-cache search 搜索软件包
apt show apt-cache show

显示软件包信息

apt install apt-get install

安装软件包

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

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

安装的软件包会存储在和

两个目录下

apt update apt-get update

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

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

apt upgrade apt-get upgrade

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

apt full-upgrade apt-get dist-upgrade

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

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

apt purge apt-get purge 删除软件包,并删除配置文件
apt remove apt-get remove 删除软件包,不删除配置文件
  apt-get remove –purge 删除软件包,并删除配置文件
apt autoremove apt-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,可以过滤出自己想要的内容。

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

  • 期望状态标识:未知、安装、删除、清除、保持
  • 当前状态标识:未安装、已安装、仅存配置、仅解压缩、配置失败、不完全安装、触发器等待、触发器未决
  • 错误标识:无、需重装

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

输出第二列:软件包名称

输出第三列:软件包版本

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

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


/etc/apt/sources.list 详解

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

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

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

档案类型 (Archive type)

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

仓库地址 (Repository URL)

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

发行版 (Distribution)

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

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

软件包分类 (Component)

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

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

  自由软件 非自由软件
官方支持的 Main Restricted
非官方支持的 Universe Multiverse

  参考:

https://wiki.debian.org/SourcesList

https://wiki.ubuntu.com/Releases


选择源

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

修改源列表

首先,备份源列表。

最后,刷新源列表。

 

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年2月4日
下一篇 2020年2月4日

相关推荐