Contents
1.38. 配置Yum软件仓库¶
1.38.1. Centos7使用互联网yum¶
#更换阿里源国内源
cp -rf /etc/yum.repos.d/CentOS-Base.repo{,.bak}
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#在国内安装包会很慢,可以改为aliyun的epel源,先备份epel本身的源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo #可选
#生成缓存
yum clean all && yum makecache
1.38.2. Yum的特点与基本用法¶
yum的基本用法
yum list # 所有软件列表
yum install 包名 # 安装包和依赖包
yum -y update # 升级所有包版本,依赖关系,系统版本内核都升级
yum -y update 软件包名 # 升级指定的软件包
yum -y ss -tnl| grep 3306 # 不改变软件设置更新软件,系统版本升级,内核不改变
yum search mail # yum搜索相关包
yum grouplist # 软件包组
yum -y groupinstall "Virtualization" # 安装软件包组
rpm -ql gstreamer # 不安装软件查看包含文件
yum clean all # 清除var下缓存
yum repolist all #列出所有仓库
yum list all #列出仓库中所有软件包
yum info #查看软件包信息
yum install #安装软件包
yum reinstall #重新安装软件包
yum update #升级软件包
yum remove #移除软件包
yum clean all #清除所有仓库缓存
yum check-update #检查可更新的软件包
yum grouplist #查看系统中已经安装的软件包组
yum groupinstall #安装指定的软件包组
yum groupremove #移除指定的软件包组
yum groupinfo #查询指定的软件包组信息
yum provides screen #根据命令查询yum包中的名称
yum makecache #重新做缓存
[root@localhost ~]#yum list extras
注:也就是通过其他网站下载安装的rpm包。
要列出资源库中所有可以安装或更新的rpm包,命令如下。
[root@localhost ~]#yum list
要列出资源库中特定的可以安装或更新以及已经安装的rpm包,命令如下。
[root@localhost ~]#yum list sendmail
[root@localhost ~]#yum list gcc*
注意
可以在rpm包名中使用匹配符,如上面的例子列出所有以gcc开头的rpm包。
要搜索匹配特定字符的rpm包的详细信息,命令如下。
[root@localhost ~]#yum search wget
要搜索包含特定文件名的rpm包,命令如下。
[root@localhost ~]#yum provides realplay
(4)通过yum操作暂存信息(/var/cache/yum)要清除暂存的rpm包文件,命令如下。
[root@localhost ~]#yum clean packages
要清除暂存的rpm头文件,命令如下。
[root@localhost ~]#yum clean headers
要清除暂存中旧的rpm头文件,命令如下。
[root@localhost ~]#yum clean oldheaders
要清除暂存中旧的rpm头文件和包文件,命令如下。
[root@localhost ~]#yum clean 或
[root@localhost ~]#yum clean all
#下载对应版本 repo 文件, 放入 /etc/yum.repos.d/ (操作前请做好相应备份)
cp -rf/etc/yum.repos.d/CentOS-Base.repo{,_bak}
# 163的Centos5~6~7 yum源下载地址
http://mirrors.163.com/.help/centos.html
1.38.3. 基于ISO镜像构建本地Yum软件仓库¶
配置本地yum步骤¶
[root@pxe-server ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 4.3G 0 rom
创建挂载点后进行挂载操作,并设置成开机自动挂载
[root@pxe-server ~]# mount /dev/sr0 /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@linuxprobe yum.repos.d]# vim /etc/fstab
/dev/cdrom /mnt/ iso9660 defaults 0 0
[root@pxe-server ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
sr0 11:0 1 4.3G 0 rom /mnt
[root@pxe-server ~]# cp -rf /etc/yum.repos.d/CentOS-Base.repo{,._BAK}
[root@pxe-server yum.repos.d]# cat > /etc/yum.repos.d/CentOS-Base.repo <<EOF
[yum]
name=Centos7
baseurl=file:///mnt
enabled=1
gpgcheck=1
gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-7
EOF
[root@pxe-server yum.repos.d]# yum clean all #清空YUM cache
[root@pxe-server yum.repos.d]# yum install screen -y
1.38.4. Centos7基于HTTP构建局域网yum源¶
由于ISO镜像中的软件包太少、太老,所以我的实验使用的yum源是阿里云镜像源;
但是阿里云镜像源必须要连接外网才可以使用,做实验时倒无所谓;
但是在公司部署大量服务器时会占用出口带宽。另外有些特殊的镜像源架设在国外,使用起来很不稳定。
所以本地yum源仓库时必要的
下面是我在部署公司本地yum仓库时的具体部署步骤(以epel-7源为例):
1、部署环境:
系统:Centos7 x86_64
应用服务:httpd、createrepo、reposync
镜像源:https://mirrors.aliyun.com/repo/epel-7.repo
2、现在阿里云镜像源repo文件到本地:
[root@localhost ~] wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
3、安装httpd服务,用于提供存放yum源:
[root@localhost ~] yum install httpd -y
使用默认配置即可,如果有特殊需求可以修改配置文件/etc/httpd/conf/httpd.conf
http默认家目录/var/www/html
4、安装yum-utils提供reporsync服务:
[root@localhost ~] yum install yum-utils -y
5、选择指定仓库标识作为本地yum源:
执行yum repolist命令查看yum仓库标识
[root@localhost ~]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.163.com
* epel: mirrors.aliyun.com
* extras: mirrors.163.com
* updates: mirrors.163.com
repo id repo name status
base/7/x86_64 CentOS-7 - Base 9,363
epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 11,681
extras/7/x86_64 CentOS-7 - Extras 380
updates/7/x86_64 CentOS-7 - Updates 1,838
repolist: 23,262
我使用epel作为本地yum源,用/var/www/html作为yum仓库根目录
[root@localhost ~]# reposync -r epel -p /var/www/html/
命令执行完毕后,会将阿里云中的epel源同步到本地/var/www/html中;在/var/www/html中自动创建epel目录用于存放rpm包;第一次同步是时间可能较长,大概1W多个rpm包。
| 19 kB 00:00:00
(11680/11681): zvbi-fonts-0.2.35-1.el7.noarch.rpm | 116 kB 00:00:00
(11681/11681): xonotic-data-0.8.2-1.el7.noarch.rpm | 873 MB 00:14:38
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# ll /var/www/html/
total 4
drwxr-xr-x. 31 root root 4096 May 27 23:50 epel
6、createrepo 命令创对/var/www/html/epel下的 rpm 包 创建为本地的 YUM 仓库,目的是为生成repodata目录并自动创建索引信息
[root@localhost ~]# createrepo -pdo /var/www/html/epel/ /var/www/html/epel/ #第一个目录是repodata存放目录,第二个目录是需要生成索引信息yum源仓库目录
Spawning worker 0 with 5841 pkgs
Spawning worker 1 with 5840 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@localhost ~]# ll /var/www/html/epel/repodata/
total 34824
-rw-r--r--. 1 root root 2950038 May 28 02:09 458c248cc2fc1f9be754a7fd20f576c4acd231e32a49dfe26ba441d9ef1e8196-other.sqlite.bz2
-rw-r--r--. 1 root root 9980489 May 28 02:09 691ac5899b99b6a7d6de2c03f8706ab40a4104ffa95169837cd53860be9bd08c-filelists.sqlite.bz2
-rw-r--r--. 1 root root 9029887 May 28 02:09 9efa5c655cbaa93cfe74fa88f1521a00cdd7575a1ee537b3285c2f739470cd78-filelists.xml.gz
-rw-r--r--. 1 root root 6186568 May 28 02:09 b833e13dd3f617ae5c2f228991fcaecaf5b2602844da466fae2b6eef2578e64e-primary.sqlite.bz2
-rw-r--r--. 1 root root 3369194 May 28 02:09 f5dc4532b7ee4bc249b397e441842f684dc9df3b6b37cfb709080802c4fe9fce-primary.xml.gz
-rw-r--r--. 1 root root 2101964 May 28 02:09 f9f0522ce0356e3e95b0849e59ebfe35870c4359a8d1c6447b1d017a23ececbe-other.xml.gz
-rw-r--r--. 1 root root 3012 May 28 02:09 repomd.xml
7、验证本地yum源是否能正常使用:
登录其他内网其他服务器,要能与yum源服务器通信;编写repo文件:
vim /etc/yum.repos.d/epel-7.repo内容如下
[epel]
name=local epel
baseurl=http://yum源服务器IP/epel
enabled=1
gpgcheck=0
备份其他repo文件至/etc/yum.repos.d/repobak目录下,以防影响测试:
[root@localhost yum.repos.d]# ll /etc/yum.repos.d/
total 8
-rw-r--r--. 1 root root 79 May 28 17:26 epel.repo
drwxr-xr-x. 2 root root 4096 May 28 17:25 repobak
执行yum clean all、yum makecache:
[root@localhost yum.repos.d]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: epel
Cleaning up everything
[root@localhost yum.repos.d]# yum makecache
Loaded plugins: fastestmirror
epel | 2.9 kB 00:00:00
(1/3): epel/primary_db | 5.9 MB 00:00:00
(2/3): epel/filelists_db | 9.5 MB 00:00:00
(3/3): epel/other_db | 2.8 MB 00:00:00
Determining fastest mirrors
Metadata Cache Created
#上面信息表明本地epel源被正常缓存;表明配置成功。
7、为保证本地yum源能和阿里云镜像源同步,可以通过脚本定时任务实现:
vim /root/yum-update.sh
#!/bin/bash
datetime=`date +"%Y-%m-%d"`
exec > /var/log/epel.log #同步日志输出
reposync -d -r epel -p /var/www/html/ #同步镜像源
if [ $? -eq 0 ];then
createrepo --update /var/www/html/epel #每次添加新的rpm时,必须更新epel索引信息
echo "SUCESS: $datetime epel update successful"else
echo "ERROR: $datetime epel update failed"fi
#定时任务:每周六凌晨三点同步yum源
crontab -e
0 3 * * 6 /bin/bash /root/yum-update.sh
参考文献 centos7系统配置本地yum源
https://www.zstack.io/help\_support/detail.php?id=83
1.38.5. YUM源软件包扩展¶
当要使用挂载移动硬盘时需要使用ntfs-3g软件包支持,而光盘镜像中没有该软件包,此时需要往YUM源端添加ntfs-3g软件包 添加方式如下:
(1)切换到/var/www/html/centos目录,官网下载ntfs-3g软件包
cd /var/www/html/centos/
wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/n/ntfs-3g-2017.3.23-11.el7.x86_64.rpm
wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/n/ntfs-3g-devel-2017.3.23-11.el7.x86_64.rpm
(2)createrepo命令更新软件包,如下新增其他软件包,把软件包下载到本地,然后通过createrepo更新即可。
createrepo -- update centos/
(3)客户端YUM进行验证,安装ntfs-3g软件包。
1.38.6. 同步外网yum源¶
把外网yum源中所有软件包同步到本地,完善本地yum源的软件包数量以及完整性。
reposync可以同步几乎所有的YUM源,下面以reporsync为案例,同步外网YUM源软件至本地。步骤如下:
①:下载CentOS源文件到/etc/yum.repos.d/,安装reposync命令工具
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
yum clean all
yum -y install yum-utils createrepo
yum repolist
先安装局域网yum (服务器端 192.168.20.200)
mkdir -p /var/www/html/centos
mount /dev/sr0 /mnt/
cp -rf /mnt/Packages/* /var/www/html/centos
yum -y install createrepo*
cd /var/www/html/
createrepo centos/
yum install httpd-devel -y
useradd apache -g apache
systemctl restart httpd.service
setenforce 0
systemctl stop firewalld.service
[root@pxe-server html]# ps -ef| grep httpd
root 8499 1 0 10:59 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 8500 8499 0 10:59 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 8501 8499 0 10:59 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 8502 8499 0 10:59 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 8503 8499 0 10:59 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 8504 8499 0 10:59 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 8545 7306 0 11:01 pts/0 00:00:00 grep --color=auto httpd
yum客户端配置:
[root@pxe-server rules.d]# cat > /etc/yum.repos.d/CentOS-Base.repo <<EOF
[base]
name="CentOS7 HTTP YUM"
baseurl=http://192.168.20.200/centos/
gpgcheck=0
enabled=1
[updates]
name="CentOS7 HTTP YUM"
baseurl=http://192.168.20.200/centos
gpgcheck=0
enabled=1
EOF
yum clean all # 清空YUM cache
yum install ntpd -y
yum remove nginx -y
②通过reposync 命令工具获取外网YUM 源所有软件包, -r 指定repolist id , 默认不 加-r 表示获取外网所有YUM 软件包, -P 参数表示指定下载软件的路径。
reposync -r base -p /var/www/html/centos/
reposync -r updates -p /var/www/html/centos/
③ 通过reposync工具下载完所有的软件包之后,需要执行createrepo更新本地YUM仓库。
createrepo /var/www/html/centos
至此本地局域网YUM就同步完成互联网的yum源信息了。后续的新包可以直接安装使用了。
1.38.7. 几个不错的yum源¶
CentOS 自带的官方 yum源中由于去除了很多有版权争议的软件,因此可使用的软件种类并不丰富, 而且软件版本都普遍较低,对于软件bug修复、更新也很慢,当需要使用最新稳定版本的软件时, 可能需要手动进行软件更新,操作比较麻烦。下面介绍几个不错的yum源,以供软件升级和漏洞修复使用。
EPEL(Extra Pockages for Enterprise Linux,企业版Linux附加软件包), 是一个由特别兴趣小组创建、维护并管理,针对红帽企业版Linux(RHEL)及其衍生发行版 (例如CentOS、Scientific Linux)的一个高质量附加软件包项目。 其官方网址为:
http://fedoraproject.org/wiki/EPEL/zh-cn,
EPEL的软件包不会与企业版Linux官方源中的软件包发生冲突,或者互相替换文件。因此可以放心使用。
EPEL包含一个叫做“epel-release”的包,这个包包含了EPEL源的gpg密钥和软件源信息。 可以通过yum命令将这个软件包安装到企业级Linux发行版上。这样就可以使用最全面、最稳定的Linux软件包了。 除了epel-release源之外,还有一个叫做“epel-testing”的源,这个源包含最新的测试软件包, 其版本很新但是安装有风险,可以根据情况自行斟酌使用。
相关的EPEL可以从EPEL官方网站下载到,针对CentOS系统,有EL5、EL6、EL7三个版本, 分别针对CentOS 5.x、CentOS 6.x、CentOS 7.x三个系列版本。
读者可根据系统环境进行下载使用。
RPMForge是一个第三方软件源仓库,也是CentOS官方社区推荐的第三方yum源, 它为CentOS系统提供了超过10000个软件包,被CentOS社区认为是最安全也是最稳定的一个软件仓库。 但是由于这个安装源不是CentOS本身的组成部分,因此要使用RPMForge,需要手动下载并安装。
RPMForge的官方网站是
http://repoforge.org/
可以在
http://pkgs.repoforge.org/rpmforge-release/
下载 RHEL/CentOS 各个版本的“rpmforge-release”包,这样就可以使用RPMForge提供的丰富软件了。
1.38.8. Centos7自建Openstack Yum源¶
参考文献:
1.38.9. 官方源、镜像源汇总¶
阿里的yum源