Linux的rpm包管理和配置yum源
Linux中的软件包分为源码包和二进制包(rpm包和系统默认包),虽然源码包可以自由设置功能且更适合自己的系统,但编译过程费时费力,容易出现错误,所以通常情况下还是使用更加高效快捷的rpm包。
1.rpm包命名规则
nginx-1.20.1-10.el7.x86_64.rpm
nginx #软件包名
1.20 #主版本号
1-10 #次版本号
el7 #rhel7(红帽7)适合的Linux平台
x86_64 #CPU的指令集(适合64位操作系统)[noarch:32位64位都支持/i4-686:32位/devel/软件开发包]
.rpm #扩展名
2.rpm包管理工具
2.1 rpm工具
rpm -ivh rpmname #安装rpm包(从本地的rpm数据库)
rpm -ivh https://rpmfind.net/linux/epel/7/x86_64/Packages/n/nginx-1.20.1-10.el7.x86_64.rpm #通过网络链接安装rpm包
rpm -Uvh rpmname #更新rpm包
rpm -qa #查询系统中所有的rpm包(通常搭配grep使用)
rpm -e rpmname #卸载rpm包
rpm -ql rpmname #查询该rpm包安装后在系统生成的所有文件
rpm -qf filename #查询该文件是哪个rpm包生成
rpm -qc rpmname #查询该rpm包的配置文件
rpm包的依赖关系是指一个rpm包安装或者运行时,需要依赖的其他rpm包。由于rpm工具指定哪个下哪个,无法自行解决依赖关系,使用起来比较麻烦,所以一般情况下使用可以自动解决依赖关系的yum工具。
2.2 yum工具
yum install rpmname #安装软件包
yum reinstall rpmname #重新安装软件包
yum update rpmname #更新软件包(更新的同时会保留旧版本的包)
yum upgrade rpmname #更新软件包(更新的同时会删除旧版本的包,会刷新内核,慎用!)
yum erase rpmname #卸载软件包(会删除rpm包及其依赖包还有所有的配置文件)
yum remove rpmname #卸载软件包(只会删除rpm包本身,不会删除依赖包和配置文件)
yum search 关键字 #查找yum仓库里所有和关键字相关的包
yum list #列出yum仓库所有软件包
yum history #yum操作历史
yum history undo 编号 #yum历史操作回滚
yum provides 命令 #查看该命令所在的软件包
yum repolist #查询yum源信息
yum clean all #清理yum缓存
yum makecache #缓存软件包信息
3. 配置yum源
因为Linux系统配置的yum源都是国外网站,下载起来十分缓慢,所以最好是将yum源配置为国内网站,或者是克隆一份放在自己的ftp或http服务器上,使用起来更加方便。许多大企业或大学都有自己开源镜像站,可以去直接配置这些网站的yum源。
3.1 配置aliyun的yum源
mkdir /etc/yum.repos.d/repo.back
mv /etc/yum.repos.d/* /etc/yum.repos.d/repo.back/ #备份自己的yum源
curl -o /etc/yum.repos.d/centos.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
#请求阿里云的yum源,这里以centos7为例,可以自己去网站找适配系统版本的复制链接即可
yum clean all #清理之前的缓存
yum makecache #生成缓存
这里阿里云的yum配置完成,可以直接使用,但是当网络环境不佳或者只能使用局域网时,最好还是克隆一份yum源到自己的服务器上,方便使用。
3.2 克隆yum源
yum -y install yum-utils #安装克隆工具
yum repolist #查询当前yum源仓库的数量以及名称
reposync -r base -r epel -r extras -r updates
#将4个yum源仓库一共30562个rpm包克隆到本地(默认克隆到当前目录下)
yum -y install createrepo #安装创建repo文件工具
createrepo base
createrepo epel
createrepo extras
createrepo updates #将下载的yum仓库制作成可用的yum源
一般情况下,会将克隆到的yum源安装在ftp或http服务器上,以便他人下载。
3.3 制作ftp服务器
yum -y install vsftpd #安装ftp
systemctl start vsftpd #启动ftp(查看ftp默认的21号端口是否开启来确认是否启动成功)
cd /var/ftp #cd到ftp的根目录
执行3.2的克隆操作,将yum仓库安装在ftp根目录下,并且createrepo创建repodata缓存,此时ftp服务器装备完成
在另一台需要使用ftp服务器yum源的服务器上进行以下操作,即可使用配置好的yum源
mkdir /etc/yum.repos.d/backup && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup
#备份yum源
cat >/etc/yum.repos.d/local.rpeo<<EOF
[base]
name=base
baseurl=ftp://ftp服务器的IP地址/base
enabled=1
gpgcheck=0
[epel]
name=epel
baseurl=ftp://ftp服务器的IP地址/epel
enabled=1
gpgcheck=0
[extras]
name=extras
baseurl=ftp://ftp服务器的IP地址/extras
enabled=1
gpgcheck=0
[updates]
name=updates
baseurl=ftp://ftp服务器的IP地址/updates
enabled=1
gpgcheck=0
EOF
#编辑repo文件
yum clean all #清理之前的缓存
yum makecache #生成缓存
yum repolist #确认rpm包和yum仓库数量是否一致
3.4 制作http服务器
yum -y install nginx #安装nginx
systemctl start nginx #启动nginx(查看http默认的80号端口是否开启来确认是否启动成功)
cd /usr/share/nginx/html #cd到http的根目录
执行3.2的克隆操作,将yum仓库安装在http根目录下,并且createrepo创建repodata缓存,此时http服务器装备完成,http的服务不只局限于局域网,使用起来更加方便。
在另一台需要使用http服务器yum源的服务器上进行以下操作,即可使用配置好的yum源
mkdir /etc/yum.repos.d/backup && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup
#备份yum源
cat >/etc/yum.repos.d/local.rpeo<<EOF
[base]
name=base
baseurl=http://http服务器的IP地址/base
enabled=1
gpgcheck=0
[epel]
name=epel
baseurl=http://http服务器的IP地址/epel
enabled=1
gpgcheck=0
[extras]
name=extras
baseurl=http://http服务器的IP地址/extras
enabled=1
gpgcheck=0
[updates]
name=updates
baseurl=http://http服务器的IP地址/updates
enabled=1
gpgcheck=0
EOF
#编辑repo文件
yum clean all #清理之前的缓存
yum makecache #生成缓存
yum repolist #确认rpm包和yum仓库数量是否一致