Day24-yum与rpm软件包管理2
- 1. 配置缓存rpm包
- 2. 为什么要缓存?
- 3. 组包相关指令
- 4. yum帮助与补全功能
- 4.1 补全
- 4.2 什么是yum源
- 4.3 常见互联网 yum 源
 
- 5. 搭建局域网YUM仓库实践
1. 配置缓存rpm包
修改yum.conf配置
[root@oldboy ~]# sed -i.bak 's#keepcache=0#keepcache=1#g' /etc/yum.conf
[root@oldboy ~]# grep keepcache /etc/yum.conf
keepcache=1
测试
[root@oldboy ~]# rpm -e nmap-ncat
error: Failed dependencies:nmap-ncat = 2:6.40-19.el7 is needed by (installed) nmap-2:6.40-19.el7.x86_64
[root@oldboy ~]# rpm -e nmap
[root@oldboy ~]# rpm -e nmap-ncat
[root@oldboy ~]# find  /var/cache/yum/x86_64/7/ -name "*.rpm"
/var/cache/yum/x86_64/7/base/packages/nmap-ncat-6.40-19.el7.x86_64.rpm
2. 为什么要缓存?
1)配置yum仓库,rpm来源。
 2)rpm更新了,老的就找不到了。
2.缓存rpm包方式二,只下载不安装(不用)
[root@oldboy ~]# yum install -y yum-plugin-downloadonly #插件
[root@oldboy ~]# yum install httpd -y --downloadonly --downloaddir=/tmp
3.清除所有yum缓存的软件包以及元数据
[root@oldboy ~]# yum clean all
[root@oldboy ~]# find  /var/cache/yum/x86_64/7/ -name "*.rpm"
4.只清除缓存的软件包
[root@oldboy ~]# yum clean packages
软件包,真正的软件。
 元数据,数据的数据。
3. 组包相关指令
[root@oldboy ~]# yum groups list
#安装一整个组的软件
[root@oldboy ~]# yum groups install Development tools \
Compatibility libraries \
Base Debugging Tools
#yum删除包组
[root@oldboy ~]# yum groups remove -y Base
安装系统reboot后。
1)在CentOS安装完毕,首先应该修改更新源,并升级到最新的系统。修改更新yum源的命令如下:
curl -s -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -s -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
2)把软件更新到最新(生产上线之前)
yum update -y
3)常用软件包。
 CentOS6和CentOS7都要安装的企业运维常用基础工具包
