五、学习笔记-Linux软件包管理(1)

流行的两种软件包管理机制

(1)Debian Linux首先提出“软件包”的管理机制—Deb软件包
将应用程序的二进制文件、配置文件、man/info帮助页面等文件合并打包在一个文件中,用户使用软件包管理器直接操作软件包,完成获取、安装、卸载、查询等操作。
(2)Redhat Linux基于这个理念推出了自己的软件包管理机制—Rpm软件包
(3)随着Linux操作系统规模不断扩大,系统中软件包间复杂的依赖关系,导致Linux用户麻烦不断
(4)Debian Linux开发出了APT软件包管理器
1)检查和修复软件包依赖关系
2)利用Internet网络帮助用户主动获取软件包
(5)APT工具再次促进了Deb软件包更为广泛地使用,成为Debian Linux的一个无法替代的亮点。

软件包分类

Ubuntu有两种类型的软件包 :二进制软件包(deb)和源码包(deb-src)

  • 二进制软件包(Binary Packages):它包含可执行文件、库文件、配置文件、man/info页面、版权声明和其它文档。
  • 源码包(Source Packages):包含软件源代码、版本修改说明、构建指令以及编译工具等。先由tar工具归档为.tar.gz文件,然后再打包成.dsc文件。
    在用户不确定一个软件包类型时,可以使用file命令查看文件类型。
    Ubuntu有两种类型的软件包:二进制软件包(deb)和源码包(deb-src)
    二进制软件包(Binary Packages):它包含可执行文件、库文件、配置文件、man/info页面、版权声明和其它文档。
    源码包(Source Packages):包含软件源代码、版本修改说明、构建指令以及编译工具等。先由tar工具归档为.tar.gz文件,然后再打包成.dsc文件。

在用户不确定一个软件包类型时,可以使用file命令查看文件类型。

Ubuntu@linux:~$ file g++_4%3a4.6.3-1ubuntu5_i386.deb 
g++_4%3a4.6.3-1ubuntu5_i386.deb: Debian binary package (format 2.0)

软件包命名

Filename_Version-Reversion_Architecture.deb

Filename :代表软件的名称
Version:代表软件版本
Reversion:代表修订版本
Architecture:代表体系结构

常用软件包管理工具

类别 常用工具举例 描述
命令行 dpkg-deb、dpkgapt 在命令行模式下完成软件包管理任务。为完成软件包的获取、查询、软件包依赖性检查、安装、卸载等任务,需要使用各自不同的命令
文本窗口界面 dselest、aptitude、tasksel 在文本窗口模式中、使用窗口和菜单可以完成软件包管理任务
图形界面 synaptic 在 X-Window图形桌面环境中运行,具有更好的交互性、可读性、易用性等特点

dpkg是最早的Deb包管理工具,它在Debian一提出包管理模式后就诞生了。使用dpkg可以实现软件包的安装、编译、卸载、查询,以及应用程序打包等功能。但是由于当时Linux系统规模和Internet网络条件的限制,开发人员没有考虑到操作系统中软件包存在如此复杂的依赖关系,以及帮助用户获取软件包(获取存在依赖关系的软件包)。为了解决软件包依赖性问题和获取问题,就出现了APT工具。

dpkg相关命令

dpkg -i :安装一个在本地文件系统上存在的Debian软件包。
dpkg -r :移除一个已经安装的软件包
dpkg -P :移除已安装软件包及配置文件
dpkg -L :列出安装的软件包清单
dpkg -S :显示软件包的安装状态
dpkg -reconfigure :重新配置一个已经安装的软件包。

软件包优先级

类别 含义 补充说明
Required(必须) 该级别软件包是保证系统正常运行所必须的 包含所有必要的系统工具。尽管Require级别的软件不能满足整个系统的服务,但至少能够保证系统正常启动。如果删除其中一个软件包,系统将受到损坏而无法恢复,例如bash、mount、upstart
Important(重要) 若缺少该级别软件包,系统会运行困难或不好操作 该级别软件包是一些实现系统底层功能的程序,例如aptitude、ubuntu-keyring、cpio
Standard(基本) 该级别软件包是任何Linux系统的标准件 该级别的软件包可以支撑命令行控制台系统运行。通常作为默认安装选项,例如 memtest86、telnet、pppconfig、ed
Optional(可选) 该级别软件包是否安装不影响系统的正常运行 该级别的软件包用于满足用户特定的需求或服务。它们不会影响系统的正常运行,例如 X11、mysql、openoffic.org
Extra(额外) 该级别软件包可能与其他高级别软件包存在冲突

软件包的状态

(1)期望状态:标记用户希望将某个软件包处于的状态。
(2)当前状态:标记用户操作该软件包后的最终状态。

类别 状态 状态符 描述
期望状态 未知(unknown) u 用户并没描述他想对软件包进行什么操作
已安装(install) i 该软件包已安装或升级
删除(remove) r 软件包已删除,但不想删除任何配置文件
清除(purge) p 用户希望完全删除软件包,包括配置文件
保持(hold) h 用户希望软件包保持现状,例如,用户希望保持当前的版本、当前的状态
当前状态 未安装(Not) n 该软件包描述信息已知,但仍未在系统中安装
已安装(installed) i 已完全安装和配置了该软件包
仅存配置(config-file) c 软件包已删除,但配置文件仍保留在系统中
仅解压缩(Unpacked) U 已将软件包中的所有文件释放,但尚未执行安装和配置
配置失败(Failed-config) F 曾尝试安装改软件包,但由于错误没有完成安装
不完全安装(Half-installed) H 已开始进行提取后的 配置工作,但由于错误没有完全安装

软件包的依赖性关系

依赖关系 关系描述
依赖(depends) 要运行软件包A必须安装软件包B,甚至还依赖于B的特定版本。通常版本依赖有最低版本限制
推荐(recommends) 软件包维护者认为所有用户都不会喜欢缺少软件包A的某些功能,而这些功能需要B来提供
建议(suggests) 软件包B能够增强软件包A的功能
替换( replaces) 软件包B安装的文件被软件包A中的文件删除或覆盖了
冲突(conflicts) 如果系统中安装了软件包B,那么软件包A将无法运行。“Conflicts”常和“replaces”同时出现
提供(provides) 软件包A中包含了软件包B中的所有文件和功能

获取系统中已安装软件包的信息

(1)查看当前系统中已经安装的软件包信息可使用dpkg-l命令。“dpkg-l”命令可以与less和grep命令配合使用。

sudo gpkg -l vim
sudo gpkg -l | less

(2)查询系统已经安装的指定软件包的详细信息(dpkg -s)

sudo gpkg -s vim

五、学习笔记-Linux软件包管理(1)_第1张图片

(3)显示指定名称的软件包安装到系统中的文件列表(dpkg -L)

sudo dpkg -L vim

五、学习笔记-Linux软件包管理(1)_第2张图片

(4)查询系统中的某个文件属于哪个软件包(dpkg -S)
(5)查看Deb包中包含的文件列表(dpkg -c)

你可能感兴趣的:(Linux)