1. 程式人生 > 實用技巧 >Linux - 軟體包管理

Linux - 軟體包管理

一:軟體包介紹

和Windows類似,在Linux系統上也可以安裝應用程式(軟體包)

在Linux下,軟體包分為3類

軟體包 安裝 特點
rpm包 預先編譯打包,安裝簡單 穩定版會被官方做成rpm
所以軟體版本普遍偏低
原始碼包 手動編譯打包,安裝繁瑣 軟體版本豐富
二進位制包 解壓即可使用,安裝簡單 不能修改原始碼

二:RPM包管理

1.什麼是RPM包?

RPM 是Red-Hat Package Manager(RPM軟體包管理器)的縮寫

這一檔案格式名稱雖然打上了RedHat 的標誌 ,但是其原始設計理念是開放式的

通常軟體的穩定版會被官方做成rpm,所以軟體版本偏低

2.RPM包格式

例項:

bash-4.2.26-28.el7.x86_64.rpm
  • 軟體名稱:bash
  • 版本號:4.2.46
  • 釋出次數:15
  • 適用的作業系統版本:CentOS7
  • 硬體平臺:x86_64(64位CPU)
  • 副檔名:rpm
mysql-connector-odbc-5.2.5-8.el7.x86_64.rpm
  • 軟體名稱:mysql-connector-odbc
  • 版本號:5.2.5
  • 釋出次數:8
  • 適用的作業系統版本:CentOS7
  • 硬體平臺:x86_64(64位CPU)
  • 副檔名:rpm

3.可以使用RPM包的平臺

  • RedHat
  • CentOS
  • Fedora
  • SUSE
  • Mac OS

4.檢視當前的硬體平臺和軟體平臺

硬體平臺(CPU位數)

[root@localhost ~]# uname -m
x86_64

軟體平臺(作業系統版本)

[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)

5.管理PRM包的2種命令

① RPM命令

需要自己找到PRM包,並且手動解決包的依賴關係

需要先安裝依賴的包,再安裝RPM包(一般情況下,很難分辨它缺少什麼依賴包)

② yum命令

相關的RPM包會事先被存在1個倉庫裡,該倉庫包含了所有的依賴包

所以,yum安裝RPM可以幫我們解決依賴性的問題

6.RPM包的獲取

建議先使用本地CentOS7的映象,但實際生產環境中都是通過聯網的方式獲取rpm包

先通過虛擬機器載入映象,然後在linux中執行 mount /dev/cdrom /mnt,此時你會在/mnt/Packages目錄下看到很多rpm的包檔案

① 本地的ISO映象光碟(軟體包版本可能偏低)

掛載映象的方式有3種
# 方式1:
[root@localhost ~]# mount /dev/cdrom /opt/


# 方式2:
[root@localhost ~]# mount /dev/sr0 /opt/


# 方式3
[root@localhost ~]# mount -o loop /xxx.iso /opt


# 檢視光盤裡的rpm包
[root@localhost ~]# ls /opt/Packages/

② 到網上下載RPM包

wget https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm

③ 用yum命令 去yum倉庫裡獲取RPM包

④ 從掛載的U盤裡獲取rpm包

  • Linux系統支援的U盤的格式只有:VFATFAT32(推薦FAT32,但是該U盤不能大於32G)
  • 格式化U盤為FAT32格式(cmd命令)
# 將下方的‘F’替換成U盤的碟符即可(格式化時間有點長,具體看U盤的讀寫速度)
format /FS:FAT32 F:

三:RPM命令

1.安裝 RPM包

常用選項