yum install tree nmap dos2unix lrzsz nc lsof wget tcpdump htop iftop iotop sysstat nethogs -y
CentOS7要安装的企业运维常用基础工具包
yum install psmisc net-tools bash-completion vim-enhanced -y 
| 软件包名 | 包含的核心命令 | 
|---|---|
| tree | tree 以树形结构显示文件和目录 | 
| nmap | nmap 扫描端口的工具 | 
| dos2unix | 转换脚本格式的工具 | 
| lrzsz | 包含上传(rz)下载(sz)文件工具 | 
| nc | 文件传输、端口检查工具 | 
| lsof | 反查端口进程,以及服务开发文件工具 | 
| wget | 下载软件包工具 | 
| tcpdump | 抓包、监听等重要排错工具 | 
| htop | 系统进程相关信息查看工具 | 
| iftop | 查看主机网卡带宽工具 | 
| sysstat | 含有 sar.iostat 等重要系统性能查看工具 | 
| nethogs | 显示进程的网络流量 | 
| psmisc | 含有killall、pstree等命令 | 
| net-tools | 含有netstat、ifconfig、route、arp等命令 | 
| bash-completion、bash-completion-extras | tab补全功能工具包 | 
| vim-enhanced | vim编辑器工具包 | 
安装系统时,选择包的时候,落下了一些没选的,安装后如何补救?
查看有哪些组包:
yum groups list
[root@oldboy ~]# yum groups mark convert #转换到原始的格式
[root@oldboy ~]# yum groups list #查看
Available Environment Groups: #可用的环境组包Minimal InstallCompute NodeInfrastructure ServerFile and Print ServerCinnamon DesktopMATE DesktopBasic Web ServerVirtualization HostServer with GUIGNOME Desktop        #安装桌面环境KDE Plasma WorkspacesDevelopment and Creative Workstation
Installed Groups:        #已经安装的组包。Compatibility LibrariesDevelopment ToolsMilkymistSecurity ToolsSystem Administration Tools
Available Groups:       #可用的组包。CinnamonConsole Internet ToolsEducational SoftwareElectronic LabFedora PackagerGeneral Purpose DesktopGraphical Administration ToolsHaskellLXQt DesktopLegacy UNIX CompatibilityMATEScientific SupportSmart Card SupportSystem ManagementTurboGears application frameworkXfce
Done
#安装环境组包,桌面环境包。
yum groupinstall "GNOME Desktop"
yum groupinstall "Smart Card Support"
#写一起
yum groupinstall "GNOME Desktop"  "Smart Card Support"
#yum删除包组(不用)
[root@oldboy ~]# yum groups remove -y Base
[root@oldboy ~]# yum search --help
yum [options] COMMAND
check          检查 RPM 数据库问题
check-update   检查是否有可用的软件包更新
clean          删除缓存数据 ***
deplist        列出软件包的依赖关系
downgrade      降级软件包
erase          从系统中移除一个或多个软件包
groups         显示或使用、组信息***
help           显示用法提示
history        显示或使用事务历史
info           显示关于软件包或组的详细信息
install        向系统中安装一个或多个软件包*****
list           列出一个或一组软件包*****
load-transaction 从文件名中加载一个已存事务
makecache      创建元数据缓存***
provides       查找提供指定内容的软件包*****
reinstall      覆盖安装软件包
repo-pkgs      将一个源当作一个软件包组,这样我们就可以一次性安装/移除全部软件包。
repolist       显示已配置的源
search         在软件包详细信息中搜索指定字符串***
shell          运行交互式的 yum shell
update         更新系统中的一个或多个软件包***
upgrade        更新软件包同时考虑软件包取代关系***
version        显示机器和/或可用的源版本。
G点:yum命令常用
install        向系统中安装一个或多个软件包*****
provides       查找提供指定内容的软件包*****
list           列出一个或一组软件包*****clean          删除缓存数据 ***
groups         显示或使用、组信息***
makecache      创建元数据缓存***
repolist       显示已配置的源
search         在软件包详细信息中搜索指定字符串***
update         更新系统中的一个或多个软件包***
upgrade        更新软件包同时考虑软件包取代关系***
面试:造火箭,拧螺丝。
4. yum帮助与补全功能
4.1 补全
yum [options] COMMAND
[root@oldboy ~]# yum #tab
check             deplist           groups            info              load-transaction  reinstall         search            upgrade
check-update      distro-sync       help              install           makecache         remove            shell             version
clean             downgrade         history           list              provides          repolist          update            
[root@oldboy ~]# yum clean #输入yum cl按tab补全,回车查看Error: clean requires an option: headers, packages, metadata, dbcache, plugins, expire-cache, rpmdb, all[root@oldboy ~]# yum help clean #查看选项后对应的命令。
clean [headers|packages|metadata|dbcache|plugins|expire-cache|all]Remove cached data
4.2 什么是yum源
要想使用 yum 工具安装、更新软件,就需要有一个包含各种rpm软件包的软件仓库,这样的软件仓库就称为yum源。
yum 源分为:
 1)互联网 yum 源(阿里云、网易、清华源)
 2)局域网私有 yum 源(自己做一个 yum 源,http/fp)(1.速度快。2.制作的rpm 放到 yum 源)。
如何变为公共 yum 源?
 a.ip 换公网 IP,给个域名 mirrors.oldboyedu.com
 b.用rsync 等工具实时和官方仓库做实时同步。
