软件包管理简介
软件包分类
- 源码包
- 二进制包(RPM包,系统默认包)
源码包
源码包的优点:
- 开源,如果有足够的能力,可以修改源代码
- 可以自由选择所需的功能
- 软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高
- 卸载方便
源码包的缺点:
- 安装过程步骤较多,尤其安裝较大的软件集合时(如LAMP环境搭建),容易出现拼写错误
- 编译过程时间较长,安装比二进制安装时间长
- 因为是编译安装,安装过程中一旦报错新手很难解决
RPM包
二进制包的优点:
- 包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载
- 安装速度比源码包安装快的多
二进制包的缺点:
- 经过编译,不再可以看到源代码
- 功能选择不如源码包灵活
- 依赖性
RPM包管理 - rpm命令管理
RPM包命名原则
- httpd : 包名
- httpd-2.2.15-15.e16.centos.1.i686.rpm : 包全民
httpd-2.2.15-15.e16.centos.1.i686.rpm
- httpd : 软件包名
- 2.2.15 : 软件版本
- 15 : 软件发布的次数
- e16.centos : 适合的 Linux平台
- i686 : 适合的硬件平台
- rpm : rpm包扩展名
PRM包依赖性
- 树形依赖 : a –> b –> c
- 环形依赖 : a –> b –> c –> a
- 模块依赖 : 某个RPM包A是依赖于某个模块B的,也就是说只要装了B,A就自动安装了
包全名和包名
- 包全名:操作的包是没有安装的软件包时,使用包全名。而且要注意路径
- 包名:操作已经安装的软件包时,使用包名。是搜索/var/ib/rpm/中的数据库
RPM安装
1 | rpm -ivh 包全名 |
参数:
- -i(install) : 安装
- -v(verbose) : 显示详细信息
- -h(hash) : 显示进度
- –nodeps : 不检测依赖性
- -U(update) : 升级
- -e(erase) : 卸载
示例:
1 | rpm -ivh httpd-2.2.15-15.e16.centos.1.i686.rpm |
RPM包的查询
查询是否安装
参数:
- -q(query) : 查询
- -a(all) : 所有
- -i(information) : 包的信息
- -l(list) : 包的位置
- -R(requires) : 包的依赖性
1 | # 查询特定包是否安装 |
RPM的校验
- -V(verify) : 校验指定RPM包中的文件
- 主要使用校验来检测RPM包是否被修改
- 检验检测的8个信息:
- S 文件大小是否改变
- M 文件的类型或文件的权限(rwx)是否被改变
- 5 文件MD5校验和是否改变(可以看成文件内容是否改变)
- D 设备的中,从代码是否改变
- L 文件路径是否改变
- U 文件的属主(所有者)是否改变
- G 文件的属组是否改变
- T 文件的修改时间是否改变
1 | rpm -V 已安装的包名 |
RPM包的文件提取
1 | rpm2cpio 包全名 | cpio -div .文件绝对路径 |
- rpm2cpio : 将rpm包转换为cpio格式的命令
- cpio : 是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件
示例:
1 | # 查询ls命令属于哪个软件包 |
RPM包管理 - yum在线管理
网络yum源
1 | vi /etc/yum.repos.d/CentOS-Base.repo |
- [base] : 容器名称,一定要放在[]中
- name : 容器说明,可以自己随便写
- mirrorlist : 镜像站点,这个可以注释掉
- baseurl : 我们的yum源服务器的地址。默认是 Centos官方的yum源服务器,是可以使用的,如果你觉得慢可以改成你喜欢的yum源地址
- enabled : 此容器是否生效,如果不写或写成enable=1都是生效,写成enable=0就是不生效
- gpgcheck : 如果是1是指RPM的数字证书生效,如果是0则不生效
- gpokey : 数字证书的公钥文件保存位置。不用修改
yum命令
常用命令
1 | # 查询所有可用的软件包列表 |
yum软件组管理命令
1 | # 列出所有可用的软件组列表 |
光盘yum源搭建
修改yum源,让网络yum源失效
1 | # 查看所有的yum源 |
yum是通过扫描yum源来进行安装的,所以只需要将不需要的远修改个名字就行.
比如现在光盘需要用到CentOS-Media.repo
,就需要将其它的修改,
1 | # 名字可以随意修改,这里使用约定俗成的做法 |
修改光盘yum源文件
1 | vim CentOS-Media.repo |
- 修改baseurl
- 设置enabled为1
源码包管理
源码包和RPM包的区别
- 安装之前的区别:概念上的区别
- 安装之后的区别:安装位置不同
RPM包默认安装路径
/etc/ | 配置文件安装目录 |
---|---|
/usr/bin/ | 可执行的命令安装目录 |
/usr/lib/ | 程序所使用的函数库保存位置 |
/usr/share/doc/ | 基本的软件使用手册保存位置 |
/usr/share/man/ | 帮助文件保存位置 |
源码包安装位置
自定义位置,一般是/usr/local/软件名/
安装位置不同带来的影响
RPM包安装的服务可以使用系统服务管理命令(service)来管理,例如RPM包安装的 apache的启动方法是:
1 | # 使用绝对路径 |
service httpd start
的本质其实就是去/etc/rc.d/init.d/
找到httpd,然后启动- 所以,对于使用源码包安装的服务,因为路径不一样,就不能使用
service httpd start
,只能使用绝对路径查找
源码包安装过程
- 我们可以同时安装PRM包和源码包 , 但是不推荐
- 源码包保存位置 :
/usr/local/src/
- 软件安装位置:
/usr/local/
流程 :
- 下载源码包
- 解压缩下载的源码包
- 进入解压缩目录
- .configure软件配置与检查
- 定义需要的功能选项。
- 检测系统环境是否符合安装要求。
- 把定义好的功能选项和检测系统环境的信息都写入 Makefile文件,用于后续的编辑。
- make : 编译
- make install 编译安装
现在已经下载了httpd-2.2.9.tar.gz
1 | # 解压缩 |
- 只有执行了make install后才会真正的安装,如果安装失败,我们执行
make clean
来清除临时文件即可.- 也就是说 , 源码包不需要卸载命令,直接删除安装目录即可。不会遗留任何垃圾文件。
脚本安装包与软件包的选择
- 脚本安装包并不是独立的软件包类型,常见安装的是源码包。
- 是人为把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装。
- 非常类似于 Windows下软件的安装方式
流程 :
- 下载软件
http://sourceforge.net/projects/webadmin/files/webmin - 解压缩,并进入加压缩目录
- 执行安装脚本