Day24-yum与rpm软件包管理2
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 Install
Compute Node
Infrastructure Server
File and Print Server
Cinnamon Desktop
MATE Desktop
Basic Web Server
Virtualization Host
Server with GUI
GNOME Desktop #安装桌面环境
KDE Plasma Workspaces
Development and Creative Workstation
Installed Groups: #已经安装的组包。
Compatibility Libraries
Development Tools
Milkymist
Security Tools
System Administration Tools
Available Groups: #可用的组包。
Cinnamon
Console Internet Tools
Educational Software
Electronic Lab
Fedora Packager
General Purpose Desktop
Graphical Administration Tools
Haskell
LXQt Desktop
Legacy UNIX Compatibility
MATE
Scientific Support
Smart Card Support
System Management
TurboGears application framework
Xfce
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 服务名称 — 检查确认服务是否运行