3)服务器本地 yum 源(上不了网,把iso 作为 yum 源)
4.3 常见互联网 yum 源
官方yum源:很多软件集合的在线仓库,也称为base基础源
 epel源:也称为拓展源,拥有很多base 源没有的软件
 第三方源:比如nginx,zabbix,Docker等软件开发方开源软件的官方仓库
 PS.yum 源默认都放在/etc/yum.repos.d/日录下,以*.repo 结尾
配置本地光盘镜像仓库
 
 1)rpm包来源光盘镜像
[root@oldboy ~]# mount  /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only
[root@oldboy ~]# ls /mnt
CentOS_BuildTag  EULA  LiveOS    RPM-GPG-KEY-CentOS-7          TRANS.TBL  isolinux
EFI              GPL   Packages  RPM-GPG-KEY-CentOS-Testing-7  images     repodata
2)让现有的yum源配置临时失效
[root@oldboy ~]# gzip /etc/yum.repos.d/*
[root@oldboy ~]# ls /etc/yum.repos.d/
CentOS-Base.repo.gz       CentOS-Media.repo.gz      CentOS-x86_64-kernel.repo.gz
CentOS-Base.repo.ori.gz   CentOS-Sources.repo.gz    CentOS7-Base-163.repo.gz
CentOS-CR.repo.gz         CentOS-Vault.repo.gz      epel.repo.gz
CentOS-Debuginfo.repo.gz  CentOS-fasttrack.repo.gz
测试安装
[root@oldboy ~]# yum install tree
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
There are no enabled repos.Run "yum repolist all" to see the repos you have.To enable Red Hat Subscription Management repositories:subscription-manager repos --enable <repo>To enable custom repositories:yum-config-manager --enable <repo>
3)配置本地光盘源
vim /etc/yum.repos.d/CentOS7-Cdrom.repo
[CentOS7-Cdrom]
name=This is local cdrom by oldboy for 77.
baseurl=file:///mnt
enabled=1
gpgcheck=0
===============================
[CentOS7-Cdrom]      #仓库名称
name                 #仓库描述信息
baseurl              #YUM源url地址 ,可以是file://(本地) ftp://(局域网) http://(公网)
enabled              #是否使用该YUM源(0代表禁用, 1代表激活)
gpgcheck             #是否验证软件签名(0代表禁用, 1代表激活)
深入理解Yum的gpgcheck
 https://segmentfault.com/a/1190000016214318
4)生成缓存,并测试
[root@oldboy ~]# yum makecache
yum install bind #########
[root@oldboy ~]# curl http://mirrors.163.com/centos/7.9.2009/isos/x86_64/sha256sum.txt
689531cce9cf484378481ae762fae362791a9be078fda10e4f6977bf8fa71350  CentOS-7-x86_64-Everything-2009.iso
b79079ad71cc3c5ceb3561fff348a1b67ee37f71f4cddfec09480d4589c191d6  CentOS-7-x86_64-NetInstall-2009.iso
07b94e6b1a0b0260b94c83d6bb76b26bf7a310dc78d7a9c7432809fb9bc6194a  CentOS-7-x86_64-Minimal-2009.iso
e33d7b1ea7a9e2f38c8f693215dd85254c3a4fe446f93f563279715b68d07987  CentOS-7-x86_64-DVD-2009.iso
5. 搭建局域网YUM仓库实践
1.关闭防火墙与selinux
[root@oldboy ~]# systemctl stop firewalld    #关闭防火墙
[root@oldboy ~]# systemctl disable firewalld #取消开机自启动
[root@oldboy ~]# setenforce 0  #临时关闭selinx。
[root@oldboy ~]# sed -i 's#SELINUX=enforcing#SELINUX=disable#g' /etc/selinux/config  #永久关闭selinx。#########################
[root@oldboy ~]# getenforce  #查看selinux状态
Enforcing
[root@oldboy ~]# setenforce  #调整selinux状态,0selinux临时失效
usage:  setenforce [ Enforcing | Permissive | 1 | 0 ]
[root@oldboy ~]# setenforce 0   #调整selinux临时失效
[root@oldboy ~]# getenforce 
Permissive
2.使用什么传输方式协议提供仓库
 file://
 http://
