一篇全面的linux软件包管理的总结



零、开篇

​ 在linux操作系统中,关于软件的安装与Windows操作系统上的软件安装以及软件包的管理有很大的不同。在linux中,常常使用apt-get命令进行软件安装。实际上该命令是linux软件包管理(PMS)的一个工具。在实际工程实践以及软件开发中,推荐使用另一个前端工具:aptitude来进行软件安装以及软件包的管理。该命令可以避免一些常见的软件安装问题:

1、软件包之间的依赖关系缺失。

2、系统环境不稳定问题。


【注】该篇文章的软件包管理基于Debian的系统。基于Red Hat的发行系统的软件包管理与本文所描述方法不同!

一、查看软件包信息

(1-1)使用aptitude查看linux系统上安装了哪些软件包。

​ 只需在linux终端下键入aptitude即可,此后将会弹出aptitude的管理图形界面,如下图所示:

在这里插入图片描述

​ 然后使用方向键盘在菜单上移动。每一个菜单下又有子菜单,我们可以根据菜单查看:

  • 可升级的软件包

  • 新的软件包

  • 已安装的软件包

  • 未安装的软件包

  • 过期的和在本地创建的软件包

  • 虚拟软件包

  • 软件集

    而且当移动到对应的菜单栏时,会有对应的提示信息。这一点非常nice!这也是我钟爱aptitude的一个重要原因。

    【常用快捷键】

1、按下键盘上?号键查看关于aptitude的帮助提示。

​ 如果不清楚关于aptitude的命令参数和对应快捷键,可以按下键盘上的?查看,如下图所示:

2、q键是返回或者退出快捷键。

3、使用u键更新软件包。

(1-2)使用aptitude查看已知的软件包信息

​ 在许多开发场景中,当我们已经知道了软件包的名称,那就可以不使用aptitude图形界面查看软件包信息,可以使用以下的命令查看:

aptitude show package_name    

package_name是我们已经知道的软件包名称。

​ 注:如果package_name表示的软件包在系统上还没有被安装。那么输出的软件包相关的详细信息来自于软件仓库。

​ 以下是使用aptitude show vim查看vim软件包的信息:

在这里插入图片描述

(1-3)查看与具体软件包相关的所有文件

​ 使用aptitude命令无法查看到与一个软件包关联的所有文件,这时候需要使用dpkg命令,如下所示:

dpkg -L package_name

​ package_name表示软件包的名称。

以下是使用dpkg -L vim查看与vim软件包相关联的所有文件:

在这里插入图片描述

除了可以查看一个软件包的所有文件,也可以换过来查看一个文件属于哪一个软件包。需要使用以下命令:

dpkg --search 文件的绝对路径

注:必须使用文件的绝对路径。

二、使用aptitude安装软件包

(2-1)搜索软件包

​ 很多时候,在安装软件包时,往往不知道软件包的全名是什么,非常尴尬。除非有文档进行详细描述。这时候在安装软件包之前,需要使用:

aptitude search package_name

来获取软件包的名称。

​ 例如如果需要安装FFmpeg软件包,这时候可以使用如下命令:

aptitude search ffmpeg

软件包搜索结果如下所示:

在这里插入图片描述

​ 可以看见将会输出很多的软件包,我们可以根据自己的需要进行安装。在每一个软件包条目的前面都有一个软件包状态说明符。如果显示为i,则说明该软件包已经被安装到本地系统环境中了。如果显示为p或者v,则说明该软件包可用,但是还没有安装到本地系统环境中。

(2-2)安装软件包

​ 安装软件包就比较简单啦,如果我们已经使用aptitude search package_name命令找到了所需要安装的软件包,这时候使用aptitude install package_name安装软件即可:

sudo aptitude install ffmpeg

三、使用aptitude更新软件包

​ linux环境中,对于解决软件包的依赖关系问题比较繁琐。这时候可以使用aptitude safe-upgrade命令将系统中的软件包更新到软件仓库下的最新版本。
在这里插入图片描述

aptitude safe-upgrade命令将会自动检查软件包之间的依赖关系。

​ 当然,还可以使用aptitude full-upgradeaptitude dist-upgrade命令更新软件包。但是这两个命令不会去检查软件包之间的依赖关系,所以说在实际工作中推荐使用aptitude safe-upgrade命令来更新软件包。

【备注】

​ 对于一个linux的发新版本,当该版本发布以后,后面可能会推出安全补丁和相关更新,这时候及时更新我们的系统很重要,为什么这样做,你们都懂的!

四、使用aptitude卸载软件

​ 在实际工作中,当由于各种原因不再需要某个软件的时候,需要将其卸载掉。同样的,使用aptitude remove package_nameaptitude purge package_name命令。

  • aptitude remove package_name:该命令将删除软件包而不删除数据和配置文件。
  • aptitude purge package_name:该命令将删除软件包和相关数据和配置文件。

五、aptitude仓库

​ 对于linux来说,其软件生态管理得非常好,会有专门的机构或者规则对软件包进行管理。如果我们需要更换自己系统上的aptitude的软件仓库,只需要编辑、修改/etc/apt/sources.list文件即可。

该文件中的内容形式通常如下:

deb (或者deb-src)  address   distribution_name    package_type_list
  • deb或者deb-src:软件包的类型。deb标识是一个已经编译的程序源;deb-src标识是一个源代码的源。

  • address:软件仓库的web地址。

  • distribution_name:软件仓库的发布版版本的名称。【注:该名称可能会与多种linux发行版混用!】

  • package_type_list:仓库中存在的包的类型。该条目可能不止一个选择,可选的值有:main、restricted、universe、partner等。

    例如:

deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted
# deb-src http://security.ubuntu.com/ubuntu bionic-security main restricted
deb http://mirrors.aliyun.com/ubuntu/ bionic-security universe
# deb-src http://security.ubuntu.com/ubuntu bionic-security universe
deb http://mirrors.aliyun.com/ubuntu/ bionic-security multiverse
# deb-src http://security.ubuntu.com/ubuntu bionic-security multiverse

好啦,至此Linux平台下的软件包管理与安装总结一文到此结束。感叹一下,成千上万的软件包在Linux平台下都井井有序的被管理着。当然还有些没有进入Linux管理仓库的软件。可见,Linux平台软件包管理机制和规则的强大。


​ 搜索关注【嵌入式小生】wx公众号获取更多精彩内容>>>>
请添加图片描述

Logo

更多推荐