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 服务名称 — 检查确认服务是否运行