方法1:
yum install httpd -y
systemctl start httpd
#软件包放这里/var/html/www
方法2:
mkdir /var/html/www
cd /var/html/www
python -m SimpleHTTPServer 80 &>/dev/null &ftp://
yum install vsftpd -y
#/var/ftp
3.安装ftp传输工具
[root@oldboy ~]# yum install vsftpd -y  #安装
[root@oldboy ~]# systemctl start vsftpd #启动
[root@oldboy ~]# netstat -lntup|grep vsftp #检查端口 21
tcp6       0      0 :::21                   :::*                    LISTEN      66822/vsftpd        
[root@oldboy ~]# systemctl enable vsftpd #开机自启动
浏览器测试:ftp://10.0.0.129/
4.开启yum缓存功能
[root@oldboy ~]# grep keepcache /etc/yum.conf 
keepcache=0
[root@oldboy yum.repos.d]# sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf
[root@oldboy yum.repos.d]# grep keepcache /etc/yum.conf 
keepcache=1
[root@oldboy ~]# yum clean all
5.创建yum仓库本地目录,并创建元数据以及拷贝rpm base软件包
[root@oldboy ~]# mkdir /var/ftp/centos7
####创建元数据
[root@oldboy ~]# yum install createrepo -y
[root@oldboy ~]# createrepo /var/ftp/centos7/
[root@oldboy ~]# ls /var/ftp/centos7/
repodata
[root@oldboy ~]# tree /var/ftp/centos7/
/var/ftp/centos7/
`-- repodata|-- 01a3b489a465bcac22a43492163df43451dc6ce47d27f66de289756b91635523-filelists.sqlite.bz2|-- 401dc19bda88c82c403423fb835844d64345f7e95f5b9835888189c03834cc93-filelists.xml.gz|-- 5dc1e6e73c84803f059bb3065e684e56adfc289a7e398946574d79dac6643945-primary.sqlite.bz2|-- 6bf9672d0862e8ef8b8ff05a2fd0208a922b1f5978e6589d87944c88259cb670-other.xml.gz|-- 7c36572015e075add2b38b900837bcdbb8a504130ddff49b2351a7fc0affa3d4-other.sqlite.bz2|-- dabe2ce5481d23de1f4f52bdcfee0f9af98316c9e0de2ce8123adeefa0dd08b9-primary.xml.gz`-- repomd.xml
####拷贝rpm包
[root@oldboy ~]# mount /dev/cdrom /mnt
[root@oldboy ~]# cp -rp /mnt/Packages/*.rpm /var/ftp/centos7/###安装ftp客户端工具,然后测试ftp服务是否可用
[root@oldboy ~]# yum install lftp -y
[root@oldboy Packages]# lftp 10.0.0.129 
lftp 10.0.0.129:~> ls              
drwxr-xr-x    3 0        0          225280 Jun 03 16:44 centos7
drwxr-xr-x    2 0        0               6 Apr 01  2020 pub
######想放其他rpm包。
 1)去其他网站,找到rpm包,放到这里。
 2)源码===》编译成rpm包,放到这里。
[root@oldboy yum.repos.d]# find  /var/cache/yum  -name "*.rpm" -exec cp {} /var/ftp/centos7 \;
[root@oldboy yum.repos.d]# find  /var/ftp  -name "sl-*"                            
/var/ftp/centos7/sl-5.02-1.el7.x86_64.rpm[root@oldboy yum.repos.d]# createrepo --update /var/ftp/centos7/ #每加一个rpm包就用此命令更新YUM仓库
[root@oldboy ~]# yum makecache
6.客户端配置yum源指向服务端
 客户端配置并使用base基础源
