流行的两种软件包管理机制
(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、dpkg、apt | 在命令行模式下完成软件包管理任务。为完成软件包的获取、查询、软件包依赖性检查、安装、卸载等任务,需要使用各自不同的命令 |
文本窗口界面 | 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
(3)显示指定名称的软件包安装到系统中的文件列表(dpkg -L)
sudo dpkg -L vim
(4)查询系统中的某个文件属于哪个软件包(dpkg -S)
(5)查看Deb包中包含的文件列表(dpkg -c)