【Linux学习】RPM包管理
# 软件包简介
# 源码包
时间长,需要编译
-
脚本安装包
-
优点
-
开源
-
可以自由选择所需的功能
-
编译安装,所以更加适合自己的系统、稳定、效率高
-
卸载方便
-
# 二进制包
时间短,已编译,但是不能看源代码
-
Linux 不同系列最大的区别就是二进制包不同
-
RPM 包:RedHat 系列
-
系统默认包
# RPM 命令管理
# rpm
压缩文件至 .gz 格式(不能压缩目录)
原意:
- RPM Package Manager
执行权限:
- 所有用户
语法:
rpm [-ivh] 包全名 | |
-i:安装 | |
install | |
-U:升级 | |
Upgrade | |
-e:卸载 | |
erase | |
-v:显示详细信息 | |
verbose | |
-h:显示进度 | |
hash | |
-q:查询 | |
query | |
- -i:查询安装信息 | |
information | |
- -f:查询系统文件属于哪个软件包 | |
file | |
- -R:查询软件包的依赖性 | |
requires | |
- -p:查询未安装包信息 | |
package | |
-V:检验指定RPM包中的文件 | |
Verify | |
-a:所有 | |
all | |
--nodeps:不检测依赖性 | |
no depends |
# RPM 包命名规则
httpd-2.2.15-15.el6.centos.l.i686.rpm
-
httpd:软件包名
-
2.2.15:软件版本
-
15:软件发布的次数
-
el6.centos:适合的 Linux 平台
-
i686:适合的硬件平台
-
rpm:rpm 包扩展名
# RPM 包依赖性
-
树形依赖:a->b->c
-
环形依赖:a->b->c->a
# 安装、升级和卸载
-
包全名:操作的包是没有安装的包,且要注意路径
-
包名:操作的包是已经安装的软件包,使用包名
-
安装卸载都应该按依赖结构
rpm -e 只会卸载当前包,不会卸载依赖包
# 查询
rpm -q [ 包名 / 包全名 ] |
# 校验和文件提取
rpm -V [ 包名 ]
-
验证内容中的 8 个信息
shellS:文件大小是否改变
M:文件的类型或文件的权限(rwx)是否被修改
5:文件的MD5校验和是否改变
D:设备
L:文件路径是否改变
U:文件的属主(所有者)是否变化
T:文件的修改时间是否变化
-
文件类型
shellc:配置文件
config file
d:普通文件
documentation
g:“鬼”文件
ghost file,很少见,就是这个文件不该被这个RPM包含
l:授权文件
license file
r:描述文件
read me
# RPM 包中文件提取
# rpm2cpio
执行权限:
- 所有用户
语法:
rpm2cpio 包全名 | cpio -idv ./文件绝对路径 |
# cpio
执行权限:
- 所有用户
语法:
cpio [-idv] <[文件|设备] | |
-i:copy-in模式,还原 | |
-d:还原时自动新建目录 | |
-v:显示还原过程 |
# yum 在线管理
# IP 地址配置和网络 yum 源
# IP 地址配置方法
-
直接修改
/etc/sysconfig/network-scipts/ifcfg-ens33
-
setup
(CentOS6) -
nmtui
(CentOS7)
# 网络 yum 源
/etc/yum.repos.d/CentOS-Base.repo
-
[base]:容器名称
一定要放在 [] 中 -
name:容器说明
可以自己随便写 -
mirror:镜像站点
这个可以注释掉 -
baseurl:yum 源服务器的地址
默认是 CentOS 的官方的 yum 源服务器,是可以使用的,如果慢可换成其他 yum 源地址 -
enabled:此容器是否生效
enable=1:生效;enable=0:不生效;不写默认生效 -
gpgcheck:RPM 的数字证书是否生效
gpgcheck=1:生效;gpgcheck=0:不生效 -
gpgkey:数字证书的公钥文件保存位置
不用修改
# yum 命令
# 查询
查询所有可用软件包列表
yum list |
搜索服务器上所有和关键字相关的包
yum search 关键字 |
# 下载
yum -y install 包名 | |
(-y 自动回答yes) |
# 升级
yum -y update 包名 |
⚠️⚠️⚠️不加包名会升级 Linux 所有软件包,包括内核!⚠️⚠️⚠️
# yum 软件组管理
列出所有可用的软件组列表
yum grouplist |
安装指定软件组,组名可以由 grouplist 查询出来
yum groupinstall 软件组名 |
卸载指定软件组
yum groupremove 软件组名 |
# 光盘 yum 源搭建
-
挂载光盘
shellmount /dev/cdrom/ mnt/cdrom
-
让网络 yum 源文件失效
shellcd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak # 改名使这些文件失效
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
mv CentOS-Vault.repo CentOS-Vault.repo.bak
-
修改光盘 yum 源文件
- 修改光盘挂载点,/media/CentOS -> baseurl 为默认挂载点,/mnt/cdrom 为自己设置的光盘挂载点
shellvim CentOS-Media.repo
baseurl = file:///media/CentOS => baseurl = file:///mnt/cdrom
-
其余挂载点注释,否则会报错
-
使能:
enable = 0
=> `enable=1`` -
验证:
yum list
# 源码包管理
# 源码包和 RPM 包的区别
概念区别(安装之前的区别)、安装位置(安装之后的区别)
# RPM 包安装位置
/etc/
:配置文件安装目录/usr/bin/
:可执行的命令安装目录/usr/lib/
:程序所使用的函数库保存位置/usr/share/doc
:基本的软件使用手册保存位置/usr/share/man/
:帮助文件保存位置
# 源码包安装位置
/usr/local/软件名/
:Linux 给外部软件分配的安装位置
# 安装位置不同带来的影响
RPM 包:RPM 包安装的服务可以使用系统服务管理命令 (service) 来管理
systemctl start httpd | |
# 启动 apache 后没有现象,关闭防火墙 systemctl stop firewalld |
源码包:不能被系统服务管理命令管理,因为没有安装到默认路径,只能使用绝对路径管理
/usr/local/apache2/bin/apachectl start |
# 脚本安装包
# 安装
cd webmin-1.900 | |
./setup.sh | |
选项选择 |
# 其他
查询文件夹大小
du -sh 文件夹 |
防火墙开放固定端口
# 开放端口,--permanent 表示永久生效 | |
firewall-cmd --zone=public --add-port=[端口号]/tcp --permanent | |
# 重启防火墙服务后生效 | |
systemctl restart firewalld |