先附上 deepin 的 软件包管理手册
- List item
1、软件包管理简介
Linux 下的安装包分为两类:
- 源码包
Linux 最早的软件安装包本质上就是一个 源代码包。优点:开源、可以自由选择功能、由于是本机编译安装所以执行效率更高、卸载方便;缺点:安装步骤较多且出现错误、编译时间长、编译过程中一旦出错对新手不友好…… - 二进制包
与 Windows 下的软件安装包类似。优点:安装升级和卸载简单、安装速度快;缺点:无法查看源代码、功能选择不灵活、依赖性
依赖性
依赖就像在 Windows 下,使用 eclipse 前必须配置好 Java 环境一样,比喻不恰当,但想表达的意思应该到了哈哈
- 树形依赖:a -> b -> c
- 环形依赖:a -> b -> c -> a
- 模块依赖:与上面两种不同,模块依赖是依赖具体的文件(一般以.so.2结尾)而不是包,只看模块名我们无法得知这个文件究竟是哪个包里面的,只能一个包一个包地试,现在,我们可以用这个查询网站查询这个模块属于哪个模块。
2、rpm 命令管理
2.1 rpm包命名规则
http-2.2.15-15.el6.centos.1.i686.rpm
- httpd 软件包名
- 2.2.15 软件版本号
- 15 软件发布的次数
- el6.centos 适合的Linux平台
- i686 适合的硬件平台
- rpm 扩展名
2.2 安装命令
安装前必须进入包所在文件夹下,并使用包全名。
rpm -ivh 包全名
-i(install) 安装
-v(verbose)显示详细信息
-h(hash)显示进度
--nodeps 不检测依赖性
2.3 升级与卸载
- 升级新的包对系统来说也是一个陌生的包,它的本质就是安装,所以必须用包全名,
rpm -Uvh 包全名
-U(upgrade) 升级
- 要卸载的包必然是已经存在的,所以可以使用包名
rpm -e 包全名
-e(erase) 升级
--nodeps 不检查依赖性
2.4 rpm包查询
- 查询包是否安装
rpm -q 包名
-q(query) 查询
- 查询所有已经安装的rpm包
rpm -qa 包名
-q(query) 查询
-a(all) 所有
- 查询软件包详细信息
rpm -qip 包名
-q(query) 查询
-i(information) 所有
-p(package)查询未安装包信息(就是查一下如果要安装某一个软件,系统会把它的文件放在哪里)
- 通过文件名查询该文件属于哪个包(前提是该文件是通过 rpm 安装的)
rpm -qf 系统文件名
-q(query) 查询
-f(file) 文件
- 查询软件包的依赖性
rpm -qf 系统文件名
-q(query) 查询
-R(requires) 查询依赖性
-p(Package)查询未安装的包的依赖性
以下待更新
2.5 rpm包检验
3、yum 在线管理
帮我们解决安装软件时遇到的依赖问题(redhat 提供的 yum 收费、centos 提供的 yum 免费)。虽然可以自动安装,但不会进行依赖查询。
4、源码包管理
5、脚本安装包
所谓的脚本安装包,就是将复杂的软件安装过程写成程序脚本,下载这个脚本到本地、执行,可以实现 “一键安装”,其本质还是 源码包 和 二进制包。