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 服務名稱 — 檢查確認服務是否運行