Linux系统软件包管理——dpkg、apt-get、rpm、yum

2023-05-16

软件包管理是一种在系统上安装、维护软件的方法。主要有两种方式,一种是通过安装Linux经销商发布的软件包来满足软件需求;一种是先下载源代码,然后对其进行编译(博主在使用jetson tx2时,由于Arm架构的特殊性,遇到了很多从源码编译的情况)。

0.参考书籍

《Linux命令行大全》 [美] William E. Shotts. Jr 著 郭光伟 郝记生 译, 人民邮电出版社

如有侵权,可联系博主删除。

1.软件包系统

不同的Linux发行版用的是不同的软件包系统,并且原则上,适用于一种发行版的软件包与其它版本是不兼容的。多数Linux发行版采用的不外乎两种——Debian的.deb技术Red Hat的.rpm技术
表1 主流软件包系统类

软件包系统部分发行版本
Debian类(.deb技术)DebianUbuntu、Xandros、Linspire
Red Hat类(.rpm技术)Fedora、CentOS、Red Hat Enterprise Linux、openSUSE、Mandriva、PCLinuxOS

2.软件包系统工作方式

Linux系统所有软件均可在网上找到,并且多数是以软件包文件的形式由发行商提供,其余则以手动安装的源代码形式存在。

2.1 软件包文件

包文件是组成软件包系统的基本软件单元。它是由组成软件包的文件压缩而成的文件集。一个包可能包含大量的程序以及支持这些程序的数据文件。包文件既包含了安装文件,又包含了有关包自身及其内容的文本说明之类的软件包元数据。此外,许多软件中还包含了安装软件包前后执行配置任务的安装脚本。
包文件通常由软件维护者创建,该维护者通常是发行商。包维护者从上游供应商(一般是程序的作者)获得软件源代码,然后进行编译,并创建包的元数据及其他必需的安装脚本。通过,包维护者会在初始源代码上做部分修改,从而提高该软件包与该Linux发型版本其它部分的兼容性。

2.2 库

Linux用户可以从其所使用的的Linux版本的中心库中获得软件包。所谓中心库,一般包含成千上万个软件包,而且每一个都是专门为该发型版本建立和维护的。
一个发型版本可能还会有相关的第三方库,这些库通常提供因法律原因而不能包含在发行版本中的软件。

2.3 依赖关系

几乎没有任何一个程序是独立的。程序之间相互依赖彼此完成既定工作。一些共有操作,例如输入/输出操作,就是由多个程序共享的例程执行。这些例程存储在共享库里面,共享库里的文件为多个程序提供必要的服务。如果一个软件包需要共享库之类的共享资源,说明其具有依赖性

2.4 高级和低级软件包工具

软件包管理系统通常包含两类工具——执行如安装、删除软件包等任务的低级工具进行元数据搜索及提供依赖性解决的高级工具

表2 软件包系统工具

发行版本低级工具高级工具
Debian类dpkgapt-get、aptitude
Fedora、Red Hat Enterprise Linux 、CentOSrpmyum

3.常见的软件包管理任务

3.1 在库里查找软件包

表3 包搜索命令

系统类型命令
Debian系统apt-get update; apt-cache search search_string
Red Hat系统yum search search_string

3.2 安装库中的软件包

表4 软件包安装命令

系统类型命令
Debian系统apt-get update; apt-get install package_name
Red Hat系统yum install package_name

3.3 安装软件包文件中的软件包

如果软件包不是从库源中下载的,可以用低级工具直接安装(但并不安装依赖关系)。
表5 低级软件包安装命令

系统类型命令
Debian系统dpkg --install package_file
Red Hat系统rpm -i package_file

3.4 删除软件包

表5 软件包移除命令

系统类型命令
Debian系统apt-get remove package_name
Red Hat系统yum erase package_name

3.5 更新库中的软件包

最常见的软件包管理任务是保持系统安装最新的软件包。
表6 软件包更新命令

系统类型命令
Debian系统apt-get update; apt-get upgrade
Red Hat系统yum update

3.6 更新软件包文件中的软件包

如果软件包的更新版本已从非库源中下载

表7 低级软件包更新命令

系统类型命令
Debian系统dpkg --install package_file
Red Hat系统rpm -U package_file

3.7 列出已经安装的软件包列表

表9 软件包列表命令

系统类型命令
Debian系统dpkg --list
Red Hat系统rpm -qa

3.8 判断软件是否安装

表10 软件包状态命令

系统类型命令
Debian系统dpkg --status package_name
Red Hat系统rpm -q package_name

3.9 显示已经安装的软件包的信息

在已知已安装软件包名称的情况下,可以显示该软件包的描述信息
表11 软件包信息查看命令

系统类型命令
Debian系统apt-chche show package_name
Red Hat系统yum info package_name

3.10 查看某具体文件由哪个软件包安装

表12 查询文件所属命令

系统类型命令
Debian系统dpkg --search file_name
Red Hat系统rpm -qf file_name
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux系统软件包管理——dpkg、apt-get、rpm、yum 的相关文章

随机推荐