Linux学习--RPM软件包管理、YUM软件管理
1.源代码形式
1.1源代码形式:
绝大多数开源软件都是直接以源代码形式发布,源代码一般会被打包成tar.gz的归档压缩文件,程序源代码需要编译成二进制形式之后才能够运行使用。
1.2源代码基本编译流程:
(1) ./configure 检查编译环境、相关库文件以及配置参数并生成makefile
(2) make 对源码进行编译,生成可执行文件
(3) make install 将生成的可执行文件安装到当前计算机中
1.3优缺点:
源代码形式的软件使用起来较为麻烦,但是兼容性及可控制性较好。开源软件一般都会大量使用其他开源软件的功能,所以开源软件会有大量的依赖关系(使用某软件需要先安装其他软件)。
优点:适用所有系统,可定制
缺点:操作复杂,编译时间较长,容易出现错误
2.RPM软件包管理
2.1RPM简介
通过将源代码基于特定平台系统编译为可执行文件,并保存依赖关系,来简化开源软件的安装管理。简化了软件安装的流程。
2.2RPM基础命令
- 安装软件: rpm -i software.rpm
- 卸载软件: rpm -e software
- 升级形式安装: rpm -U software-new.rpm
rpm支持通过http、ftp协议安装软件:
rpm -ivh http://www.linuxcast.net/software.rpm
可以加入以下参数:
-v 显示相关信息
-h 显示进度条
2.3RPM查询
RPM会保存软件相关的很多信息,可通过以下命令查询
- rpm -qa 列出所有安装的rpm软件
- rpm -qf filename 查询目标文件属于哪个rpm包
- rpm -qi packagename 查询指定已安装rpm软件的信息
- rpm -qip software.rpm 查询rpm文件的信息
- rpm -qlp software.rpm 查询rpm文件包含的文件
2.4RPM验证
软件在传播的过程中可能会被恶意的修改,所以为了安全起见现代系统都加入了对软件的验证功能
- 验证一般使用非对称加密算法,所以需要一个**
- 导入**: rpm -import RPM-GPG-KEY-CentOS-6
- 验证rpm文件: rpm -K software.rpm
- 验证已安装的软件(验证哪些不该被修改的文件被修改了): rpm -V software
3.YUM软件管理
3.1 yum简介
YUM是一个RPM的前端程序,主要目的用来解决RPM依赖关系问题。
3.2 yum特点
- 自动解决依赖关系
- 可以对RPM进行分组,并基于组进行安装操作
- 引入仓库概念,支持多个仓库
- 配置简单
3.3 yum仓库
仓库是用来存放现在所有的rpm软件包,当使用yum安装一个rpm软件时,如果存在依赖关系,就会自动在仓库中查找依赖软件并安装。仓库可以是本地的,也可以是通过http、ftp形式使用集中的、统一的网络仓库。
yum使用仓库保存管理rpm软件包,仓库的配置文件保存在/etc/yum.repos.d/目录下,格式如下:
[仓库名]
name=(描述)
baseurl=http://www.linux.net/yum/rpms/
enable=1(仓库是否启用?1/0)
gpgcheck=0(是否打开验证?1/0)
- 仓库可以使用file、http等方式
- yum配置文件必须以.repo结尾
- 一个配置文件内可以保存多个仓库的配置信息
- /etc/yum.repos.d/目录下可以存在多个配置文件
3.4 yum管理软件的常用命令:
- yum install software-name 安装指定软件
- yum remove software-name 卸载指定软件
- yum update software-name 升级指定软件
- yum search keyword 搜索
- yum list(all | installed | recent | updates) 列出全部、安装的、最近的、更新的软件
- yum info softwarename 显示指定软件的信息
- yum clean all 清除缓存
3.5 建立本地仓库
可以通过以下方式手工创建yum仓库:
①将所有rpm文件拷贝到一个文件夹中
②通过rpm命令手工安装createrepo软件
③运行命令createrepo -v /rpm-directory
④如果有分组信息,则在运行命令的时候使用-g参数指定分组文件:createrepo -g /tmp/*compsxml /rpm-directory
CentOS/RHEL的分组信息保存在光盘repodata/目录下,文件名以comps.xml结尾的xml文件
创建好之后本机可以通过file方式直接使用,如果需要作为对外的YUM仓库服务器,可以通过HTTP,FTP或NFS协议共享出去。