[root@yum_client ~]# gzip /etc/yum.repos.d/*cat >/etc/yum.repos.d/centos7.repo<<EOF 
[centos7]
name=centos7_base
baseurl=ftp://10.0.0.129/centos7
enabled=1
gpgcheck=0
EOF[root@oldboy ~]# cat /etc/yum.repos.d/centos7.repo
[centos7]
name=centos7_base
baseurl=ftp://10.0.0.129/centos7
enabled=1
gpgcheck=0
7.测试
yum install sl -y
sl 
#over
企业案例作业:
 把所有源的大小加起来。
 链接: http://mirrors.ustc.edu.cn/status/ 
搭建公有YUM仓库:
 同步官方YUM源到私有源
 镜像同步公网yum源,需要使用rsync进行异地同步。
 链接: http://mirrors.ustc.edu.cn/status/
CentOS源:
 rsync://mirrors.ustc.edu.cn/centos/
 rsync://rsync.mirrors.ustc.edu.cn/repo/centos/ #可用
 epel源:rsync://mirrors.ustc.edu.cn/epel/
# mkdir -p /var/ftp/centos7/x86_64/repodata/{os,extras,updates,epel}#使用rsync同步Centos yum源
#rsync -av rsync://mirrors.ustc.edu.cn/centos/7/os/x86_64/ /var/ftp/centos7/x86_64/repodata/os
#rsync -av rsync://mirrors.ustc.edu.cn/centos/7/extras/x86_64/ /var/ftp/centos7/x86_64/repodata/extras/
#rsync -av rsync://mirrors.ustc.edu.cn/centos/7/updates/x86_64/ /var/ftp/centos7/x86_64/repodata/updates/#同步epel源
#rsync -avz rsync://rsync.mirrors.ustc.edu.cn/repo/centos/ /var/ftp/centos7/x86_64/repodata/epel/#远程复制测试:
#rsync -avz rsync://rsync.mirrors.ustc.edu.cn/repo/centos/ /var/ftp/centos7/x86_64/repodata/epel/
[root@oldboy yum.repos.d]# ls /var/ftp/centos7/x86_64/repodata/epel/ -a
.    4.1   5.3   6.6       8                           RPM-GPG-KEY-CentOS-Official
..   4.2   5.4   6.7       8-stream                    RPM-GPG-KEY-CentOS-Security-6
2    4.3   5.5   6.8       8.0.1905                    RPM-GPG-KEY-CentOS-Testing-6
做个定时任务,每天执行上面几个命令,保持源内数据最新。
还可以同步搭建私有源:
mkdir /var/ftp/persion
find  /var/cache/yum  -name "cowsay*"|xargs cp -t /var/ftp/persion/
createrepo /var/ftp/persion/
yum makecache
gzip /etc/yum.repos.d/*
cat >/etc/yum.repos.d/persion.repo<<EOF 
[persion]
name=centos7_persion
baseurl=ftp://10.0.0.129/persion
enabled=1
gpgcheck=0
EOF
[root@oldboy etc]# yum repolist 
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                              repo name                                     status
persion                              centos7_persion                               1
repolist: 1
[root@oldboy etc]# rpm -e cowsay
[root@oldboy etc]# yum install cowsay -y#每加一个rpm包就用此命令更新YUM仓库
createrepo --update /var/ftp/centos7/ 
yum makecache
定制RPM包
 链接: https://blog.oldboyedu.com/autodeploy-rpm/
网友资料:
 yum源仓库的三种搭建方式
 链接: https://www.cnblogs.com/mython/p/10898461.html
搭建局域网YUM仓库
 链接: https://www.cnblogs.com/pzb-shadow/p/10641164.html
systemctl start 服务名称 — 启动服务
 systemctl stop 服务名称 — 停止服务
 systemctl restart 服务名称 — 重启服务
 systemctl status 服务名称 — 查看服务详细的运行状态
 systemctl disable 服务名称 — 让服务开机不要运行
 systemctl enable 服务名称 — 让服务开机运行
 systemctl is-active 服务名称 — 检查确认服务是否运行