選項 作用
-i 安裝rpm
-v 顯示安裝詳細資訊
-h 顯示安裝rpm進度
–force 強制重新安裝
–nodeps 忽略依賴關係
# 把映象掛載到/mnt
[root@localhost ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only


# 此時,/mnt/Packages/目錄下會有很多rpm包
[root@localhost ~]# ls /mnt/Packages/
acl-2.2.51-12.el7.x86_64.rpm
aic94xx-firmware-30-6.el7.noarch.rpm
alsa-firmware-1.0.28-2.el7.noarch.rpm
...


# rpm方式安裝需要的軟體包
[root@localhost ~]# rpm -ich /mnt/Packages/iptables-1.4.21-16.el7.x86_64.rpm
################################# [100%]
        package iptables-1.4.21-16.el7.x86_64 is already installed
        
        
# 如果軟體包存在, 強制再次安裝
[root@localhost ~]# rpm -ivh --force /mnt/Packages/iptables-1.4.21-16.el7.x86_64.rpm
Preparing...                          ################################# [100%]
        package iptables-1.4.21-16.el7.x86_64 is already installed
        
        
# 安裝某些服務需要依賴其他元件, 使用--nodeps可強制安裝
# 如果是用yum安裝,則會自動處理依賴

2.查詢 已安裝好的RPM包

常用選項

選項 作用
-q 檢視指定軟體包是否安裝(重點)
-qa 檢視系統中已安裝的所有RPM軟體包列表
-qi 檢視指定軟體的詳細資訊
-ql 查詢指定軟體包所安裝的目錄、檔案列表(重點)
-qc 查詢指定軟體包的配置檔案(只有配置檔案,etc下的)
-qf 查詢檔案或目錄屬於哪個RPM軟體
-qip 查詢未安裝的rpm包詳細資訊
-qlp 查詢未安裝的軟體包會產生哪些檔案
# 查詢所有已安裝的包
[root@localhost ~]# rpm -qa
parted-3.1-23.el7.x86_64
centos-release-7-2.1511.el7.centos.2.10.x86_64
selinux-policy-targeted-3.13.1-60.el7.noarch


# 查詢 iptables包是否安裝(如果安裝,會顯示完整資訊)
[root@localhost ~]# rpm -q iptables
iptables-1.4.21-16.el7.x86_64


# 查詢 vsftpd包是否安裝(如果沒安裝,會顯示:not installed)
[root@localhost ~]# rpm -q vsftpd
package vsftpd is not installed


# 查詢 iptables包的詳情資訊
[root@localhost ~]# rpm -qi iptables
Name        : iptables
Version     : 1.4.21
Release     : 16.el7
Architecture: x86_64
Install Date: Wed 18 Nov 2020 04:42:02 AM EST
Group       : System Environment/Base
Size        : 1549241
License     : GPLv2
Signature   : RSA/SHA256, Wed 25 Nov 2015 09:43:32 AM EST, Key ID 24c6a8a7f4a80eb5
Source RPM  : iptables-1.4.21-16.el7.src.rpm
Build Date  : Fri 20 Nov 2015 06:31:53 AM EST
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.netfilter.org/
Summary     : Tools for managing Linux kernel packet filtering capabilities
Description :
The iptables utility controls the network packet filtering code in the
Linux kernel. If you need to set up firewalls and/or IP masquerading,
you should install this package.


# 查詢 iptables包所安裝的目錄、檔案列表(重點)
[root@localhost ~]# rpm -ql iptables
/etc/sysconfig/ip6tables-config
/etc/sysconfig/iptables-config
/usr/bin/iptables-xml
...


# 查詢 iptables包的配置檔案
[root@localhost ~]# rpm -qc iptables
/etc/sysconfig/ip6tables-config
/etc/sysconfig/iptables-config


# 查詢 etc/sysconfig/iptables-config目錄屬於哪個RPM軟體
[root@localhost ~]# rpm -qf /etc/sysconfig/iptables-config
iptables-1.4.21-16.el7.x86_64


# 查詢未安裝的rpm詳情資訊
[root@localhost ~]# rpm -qip /mnt/Packages/alsa-firmware-1.0.28-2.el7.noarch.rpm
Name        : alsa-firmware
Version     : 1.0.28
Release     : 2.el7
Architecture: noarch
Install Date: (not installed)
Group       : Applications/Multimedia
Size        : 9572469
License     : GPL+ and BSD and GPLv2+ and GPLv2 and LGPLv2+
Signature   : RSA/SHA256, Sat 14 Mar 2015 03:36:28 AM EDT, Key ID 24c6a8a7f4a80eb5
Source RPM  : alsa-firmware-1.0.28-2.el7.src.rpm
Build Date  : Thu 05 Mar 2015 04:58:35 PM EST
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.alsa-project.org/
Summary     : Firmware for several ALSA-supported sound cards
Description :
This package contains the firmware binaries for a number of sound cards.
Some (but not all of these) require firmware loaders which are included in
the alsa-tools-firmware package.


# 查詢未安裝的rpm包可能會產生哪些檔案
[root@localhost ~]# rpm -qlp /mnt/Packages/alsa-firmware-1.0.28-2.el7.noarch.rpm
/lib/firmware/aica_firmware.bin
/lib/firmware/asihpi
/lib/firmware/asihpi/dsp2400.bin
/lib/firmware/asihpi/dsp5000.bin

3.升級 RPM包

常用選項

選項 作用
-U 如果老版本不存在則全新安裝,如果存在有新版即升級
# 先下載2個版本,1個老版本,1個新版本
wget  https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm
wget  https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.0-1.el7.x86_64.rpm

# 1.先安裝低版本
[root@localhost ~]# rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm
        
# 2.嘗試安裝高版本(會出現錯誤)
[root@localhost ~]# rpm -ivh zabbix-agent-4.2.0-1.el7.x86_64.rpm
        
# 3.使用升級的方式,完美解決替換
[root@localhost ~]# rpm -Uvh zabbix-agent-4.2.0-1.el7.x86_64.rpm

4.解除安裝 RPM包

解除安裝包時需要先把依賴的包解除安裝掉
如果依賴的包是系統所必須的,那就不能解除安裝這個包,否則會造成系統崩潰

常用選項

選項 作用
-e 解除安裝已存在的RPM包
# 查詢
[root@localhost ~]# rpm -qa |grep iptables
iptables-1.4.21-16.el7.x86_64


# 解除安裝
[root@localhost ~]# rpm -e iptables

5.校驗 RPM包(擴充套件)

常用選項

選項 作用
S 檔案的容量大小是否被改變
M 檔案的型別或者檔案的屬性是否被修改
5 MD5 這一種指紋加密的內容已經不同
L 路徑已經被改變
U 檔案的所屬主已被修改
G 檔案的所屬組已被修改
T 檔案的建立時間已被改變
軟體相關的資料庫存放於/var/lib/rpm目錄

校驗語法

[root@localhost ~]# rpm -V vsftpd
S.5....T.  c /etc/pam.d/vsftpd
.......T.  c /etc/vsftpd/ftpusers
S.5....T.  c /etc/vsftpd/vsftpd.conf
.M.......    /var/ftp/pub

四:yum管理RPM包

1.yum介紹

① 什麼是yum?

yum(Yellow dog updater, modified)是一個在Fedora和RedHat以及CentOS中的Shell 前端軟體包管理器

基於RPM包管理,能夠從指定的伺服器自動下載RPM包並且安裝,可以自動處理依賴性關係

並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝(YUM是生產最佳實踐)

② 是什麼yum源?

要成功的使用 yum工具安裝更新軟體或系統,就需要有一個包含各種 rpm 軟體包的repository(軟體倉庫),這個軟體倉庫我們習慣稱為 yum 源(可以是本地源、網路源)

③ 檢視yum命令 與 yum配置檔案

#  檢視yun命令
[root@localhost ~]# rpm -q yum
yum-3.4.3-132.el7.centos.0.1.noarch


#  檢視yun的配置檔案
[root@localhost ~]# rpm -qc yum
/etc/logrotate.d/yum
/etc/yum.conf
/etc/yum/version-groups.conf

④ yum命令常用選項

倉庫
yum repolist		# 查詢可用倉庫
yum repolist list	# 查詢已啟用/禁用的所有倉庫狀態

# 關閉與啟用倉庫:本質:都是在修改repo檔案中的enable的值 0不啟用 1啟用
yum-config-manager --disable epel	# 關閉倉庫epel
yum-config-manager --enable epel	# 啟用倉庫epel
檢視
yum list		# 列出可用倉庫中的所有軟體包
yum list | less	# 列出可用倉庫中的所有軟體包(分頁)

yum grouplist	# 列出可用倉庫中的軟體組

# 與rpm -qf的區別在於yum provides後可以只跟命名
yum provides /usr/sbin/ifconfig	# 查詢命令所屬的軟體包,可以不加路徑,只寫命令名字
安裝
yum install httpd httpd-tools	   # 加上-y選項 可以變成非互動
yum groupinstall "開發工具" -y		# 安裝軟體組,一個軟體組中包含了多個軟體包
yum groups install "開發工具" -y	# 同上
解除安裝
yum remove httpd httpd-tools http*	# 解除安裝軟體包
yum groupremove "開發工具" -y.		# 解除安裝軟體組
yum groups remove "開發工具" -y		# 同上
重灌
yum reinstall httpd	# 不小心刪除了配置檔案的時,可以reinstall一下
更新
yum check-update	# 檢查可以更新的軟體包

yum update -y 		# 更新所有軟體包,包括核心,通常:只在剛裝完系統時執行

yum update httpd -y	# 更新某個軟體包
快取
yum makecache		# 製作元資料快取

yum clean all		# 清除所有yum快取的軟體包以及元資料
yum clean packages	# 只清除快取的軟體包


[root@localhost ~]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1     #啟動快取
歷史記錄
yum history				# 檢視執行過的yum命令歷史記錄
yum history info ID號	# 檢視具體某一條yum命令的詳細資訊
yum history undo ID號	# 撤銷執行過的歷史命令

需要注意的點:

  • 無論yum安裝的軟體來自何處,yum時刻以自己倉庫中的repodata儲存的依賴關係為準,如果有多個倉庫,就依次檢索
  • yum直接安裝公網的rpm包, 會自動查詢當前系統上已有的倉庫解決依賴關係
yum install https://mirrors.aliyun.com/centos/7.6.1810/os/x86_64/Packages/samba4.8.3-4.el7.x86_64.rpm
  • Yum直接安裝本地的rpm包,會自動查詢當前系統上已有的倉庫解決依賴關係
yum localinstall -y /mnt/Packages/httpd-2.4.6-88.el7.centos.x86_64.rpm
  • 要使用yum前,需要準備一個yum源(我們也稱為yum倉庫), 這個可以是一個網際網路上的倉庫,也可以是本 地自己搭建的倉庫.倉庫裡面有什麼呢?裡面全部都是.rpm的軟體包.一臺linux,可以新增N多個yum源, 能 搜尋的軟體包數量就是N個yum源之和

系統常見yum源

  • 自定義的本地源
  • 網路的源(如:base基礎源、epel擴充套件源、與服務相關的源(官網))

2.映象檔案作為yum源(本地源)

① 掛載

# 方式1:
[root@localhost ~]# mount /dev/cdrom /opt/

# 方式2:
[root@localhost ~]# mount /dev/sr0 /opt/

# 方式3:
[root@localhost ~]# mount -o loop /xxx.iso /opt


# 檢視光盤裡的rpm包
[root@localhost ~]# ls /opt/Packages/

② 編輯repo檔案

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim local.repo # 檔名自定義,必須以.repo結尾
[local]				# 倉庫的實際名字,任意
name=local			# 倉庫的描述,任意
baseurl=file:///opt	# 倉庫位置,可以是 http:// https:// ftp:// file://
enabled=1			# 啟用倉庫,預設就是啟用的
gpgcheck=0			# 檢查安裝的rpm是否是合法的,0表示不檢驗

③ 檢查可用倉庫

[root@localhost ~]# yum repolist		# 查詢可用倉庫
[root@localhost ~]# yum repolist all	# 檢視所有倉庫,包括禁用的

④ 安裝、查詢、解除安裝

[root@localhost ~]# yum list				# 列出可用的軟包
[root@localhost ~]# yum install vsftpd -y	# 安裝:vsftpd
[root@localhost ~]# yum list vsftpd httpd	# 
[root@localhost ~]# yum remove vsftpd -y	# 解除安裝:vsftpd
[root@localhost ~]# yum install glib* httpd -y
[root@localhost ~]# yum provides vsftp		# 查詢某個軟體(可以是未安裝的)是由哪個rpm包提供


# yum reinstall 重灌
[root@egon ~]# rm -rf /etc/httpd/conf/httpd.conf
[root@egon ~]# yum reinstall httpd -y &> /dev/null
[root@egon ~]# ls /etc/httpd/conf/httpd.conf
/etc/httpd/conf/httpd.conf


# yum update 更新
[root@localhost ~]# yum -y update samba
[root@localhost ~]# yum -y update

⑤ 軟體包組安裝、查詢、解除安裝

[root@localhost ~]# yum grouplist
[root@localhost ~]# yum groupinstall "GNOME 桌面" -y
[root@localhost ~]# yum groupinstall "開發工具" -y
[root@localhost ~]# yum groupremove "開發工具" -y

3.使用開源yum源(網路源)

① 檢視當前yum源。

[root@localhost ~]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id			  repo name								      status
!base/7/x86_64	   CentOS-7 - Base - mirrors.aliyun.com 		  10,072
!extras/7/x86_64	 CentOS-7 - Extras - mirrors.aliyun.com		 448
!updates/7/x86_64	CentOS-7 - Updates - mirrors.aliyun.com		773
repolist: 11,293
  • base:基礎源
  • extras:擴充套件源
  • updates:更新源

② 使用第三方yum源

預設系統是國外源(因為伺服器在國外,所以速度較慢),因此 需要替換為國內的源
例:(切換成阿里源)
# 阿里雲的base基礎源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos7.repo

# 阿里雲的extras擴充套件源
curl -o /etc/yum.repos.d/epel.repo
http://mirrors.aliyun.com/repo/epel-7.repo

# extras擴充套件源 也可以安裝一個軟體包來生成(效果同上)
 yum install epel-release -y
擴充套件:
  • EPEL

EPEL的全稱叫 Extra Packages for Enterprise Linux

EPEL是由 Fedora 社群打造,為 RHEL 及衍生髮行版如 CentOS、Scientific Linux 等提供高質量軟體包的專案

裝上了 EPEL之後,就相當 於添加了一個第三方源

  • RHEL

RHEL以及他的衍生髮行版如CentOS、Scientific Linux為了穩定,官方的rpm repository提供的rpm 包往往是很滯後的

當然了,這樣做這是無可厚非的,畢竟這是伺服器版本,安全穩定是重點,官方的rpm repository提供的rpm包也不夠豐富,很多時候需要自己編譯那太辛苦了,而EPEL恰恰可以解決這兩方面的問題

4.自己製作本地yum源

① 將下載好的rpm包和相關依賴都放入一個目錄中

② 安裝createrepo工具

[root@localhost ~]# yum install createrepo -y

③ 製作repodata

createrepo /mnt/Packages/

④ 配置本地repo檔案,指向/mnt/Packages/

# 編輯 /etc/yum/repos.d/soft.repo
[root@localhost ~]# vim /etc/yum/repos.d/soft.repo

# 按i進入插入模式,新增如下內容
[soft]
name=soft
baseurl=file:///mnt/Packages/
enabled=1
gpgcheck=0

5.將自己製作本地yum源 共享給別人

伺服器(自己)


客戶端(他人)


6.yum的歷史記錄

7.yum擴充套件知識

① yum元資料快取

指的將yum倉庫的元資料快取下來,下次安裝時省去了檢索過程,安裝速度可以加快
[root@localhost ~]# yum clean all	# 清理快取
[root@localhost ~]# yum makecache	# 製作快取

② yum軟體包快取

開啟軟體包快取後,從網路源下 載安裝完的軟體安裝包不再刪除,都快取到了本地
[root@localhost ~]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasev
er # 指定軟體安裝包的快取目錄
keepcache=1 # 設定為1
debuglevel=2
# 快取目錄為:ls /var/cache/yum/x86_64/7/
基於軟體包快取,可以做成自己的yum源,以此來控制 各個服務的版本
通常的做法為
  1. 在測試環境中,在每個節點上都開啟軟體包快取

  2. 在測試環境中,安裝相同版本的作業系統,安裝完畢後統一執行yum update -y

  3. 在測試環境中,部署完你的架構,測試完畢

  4. 把測試環境中每臺機器上快取好的軟體包安裝包採集到一個檔案下

[root@localhost ~]# find /var/cache/yum/x86_64/7/ -type f -name "*.rpm" | xargs -I {} mv {} /soft/
  1. 然後用createrepo命令製作好依賴關係,即 repodata資料庫
  2. 然後在線上環境部署時,就用該本地源就好,不要輕易升級,不要濫用yum源
  3. 這樣可以嚴格控制好各個服務的 版本

8.簽名檢查機制

五:原始碼包

## 一:軟體包介紹

和Windows類似,在Linux系統上也可以安裝應用程式(軟體包)

在Linux下,軟體包分為3類

軟體包 安裝 特點
rpm包 預先編譯打包,安裝簡單 穩定版會被官方做成rpm
所以軟體版本普遍偏低
原始碼包 手動編譯打包,安裝繁瑣 軟體版本豐富
二進位制包 解壓即可使用,安裝簡單 不能修改原始碼

二:RPM包管理

1.什麼是RPM包?

RPM 是Red-Hat Package Manager(RPM軟體包管理器)的縮寫

這一檔案格式名稱雖然打上了RedHat 的標誌 ,但是其原始設計理念是開放式的

通常軟體的穩定版會被官方做成rpm,所以軟體版本偏低

2.RPM包格式

例項:

bash-4.2.26-28.el7.x86_64.rpm
  • 軟體名稱:bash
  • 版本號:4.2.46
  • 釋出次數:15
  • 適用的作業系統版本:CentOS7
  • 硬體平臺:x86_64(64位CPU)
  • 副檔名:rpm
mysql-connector-odbc-5.2.5-8.el7.x86_64.rpm
  • 軟體名稱:mysql-connector-odbc
  • 版本號:5.2.5
  • 釋出次數:8
  • 適用的作業系統版本:CentOS7
  • 硬體平臺:x86_64(64位CPU)
  • 副檔名:rpm

3.可以使用RPM包的平臺

  • RedHat
  • CentOS
  • Fedora
  • SUSE
  • Mac OS

4.檢視當前的硬體平臺和軟體平臺

硬體平臺(CPU位數)

[root@localhost ~]# uname -m
x86_64

軟體平臺(作業系統版本)

[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)

5.管理PRM包的2種命令

① RPM命令

需要自己找到PRM包,並且手動解決包的依賴關係

需要先安裝依賴的包,再安裝RPM包(一般情況下,很難分辨它缺少什麼依賴包)

② yum命令

相關的RPM包會事先被存在1個倉庫裡,該倉庫包含了所有的依賴包

所以,yum安裝RPM可以幫我們解決依賴性的問題

6.RPM包的獲取

建議先使用本地CentOS7的映象,但實際生產環境中都是通過聯網的方式獲取rpm包

先通過虛擬機器載入映象,然後在linux中執行 mount /dev/cdrom /mnt,此時你會在/mnt/Packages目錄下看到很多rpm的包檔案

① 本地的ISO映象光碟(軟體包版本可能偏低)

掛載映象的方式有3種
# 方式1:
[root@localhost ~]# mount /dev/cdrom /opt/


# 方式2:
[root@localhost ~]# mount /dev/sr0 /opt/


# 方式3
[root@localhost ~]# mount -o loop /xxx.iso /opt


# 檢視光盤裡的rpm包
[root@localhost ~]# ls /opt/Packages/

② 到網上下載RPM包

wget https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm

③ 用yum命令 去yum倉庫裡獲取RPM包

④ 從掛載的U盤裡獲取rpm包

  • Linux系統支援的U盤的格式只有:VFATFAT32(推薦FAT32,但是該U盤不能大於32G)
  • 格式化U盤為FAT32格式(cmd命令)
# 將下方的‘F’替換成U盤的碟符即可(格式化時間有點長,具體看U盤的讀寫速度)
format /FS:FAT32 F:

三:RPM命令

1.安裝 RPM包

常用選項

選項 作用
-i 安裝rpm
-v 顯示安裝詳細資訊
-h 顯示安裝rpm進度
–force 強制重新安裝
–nodeps 忽略依賴關係
# 把映象掛載到/mnt
[root@localhost ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only


# 此時,/mnt/Packages/目錄下會有很多rpm包
[root@localhost ~]# ls /mnt/Packages/
acl-2.2.51-12.el7.x86_64.rpm
aic94xx-firmware-30-6.el7.noarch.rpm
alsa-firmware-1.0.28-2.el7.noarch.rpm
...


# rpm方式安裝需要的軟體包
[root@localhost ~]# rpm -ich /mnt/Packages/iptables-1.4.21-16.el7.x86_64.rpm
################################# [100%]
        package iptables-1.4.21-16.el7.x86_64 is already installed
        
        
# 如果軟體包存在, 強制再次安裝
[root@localhost ~]# rpm -ivh --force /mnt/Packages/iptables-1.4.21-16.el7.x86_64.rpm
Preparing...                          ################################# [100%]
        package iptables-1.4.21-16.el7.x86_64 is already installed
        
        
# 安裝某些服務需要依賴其他元件, 使用--nodeps可強制安裝
# 如果是用yum安裝,則會自動處理依賴

2.查詢 已安裝好的RPM包

常用選項

選項 作用
-q 檢視指定軟體包是否安裝(重點)
-qa 檢視系統中已安裝的所有RPM軟體包列表
-qi 檢視指定軟體的詳細資訊
-ql 查詢指定軟體包所安裝的目錄、檔案列表(重點)
-qc 查詢指定軟體包的配置檔案(只有配置檔案,etc下的)
-qf 查詢檔案或目錄屬於哪個RPM軟體
-qip 查詢未安裝的rpm包詳細資訊
-qlp 查詢未安裝的軟體包會產生哪些檔案
# 查詢所有已安裝的包
[root@localhost ~]# rpm -qa
parted-3.1-23.el7.x86_64
centos-release-7-2.1511.el7.centos.2.10.x86_64
selinux-policy-targeted-3.13.1-60.el7.noarch


# 查詢 iptables包是否安裝(如果安裝,會顯示完整資訊)
[root@localhost ~]# rpm -q iptables
iptables-1.4.21-16.el7.x86_64


# 查詢 vsftpd包是否安裝(如果沒安裝,會顯示:not installed)
[root@localhost ~]# rpm -q vsftpd
package vsftpd is not installed


# 查詢 iptables包的詳情資訊
[root@localhost ~]# rpm -qi iptables
Name        : iptables
Version     : 1.4.21
Release     : 16.el7
Architecture: x86_64
Install Date: Wed 18 Nov 2020 04:42:02 AM EST
Group       : System Environment/Base
Size        : 1549241
License     : GPLv2
Signature   : RSA/SHA256, Wed 25 Nov 2015 09:43:32 AM EST, Key ID 24c6a8a7f4a80eb5
Source RPM  : iptables-1.4.21-16.el7.src.rpm
Build Date  : Fri 20 Nov 2015 06:31:53 AM EST
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.netfilter.org/
Summary     : Tools for managing Linux kernel packet filtering capabilities
Description :
The iptables utility controls the network packet filtering code in the
Linux kernel. If you need to set up firewalls and/or IP masquerading,
you should install this package.


# 查詢 iptables包所安裝的目錄、檔案列表(重點)
[root@localhost ~]# rpm -ql iptables
/etc/sysconfig/ip6tables-config
/etc/sysconfig/iptables-config
/usr/bin/iptables-xml
...


# 查詢 iptables包的配置檔案
[root@localhost ~]# rpm -qc iptables
/etc/sysconfig/ip6tables-config
/etc/sysconfig/iptables-config


# 查詢 etc/sysconfig/iptables-config目錄屬於哪個RPM軟體
[root@localhost ~]# rpm -qf /etc/sysconfig/iptables-config
iptables-1.4.21-16.el7.x86_64


# 查詢未安裝的rpm詳情資訊
[root@localhost ~]# rpm -qip /mnt/Packages/alsa-firmware-1.0.28-2.el7.noarch.rpm
Name        : alsa-firmware
Version     : 1.0.28
Release     : 2.el7
Architecture: noarch
Install Date: (not installed)
Group       : Applications/Multimedia
Size        : 9572469
License     : GPL+ and BSD and GPLv2+ and GPLv2 and LGPLv2+
Signature   : RSA/SHA256, Sat 14 Mar 2015 03:36:28 AM EDT, Key ID 24c6a8a7f4a80eb5
Source RPM  : alsa-firmware-1.0.28-2.el7.src.rpm
Build Date  : Thu 05 Mar 2015 04:58:35 PM EST
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.alsa-project.org/
Summary     : Firmware for several ALSA-supported sound cards
Description :
This package contains the firmware binaries for a number of sound cards.
Some (but not all of these) require firmware loaders which are included in
the alsa-tools-firmware package.


# 查詢未安裝的rpm包可能會產生哪些檔案
[root@localhost ~]# rpm -qlp /mnt/Packages/alsa-firmware-1.0.28-2.el7.noarch.rpm
/lib/firmware/aica_firmware.bin
/lib/firmware/asihpi
/lib/firmware/asihpi/dsp2400.bin
/lib/firmware/asihpi/dsp5000.bin

3.升級 RPM包

常用選項

選項 作用
-U 如果老版本不存在則全新安裝,如果存在有新版即升級
# 先下載2個版本,1個老版本,1個新版本
wget  https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm
wget  https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.0-1.el7.x86_64.rpm

# 1.先安裝低版本
[root@localhost ~]# rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm
        
# 2.嘗試安裝高版本(會出現錯誤)
[root@localhost ~]# rpm -ivh zabbix-agent-4.2.0-1.el7.x86_64.rpm
        
# 3.使用升級的方式,完美解決替換
[root@localhost ~]# rpm -Uvh zabbix-agent-4.2.0-1.el7.x86_64.rpm

4.解除安裝 RPM包

解除安裝包時需要先把依賴的包解除安裝掉
如果依賴的包是系統所必須的,那就不能解除安裝這個包,否則會造成系統崩潰

常用選項

選項 作用
-e 解除安裝已存在的RPM包
# 查詢
[root@localhost ~]# rpm -qa |grep iptables
iptables-1.4.21-16.el7.x86_64


# 解除安裝
[root@localhost ~]# rpm -e iptables

5.校驗 RPM包(擴充套件)

常用選項

選項 作用
S 檔案的容量大小是否被改變
M 檔案的型別或者檔案的屬性是否被修改
5 MD5 這一種指紋加密的內容已經不同
L 路徑已經被改變
U 檔案的所屬主已被修改
G 檔案的所屬組已被修改
T 檔案的建立時間已被改變
軟體相關的資料庫存放於/var/lib/rpm目錄

校驗語法

[root@localhost ~]# rpm -V vsftpd
S.5....T.  c /etc/pam.d/vsftpd
.......T.  c /etc/vsftpd/ftpusers
S.5....T.  c /etc/vsftpd/vsftpd.conf
.M.......    /var/ftp/pub

四:yum管理RPM包

1.yum介紹

① 什麼是yum?

yum(Yellow dog updater, modified)是一個在Fedora和RedHat以及CentOS中的Shell 前端軟體包管理器

基於RPM包管理,能夠從指定的伺服器自動下載RPM包並且安裝,可以自動處理依賴性關係

並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝(YUM是生產最佳實踐)

② 是什麼yum源?

要成功的使用 yum工具安裝更新軟體或系統,就需要有一個包含各種 rpm 軟體包的repository(軟體倉庫),這個軟體倉庫我們習慣稱為 yum 源(可以是本地源、網路源)

③ 檢視yum命令 與 yum配置檔案

#  檢視yun命令
[root@localhost ~]# rpm -q yum
yum-3.4.3-132.el7.centos.0.1.noarch


#  檢視yun的配置檔案
[root@localhost ~]# rpm -qc yum
/etc/logrotate.d/yum
/etc/yum.conf
/etc/yum/version-groups.conf

④ yum命令常用選項

倉庫
yum repolist		# 查詢可用倉庫
yum repolist list	# 查詢已啟用/禁用的所有倉庫狀態

# 關閉與啟用倉庫:本質:都是在修改repo檔案中的enable的值 0不啟用 1啟用
yum-config-manager --disable epel	# 關閉倉庫epel
yum-config-manager --enable epel	# 啟用倉庫epel
檢視
yum list		# 列出可用倉庫中的所有軟體包
yum list | less	# 列出可用倉庫中的所有軟體包(分頁)

yum grouplist	# 列出可用倉庫中的軟體組

# 與rpm -qf的區別在於yum provides後可以只跟命名
yum provides /usr/sbin/ifconfig	# 查詢命令所屬的軟體包,可以不加路徑,只寫命令名字
安裝
yum install httpd httpd-tools	   # 加上-y選項 可以變成非互動
yum groupinstall "開發工具" -y		# 安裝軟體組,一個軟體組中包含了多個軟體包
yum groups install "開發工具" -y	# 同上
解除安裝
yum remove httpd httpd-tools http*	# 解除安裝軟體包
yum groupremove "開發工具" -y.		# 解除安裝軟體組
yum groups remove "開發工具" -y		# 同上
重灌
yum reinstall httpd	# 不小心刪除了配置檔案的時,可以reinstall一下
更新
yum check-update	# 檢查可以更新的軟體包

yum update -y 		# 更新所有軟體包,包括核心,通常:只在剛裝完系統時執行

yum update httpd -y	# 更新某個軟體包
快取
yum makecache		# 製作元資料快取

yum clean all		# 清除所有yum快取的軟體包以及元資料
yum clean packages	# 只清除快取的軟體包


[root@localhost ~]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1     #啟動快取
歷史記錄
yum history				# 檢視執行過的yum命令歷史記錄
yum history info ID號	# 檢視具體某一條yum命令的詳細資訊
yum history undo ID號	# 撤銷執行過的歷史命令

需要注意的點:

  • 無論yum安裝的軟體來自何處,yum時刻以自己倉庫中的repodata儲存的依賴關係為準,如果有多個倉庫,就依次檢索
  • yum直接安裝公網的rpm包, 會自動查詢當前系統上已有的倉庫解決依賴關係
yum install https://mirrors.aliyun.com/centos/7.6.1810/os/x86_64/Packages/samba4.8.3-4.el7.x86_64.rpm
  • Yum直接安裝本地的rpm包,會自動查詢當前系統上已有的倉庫解決依賴關係
yum localinstall -y /mnt/Packages/httpd-2.4.6-88.el7.centos.x86_64.rpm
  • 要使用yum前,需要準備一個yum源(我們也稱為yum倉庫), 這個可以是一個網際網路上的倉庫,也可以是本 地自己搭建的倉庫.倉庫裡面有什麼呢?裡面全部都是.rpm的軟體包.一臺linux,可以新增N多個yum源, 能 搜尋的軟體包數量就是N個yum源之和

系統常見yum源

  • 自定義的本地源
  • 網路的源(如:base基礎源、epel擴充套件源、與服務相關的源(官網))

2.映象檔案作為yum源(本地源)

① 掛載

# 方式1:
[root@localhost ~]# mount /dev/cdrom /opt/

# 方式2:
[root@localhost ~]# mount /dev/sr0 /opt/

# 方式3:
[root@localhost ~]# mount -o loop /xxx.iso /opt


# 檢視光盤裡的rpm包
[root@localhost ~]# ls /opt/Packages/

② 編輯repo檔案

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim local.repo # 檔名自定義,必須以.repo結尾
[local]				# 倉庫的實際名字,任意
name=local			# 倉庫的描述,任意
baseurl=file:///opt	# 倉庫位置,可以是 http:// https:// ftp:// file://
enabled=1			# 啟用倉庫,預設就是啟用的
gpgcheck=0			# 檢查安裝的rpm是否是合法的,0表示不檢驗

③ 檢查可用倉庫

[root@localhost ~]# yum repolist		# 查詢可用倉庫
[root@localhost ~]# yum repolist all	# 檢視所有倉庫,包括禁用的

④ 安裝、查詢、解除安裝

[root@localhost ~]# yum list				# 列出可用的軟包
[root@localhost ~]# yum install vsftpd -y	# 安裝:vsftpd
[root@localhost ~]# yum list vsftpd httpd	# 
[root@localhost ~]# yum remove vsftpd -y	# 解除安裝:vsftpd
[root@localhost ~]# yum install glib* httpd -y
[root@localhost ~]# yum provides vsftp		# 查詢某個軟體(可以是未安裝的)是由哪個rpm包提供


# yum reinstall 重灌
[root@egon ~]# rm -rf /etc/httpd/conf/httpd.conf
[root@egon ~]# yum reinstall httpd -y &> /dev/null
[root@egon ~]# ls /etc/httpd/conf/httpd.conf
/etc/httpd/conf/httpd.conf


# yum update 更新
[root@localhost ~]# yum -y update samba
[root@localhost ~]# yum -y update

⑤ 軟體包組安裝、查詢、解除安裝

[root@localhost ~]# yum grouplist
[root@localhost ~]# yum groupinstall "GNOME 桌面" -y
[root@localhost ~]# yum groupinstall "開發工具" -y
[root@localhost ~]# yum groupremove "開發工具" -y

3.使用開源yum源(網路源)

① 檢視當前yum源。

[root@localhost ~]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id			  repo name								      status
!base/7/x86_64	   CentOS-7 - Base - mirrors.aliyun.com 		  10,072
!extras/7/x86_64	 CentOS-7 - Extras - mirrors.aliyun.com		 448
!updates/7/x86_64	CentOS-7 - Updates - mirrors.aliyun.com		773
repolist: 11,293
  • base:基礎源
  • extras:擴充套件源
  • updates:更新源

② 使用第三方yum源

預設系統是國外源(因為伺服器在國外,所以速度較慢),因此 需要替換為國內的源
例:(切換成阿里源)
# 阿里雲的base基礎源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos7.repo

# 阿里雲的extras擴充套件源
curl -o /etc/yum.repos.d/epel.repo
http://mirrors.aliyun.com/repo/epel-7.repo

# extras擴充套件源 也可以安裝一個軟體包來生成(效果同上)
 yum install epel-release -y
擴充套件:
  • EPEL

EPEL的全稱叫 Extra Packages for Enterprise Linux

EPEL是由 Fedora 社群打造,為 RHEL 及衍生髮行版如 CentOS、Scientific Linux 等提供高質量軟體包的專案

裝上了 EPEL之後,就相當 於添加了一個第三方源

  • RHEL

RHEL以及他的衍生髮行版如CentOS、Scientific Linux為了穩定,官方的rpm repository提供的rpm 包往往是很滯後的

當然了,這樣做這是無可厚非的,畢竟這是伺服器版本,安全穩定是重點,官方的rpm repository提供的rpm包也不夠豐富,很多時候需要自己編譯那太辛苦了,而EPEL恰恰可以解決這兩方面的問題

4.自己製作本地yum源

① 將下載好的rpm包和相關依賴都放入一個目錄中

② 安裝createrepo工具

[root@localhost ~]# yum install createrepo -y

③ 製作repodata

createrepo /mnt/Packages/

④ 配置本地repo檔案,指向/mnt/Packages/

# 編輯 /etc/yum/repos.d/soft.repo
[root@localhost ~]# vim /etc/yum/repos.d/soft.repo

# 按i進入插入模式,新增如下內容
[soft]
name=soft
baseurl=file:///mnt/Packages/
enabled=1
gpgcheck=0

5.將自己製作本地yum源 共享給別人

伺服器(自己)


客戶端(他人)


6.yum的歷史記錄

7.yum擴充套件知識

① yum元資料快取

指的將yum倉庫的元資料快取下來,下次安裝時省去了檢索過程,安裝速度可以加快
[root@localhost ~]# yum clean all	# 清理快取
[root@localhost ~]# yum makecache	# 製作快取

② yum軟體包快取

開啟軟體包快取後,從網路源下 載安裝完的軟體安裝包不再刪除,都快取到了本地
[root@localhost ~]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasev
er # 指定軟體安裝包的快取目錄
keepcache=1 # 設定為1
debuglevel=2
# 快取目錄為:ls /var/cache/yum/x86_64/7/
基於軟體包快取,可以做成自己的yum源,以此來控制 各個服務的版本
通常的做法為
  1. 在測試環境中,在每個節點上都開啟軟體包快取

  2. 在測試環境中,安裝相同版本的作業系統,安裝完畢後統一執行yum update -y

  3. 在測試環境中,部署完你的架構,測試完畢

  4. 把測試環境中每臺機器上快取好的軟體包安裝包採集到一個檔案下

[root@localhost ~]# find /var/cache/yum/x86_64/7/ -type f -name "*.rpm" | xargs -I {} mv {} /soft/
  1. 然後用createrepo命令製作好依賴關係,即 repodata資料庫
  2. 然後在線上環境部署時,就用該本地源就好,不要輕易升級,不要濫用yum源
  3. 這樣可以嚴格控制好各個服務的 版本

8.簽名檢查機制

五:原始碼包