1. 程式人生 > 其它 >09.Linux軟體包管理——(YUM 、RPM)

09.Linux軟體包管理——(YUM 、RPM)

目錄

09.Linux軟體管理

1.RPM基礎概述

1.1 什麼是rpm

RPM全稱RedHat Package Manager 縮寫,是由紅帽開發用於軟體包的安裝,升級.解除安裝載與查詢工具

包格式 : xxx.rpm

命令 : rpm

1.2 rpm包名組成部分

RPM 包命名以-將軟體分成了若干部分 bash-4.2.46-
28.el7.x86_64.rpm

1.3 如何獲取rpm包

在我們剛開始學習 rpm 包,建議先從本地映象中獲取
rpm 但實際生產環境中大多數是通過聯網方式獲取 rpm
包,或者搭建企業私有包管理倉庫平臺。

1.4 其他型別的安裝包

在 Linux 中除了 rpm 格式型別的包,還存在一些其他
型別的軟體包。

分類 安裝 版本
rpm 預選編譯打包.安裝簡單 軟體(k8s開源應用)版本偏低
原始碼包 手動編譯打包,安裝繁瑣 軟體版本隨意(rpm包版本低,原始碼)
二進位制包 解壓即可使用安裝簡單 不能修改原始碼(小工具,解壓即用)

2.RPM包管理命令

2.1 rpm安裝軟體包

  • -i : 安裝軟體包
  • -v : 顯示安裝過程
  • -h : 顯示安裝進度條

1.使用 rpm 命令安裝本地路徑下軟體包

[root@node ~]# mount /dev/cdrom /mnt/
[root@node ~]# rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
[root@node ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm

2.使用 rpm 命令安裝網際網路上的軟體包

#1.wget下載到本地-->安裝
#2.直接通過rpm命令安裝網際網路上的軟體包;
[root@gao ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm

2.2 rpm依賴包安裝

包依賴是指 A-->依賴-->B , B-->依賴-->C , 而C-->依賴-->A .當我們需要安裝的 rpm 型別包出現了依賴關係應該如何處理,比如安裝 samba 軟體包。

[root@gao ~]# rpm -ivh /mnt/Packages/samba-4.8.3-4.el7.x86_64.rpm
    error: Failed dependencies:
    libxattr-tdb-samba4.so()(64bit) is
needed by samba-0:4.8.3-4.el7.x86_64
    libxattr-tdb-samba4.so(SAMBA_4.8.3)
(64bit) is needed by samba-0:4.8.3-
4.el7.x86_64
    samba-common-tools = 4.8.3-4.el7 is
needed by samba-0:4.8.3-4.el7.x86_64
    samba-libs = 4.8.3-4.el7 is needed
by samba-0:4.8.3-4.el7.x86_64

1.嘗試安裝依賴包 samba-common-tools

[root@node ~]# rpm -ivh /mnt/Packages/samba-common-tools-4.8.3-4.el7.x86_64.rpm

2.嘗試安裝依賴包 samba-libs

[root@node ~]# rpm -ivh /mnt/Packages/
[root@node ~]# rpm -ivh/mnt/Packages/samba-libs-4.8.3-4.el7.x86_64.rpm

3.嘗試安裝依賴包 samba-common-tools

[root@nado ~]# rpm -ivh/mnt/Packages/samba-common-tools-4.8.3-4.el7.x86_64.rpm

4.最後嘗試安裝 samba 主程式包

[root@node ~]# rpm -ivh /mnt/Packages/samba-4.8.3-4.el7.x86_64.rpm

PS: 由於rpm工具安裝rpm包依賴關係太強,所以通常我
們都是使用 yum 來解決

2.3 rpm升級軟體包

下載 zabbix-agent 軟體包,分別下載 3.0 低版本、然
後下載 4.2 高版來進行測試與實驗。

# 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.先安裝 zabbix-agent-3.0 低版本

[root@node ~]# rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm

2.嘗試使用 rpm -ivh 安裝 zabbix-agent-4.2 高版本
(會出現報錯)

[root@ndoe~]# rpm -ivh zabbix-agent-4.2.0-1.el7.x86_64.rpm

3.使用 rpm -Uvh 升級 zabbix-agent 至 4.2 版本。
(完美解決)

[root@node ~]# rpm -Uvh zabbix-agent-4.2.0-1.el7.x86_64.rpm

2.4 rpm解除安裝軟體包

如果需要解除安裝 rpm 包,可以先檢視該包是否存系統中,
然後在進行解除安裝操作。

1.使用 rpm -q 查詢軟體包是否存在系統

[root@node~]# rpm -q zsh

2.使用 rpm -e 解除安裝軟體包

[root@node ~]# rpm -e zsh

2.5 查詢軟體包

選項 描述
rpm -q 檢視指定軟體包是否安裝
rpm -qa 檢視系統中已安裝的所有RPM軟體包列表
rpm -qi 檢視指定軟體的詳細資訊
rpm -ql 查詢指定軟體包所安裝的目錄.檔案列表
rpm -qc 查詢指定軟體包的配置檔案
rpm -qf 查詢檔案或目錄屬於哪個RPM軟體包

1.查詢 vsftpd 這個 rpm 包是否安裝

[root@node ~]# rpm -q vsftpd

2.模糊查詢系統已安裝的 rpm 包

[root@node ~]# rpm-qa |grep ftp

3.查詢 vsftpd 軟體包相關資訊

[root@node ~]# rpm -qi vsftpd

4.查詢 vsftpd 軟體包所安裝後在系統中生成的檔案路

[root@node ~]# rpm -ql vsftpd

5.查詢 vsftpd 軟體包的主配置檔案

[root@node ~]# rpm -qc vsftpd

6.查詢配置檔案或系統命令是由哪個 rpm 包提供

[root@node ~]# rpm -qf /etc/vsftpd/vsftpd.conf
[root@node ~]# rpm -qf /usr/sbin/vsftpd

7.查詢未安裝的 rpm 包會產生哪些檔案

[root@node ~]# rpm -qlp /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm

2.6 rpm包管理小結

  • 1.如何查詢 util-linux 軟體包安裝了哪些檔案?
    • rpm -ql util-linux
  • 2.如何查詢 mkdir 命令是由哪個 RPM 軟體包安裝
    的?
[root@node ~]# which mkdir /usr/bin/mkdir
[root@node ~]# rpm -qf /usr/bin/mkdir coreutils-8.22-21.el7.x86_64
#
[root@node ~]# rpm -qf $(which mkdir) coreutils-8.22-21.el7.x86_64
  • 3.安裝 .rpm 軟體包時, -i、-U 選項有何區別?
    -i:安裝
    -U:升級

3.YUM基本介紹

3.1 什麼是YUM

yum/dnfRedHat CentOS 系統中的軟體包管理
器。
它能夠通過網際網路下載 .rpm 格式包進行安裝,並能自
動處理其依賴間關係,無須繁瑣地一次次下載安裝。

3.2 什麼是 [ YUM源 | YUM倉庫 ]

要使用 yum 命令工具安裝更新軟體,需要有一個包含各
種 rpm 軟體包的倉庫,這個軟體倉庫我們一般稱為 yum
源。當然這個源可以是本地倉庫、也可以是網路倉庫。

  • client --ftp/http/file-> yum地址 --->yum倉庫(rpm包
    集合)
  • 配置一個倉庫: 就是配置一個源(地址)--> 倉庫
  • repo檔案(baseurl地址--->網際網路上的一個倉庫---》有
    非常多的rpm軟體)

3.3 YUM配置檔案

  • CentOS8 的配置檔案
[root@node etc]# cat /etc/yum.conf
[main]
gpgcheck=1 # 檢查來
源是否合法,需要有製作者的公鑰資訊
installonly_limit=3 # 同時可
以安裝3個軟體包、最小為2,設定為0或者1則不限制
clean_requirements_on_remove=True # 刪除包
時,是否將不再使用的包刪除
best=True # 升級
時,自動選擇安裝最新版,即使缺少包的依賴
skip_if_unavailable=False
  • CentOS7 的配置檔案
[root@node ~]# vim /etc/yum.cnf
cachedir=/var/cache/yum/$basearch/$releasever # 快取目錄
keepcache=0 # 快取軟體包,1啟動 0 關閉
debuglevel=2 # 除錯級別
logfile=/var/log/yum.log # 日誌記錄位置
exactarch=1 # 檢查平臺是否相容
obsoletes=1 # 檢查包是否廢棄
gpgcheck=1 # 檢查來源是否合法,需要有製作者的公鑰資訊
plugins=1
installonly_limit=5 # 同時可以安裝5個軟體包、最小為2,設定為0或者1則不限制
# metadata_expire=90m #每小時手動檢查元資料
# in /etc/yum.repos.d #包含repos.d目錄中的.repo檔案

3.4 配置YUM源示例

系統預設的源是國外提供,需要替換為國內的源

1.配置阿里 yum 源

[root@node ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo \http://mirrors.aliyun.com/repo/Centos-7.repo

2.配置第三方 yum 源(EPEL)

[root@node ~]# wget -O /etc/yum.repos.d/epel.repo \http://mirrors.aliyun.com/repo/epel-7.repo
  1. Nginx 官方源,後期在學習 Nginx 時需要使用官方的
    yum 源來安裝軟體
[root@node ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/
$basearch/
gpgcheck=0
enabled=1
  • YUM 源的查詢方式大體一致 Apache,Docker、
    Nginx、openstack、ELKStack

4. YUM日常操作

4.1 yum查詢軟體包

1.使用 dnf/yum list 查詢所有倉庫中的所有軟體包

[root@node ~]# yum list
[root@node ~]# yum list|grep ftp

2.使用 dnf/yum list installed 查詢所有已安裝至系統中的軟體包

[root@node ~]# dnf list installed
[root@node ~]# yum list installed

3.使用 dnf/yum provides 查詢系統命令來自於哪個軟體包(命令可以在當前系統,也可以不在當前系統)

[root@node ~]# rpm -qf $(which cd) bash-4.2.46-31.el7.x86_64
# PS: rpm需要知道命令的絕對路徑, 如果不存在該命令是無法查詢到該命令所屬的軟體包
[root@node ~]# yum provides cd
[root@node ~]# yum provides sl

4.2 yum安裝軟體包

1.使用 dnf/yum install 通過倉庫獲取軟體包進行安裝

# 互動,麻煩
[root@node ~]# yum install vsftpd
# 非互動
[root@node ~]# yum install vsftpd -y

2.使用 dnf/yum localinstall 安裝本地的 rpm 包,如果 rpm 包存在依賴,會通過當前已有的倉庫獲取解決依賴關係

[root@node ~]# yum install https://mirrors.aliyun.com/centos/7.6.1810/os/x86_64/Packages/samba-4.8.3-4.el7.x86_64.rpm

#yum localinstall 安裝本的rpm包,會自動查詢當前系統上已有的倉庫解決依賴關係

[root@node ~]# yum localinstall samba-4.8.3-4.el7.x86_64.rpm -y

4.3 yum重灌軟體包

當我們安裝好服務後,如果不小心刪除了服務的配置檔案,此時可以通過重灌的方式修復。

1.首先刪除 vsftpd 配置主檔案

[root@node ~]# rpm -qc vsftpd
[root@node ~]# rm -f /etc/vsftpd/vsftpd.conf

2.使用 dnf/yum reinstall 對軟體進行重新安裝

[root@node ~]# yum reinstall vsftpd

3.檢查 vsftpd 服務配置檔案是否恢復,以及軟體是否能正常使用。

[root@oldxu ~]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf

4.4 yum更新軟體包

#1.對比Linux已安裝的軟體和yum倉庫中的軟體, 有哪些需要升級
[root@node ~]# yum check-update
#2.更新acl軟體
[root@node ~]# yum update acl -y
#3.更新整個系統所有的軟體,包括核心 (通常剛裝完系統會進行執行)
[root@node ~]# yum update -y

4.5 yum刪除軟體包

[root@node ~]# yum install samba -y
[root@node ~]# yum remove samba -y

4.6 yum管理租包

1.使用 dnf/yum groups install 安裝一整個組的軟體

[root@node ~]# yum groups list
[root@node ~]# yum groups install Development tools \ 
Compatibility libraries \
Base Debugging Tools

2.使用 dnf/yum groups remove 刪除包組

[root@node ~]# yum groups remove Base -y

4.7 yum管理倉庫

1.列出 dnf/yum repolist 源可用的軟體倉庫

[root@node ~]# yum repolist
[root@node ~]# yum repolist all # 檢視所有
的倉庫

2.通過 dnf/yum-config-manager 啟用和禁用倉庫(本質都是在修改 repo 檔案中 enable 引數 0 1)

# C7
[root@node ~]# yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm -y
# C8
[root@node ~]# yum install https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm -y
[root@node ~]# yum repolist all|grep mysql
[root@node ~]# yum-config-manager --disable mysql80-community # 關閉倉庫
[root@node ~]# yum-config-manager --enablemysql80-community # 啟用倉庫

4.8 yum管理歷史記錄

當我們刪除了某個軟體時,希望撤銷刪除的操作,可以
使用 yum history undo

1.刪除 httpd 軟體,然後檢視操作記錄

[root@node ~]# yum remove httpd -y
[root@node ~]# yum history

2.使用 dnf/yum history undo Number 撤銷

[root@node ~]# yum history info N
[root@node ~]# yum history undo N

5.構建YUM倉庫實踐

5.0 yum 快取軟體包

1.方式一:通過修改 dnf/yum 全域性配置檔案

[root@node ~]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasev
er
keepcache=1 # 啟動快取
[root@node ~]# yum install lrzsz -y
[root@node ~]# find /var/cache/yum/ -type
f -name "*.rpm"

2.方式二、通過 dnf/yum 下載該軟體包至本地,不進行安裝

[root@node ~]# yum install httpd -y \
--downloadonly \
--downloaddir=/opt

3.清理快取,可以使用 dnf/yum clean

# 清理所有yum快取資訊,包括快取的軟體包
[root@node ~]# yum clean all
#僅清理所有快取的軟體包
[root@node ~]# yum clean packages

5.1 搭建本地yum倉庫

很多時候剛安裝的linux系統不能聯網,但需要安裝相應
環境的軟體包。這時候我們就可以利用光碟製作一個本
地yum倉庫。

  • 方式一、光碟掛載上; rpm -ivh /path/xx.rpm
  • 方式二、將光碟製作為一個本地倉庫,提供本地使
    用;自動解決依賴問題;

1.掛載映象

[root@node ~]# mount /dev/cdrom /mnt 

2.備份原有倉庫 / 註釋掉

[root@node ~]# gzip /etc/yum.repos.d/*

3.使用 yum-config-manager 命令可快速新增一個本地倉庫(忽略)

[root@node ~]# yum install yum-utils -y
[root@node ~]# yum-config-manager --add--repo="file:///mnt"

4.當然我們也可以直接去編輯一個 .repo 檔案,將倉庫資訊儲存至該檔案

[root@node ~]# vim /etc/yum.repos.d/cdrom.repo 
# 倉庫名稱
[cdrom]
# 倉庫描述資訊
name=This is local cdrom
# 倉庫url地址 ,可以是file:// ftp:// http:// 等
協議
baseurl=file:///mnt
# 是否使用該YUM源(0代表禁用, 1代表啟用)
enabled=1
# 是否驗證軟體簽名(0代表禁用, 1代表啟用)
gpgcheck=0

5.生成快取資訊、然後使用 dnf/yum 安裝軟體測試

[root@node ~]# yum makecache
[root@node ~]# yum install lrzsz -y

5.2 搭建企業yum倉庫

很多時候不僅僅是一臺機器無法上網,而是很多機器都
無法上網,但都有聯網下載軟體的需求,這個時候難道
每臺機器都掛在光碟嗎,當然可以,但如果軟體出現了
更新又該怎麼辦。所以我們需要構建一個企業級的 yum
倉庫,為多臺客戶端提供服務。

  • 本地光碟提供基礎軟體包: Base
  • yum快取提供常用軟體包: nginx、zabbix、docker

5.2.1 環境準備

系統 IP 角色
centos7 10.0.0.100 yum倉庫伺服器
centos7 10.0.0.99 yum倉庫客戶端

5.2.2 服務端操作

1.關閉 iptables 防火牆、與 selinux

[root@yum_server ~]# systemctl stop
firewalld
[root@yum_server ~]# setenforce 0

2.安裝 ftp 服務,啟動並加入開機啟動

[root@yum_server ~]# yum -y install vsftpd
[root@yum_server ~]# systemctl start vsftpd
[root@yum_server ~]# systemctl enable vsftpd

3.首先提供基礎 base 軟體包

[root@yum_server ~]# mkdir -p /var/ftp/centos7
[root@yum_server ~]# mount /dev/cdrom /mnt
[root@yum_server ~]# cp -rp /mnt/Packages/*.rpm /var/ftp/centos7/

4.提供第三方源的 rpm 軟體包,通過指令碼下載方式實現;

#必會:
[root@yum_server ~]#curl -s https://mirrors.aliyun.com/zabbix/zabbix/5.4/rhel/7/x86_64/ | grep "<a href" | awk -F '"' '{print $2}' | grep "rpm" | sed -r 's#(.*)# wget -O /var/ftp/zabbix/\1https://mirrors.aliyun.com/zabbix/zabbix/5.4/rhel/7/x86_64/\1#g' | bash
# 下載方式(略過)
[root@yum_server ~]# cat wget_rpm_scripts.sh
    #!/usr/bin/bash
    get_zabbix_rpm_url=https://mirrors.aliyun.c
    om/zabbix/zabbix/5.0/rhel/8/x86_64/
    rpm_name=$(curl -s ${get_zabbix_rpm_url} |
    grep "^<a"|awk -F '"' '{print $2}')
    rpm_dir=/var/ftp/ops
    for name in ${rpm_name}
    do
        if [ ! -d ${rpm_dir} ];then
            mkdir -p ${rpm_dir}
        fi
        wget -O ${rpm_dir}/${name}
         ${get_zabbix_rpm_url}${name}
    done
    
# 下載jenkins
[root@yum-server ~]# cat wget_jenkins.sh
    #!/usr/bin/bash
    #1.獲取包的名稱
    #2.下載的地址
    #3.將下載地址和包組織在一起,使用wget下載到指定位置
    rpm_dir=/var/ftp/jenkins
    rpm_url="https://mirrors.tuna.tsinghua.edu.
    cn/jenkins/redhat"
    rpm_pkg=$(curl -s
    https://mirrors.tuna.tsinghua.edu.cn/jenkin
    s/redhat/ | grep "<a href" | awk -F '"'
    '{print $4}' | grep "rpm")
    # 迴圈(遍歷)
    for i in ${rpm_pkg}
    do
        cd ${rpm_dir} && \
        wget ${rpm_url}/${i}
    done

5.提供第三方源的 rpm 軟體包,採用 Rsync 同步科大
源(https://mirrors.ustc.edu.cn/help/rsync-guide.html)方式實現,後期結合定時任務,定點同步網際網路最新軟體包

# rsync同步方式
[root@yum_server ~]# rsync -avz rsync://rsync.mirrors.ustc.edu.cn/repo/nginx /var/ftp/

6.將軟體包目錄建立為 yum 倉庫,安裝 createrepo ;

[root@yum_server ~]# yum -y install createrepo
[root@yum_server ~]# createrepo /var/ftp/ops
[root@yum_server ~]# createrepo /var/ftp/jenkins
[root@yum_server ~]# createrepo /var/ftp/nginx
#PS: 如果此倉庫每次新增軟體則需要重新生成一次

5.2.3 客戶端操作

所有客戶端僅需將 yum 源指向本地服務端,即可使用本
地伺服器提供的軟體包。

1.客戶端配置並使用 base 基礎源

[root@yum_client ~]# gzip /etc/yum.repos.d/*
[root@yum_client ~]# vim /etc/yum.repos.d/centos7.repo
[centos7]
name=centos7_base
baseurl=ftp://10.0.0.99/centos7
gpgcheck=0

2.客戶端配置並使用 nginx、jenkins、zabbix 等源

[root@yum_client ~]# vim /etc/yum.repos.d/ops.repo
[nginx]
name=local ftpserver
baseurl=ftp://10.0.0.99/nginx
gpgcheck=0
[zabbix]
name=local ftpserver
baseurl=ftp://10.0.0.99/zabbix
gpgcheck=0
[jenkins]
name=local ftpserver
baseurl=ftp://10.0.0.99/jenkins
gpgcheck=0

6. 原始碼包管理實踐

6.1 什麼是原始碼包

原始碼包指的是開發編寫好的程式原始碼,但並沒有將其
編譯為一個能正常使用的二進位制工具。

  • c --> 原始碼
  • 編譯操作
  • 二進位制檔案--》直接執行

6.2 為何需要原始碼包

  • 1.部分軟體官網僅提供原始碼包,需要自行編譯並安
  • 2.部分軟體在新版本有一些特性還沒來得及製作成
    rpm 包時,可以自行編譯軟體使用其新特性。
  • 3.原始碼包-->打包成一個rpm格式; rpm方式安裝;
    標準;

6.3 原始碼包的優缺點

  • 優點:
    • 1、可以自行修改原始碼,需要會C、
      python(openstack)、(k8s)go
    • 2、可以定製需要的相關功能
      • 網站;
      • 加密協議 https
    • 3、新版軟體優先更新原始碼
  • 缺點:
    • 1、相對 rpm 安裝軟體的方式會複雜很多。 rpm -
      ivh xx.rpm yum install lrzsz
    • 2、標準化實施困難,自動化就無法落地。

6.4 原始碼包如何獲取

6.5 原始碼包如何安裝

將原始碼包編譯為二進位制可執行檔案步驟如下圖,簡稱編
譯三步曲:

PS: 此方法不是百分百通用於所有原始碼包,建議拿到原始碼包解壓後,進入到目錄找相關的README幫助文件

6.6 Nginx原始碼包編譯

下面通過編譯 Nginx 軟體來深入瞭解下原始碼包編譯的過程。

1.基礎環境準備

[root@Server ~]# yum install -y gcc make wget

2.下載 nginx 原始碼包

[root@Server ~]# wget http://nginx.org/download/nginx-1.18.0.tar.gz

3.解壓 nginx 原始碼包,並進入相應目錄

[root@Server ~]# tar xf nginx-1.18.0.tar.gz
[root@Server ~]# cd nginx-1.18.0

4.配置相關的選項,並生成 Makefile

[root@Server nginx-1.18.0]# ./configure --
prefix=/opt/nginx-1.18.0

5.根據 Makefile 檔案,將軟體編譯為可執行的二進位制程式

[root@Server nginx-1.18.0]# make

6.將編譯好的二進位制檔案拷貝至對應的目錄

[root@Server nginx-1.18.0]# make install
  • 原始碼編譯報錯資訊處理
checking for C compiler ... not found
./configure: error: C compiler cc is not
found
# yum -y install gcc gcc-c++ make
./configure: error: the HTTP rewrite module
requires the PCRE library.
You can either disable the module by using
--without-http_rewrite_module
option, or install the PCRE library into
the system, or build the PCRE library
statically from the source with nginx by
using --with-pcre=<path> option.
# yum install -y pcre-devel
./configure: error: the HTTP gzip module
requires the zlib library.
You can either disable the module by using
--without-
http_gzip_module option, or install the
zlib library into the
system, or build the zlib library
statically from the source with
nginx by using --with-zlib=<path> option.
# yum -y install zlib-devel
./configure: error: SSL modules require the
OpenSSL library.
You can either do not enable the modules,
or install the OpenSSL
library into the system, or build the
OpenSSL library statically
from the source with nginx by using --with-
openssl=<path> option.
# yum -y install openssl-devel

7. Ubuntu軟體包管理

7.1 CentOS與Ubuntu的關係

  • CentOS 之前的地位: Fedora 穩定版-->釋出--> RHEL穩定版-->釋出--> CentOS
  • CentOS 如今的地位: Fedora 穩定版-->釋出-->CentOS Stream -->釋出--> RHEL

從 Redhat 收購 CentOS ,到 IBM 收購 Redhat,這是最
大的一次變化。但同時也是一個機會,讓我們跳出舒適
圈,去接觸其他優質穩定的企業級系統了。如 Debian、
Ubuntu 等等。

7.2 CentOS與Ubuntu的區別

CentOS vs Debian(含 Ubuntu)的區別:

操作內容 CentOS6 / CentOS7 Debian / Ubuntu
軟體包字尾 *.rpm *.deb
源配置檔案 /etc/yum.conf /etc/apt/sources
網絡卡配置檔案 /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/netplan/00-installer-config.yaml
建立使用者 預設建立使用者目錄,直譯器bash 預設不建立家目錄,直譯器為sh
防火牆規則 預設規則 預設沒有任何規則
許可權 root 或普通使用者 預設普通使用者許可權
SSH 預設允許root登入 預設不允許root登入
selinux /etc/selinux/config 沒有selinux
更新軟體包列表 yum makecache apt update
安裝軟體 yum install package apt install package
安裝已下載的軟體包 rpm -ivh pkg.rpm dpkg -i pkg.deb
安裝已下載的軟體包 yum localinstall pkg.rpm apt install ./pkg.deb
刪除軟體包 yum remove package apt remove package

7.3Ubuntu軟體包管理

  • Debian 軟體包的包名叫 deb ,類似於 rpm 包。對於
    deb 包的管理方式有 dpkg 、 apt 兩種方式
    • dpkg : package manager for Debin ,可以實
      現安裝、刪除,但無法解決依賴項;
    • apt : advanced Packaging Tool ,功能強大的
      軟體管理工具,類似於 dnf/yum ;

7.3.1 dpkg包管理

1.使用 dpkg 安裝軟體包

gao@ubuntu:~$ wget https://mirrors.aliyun.com/zabbix/zabbix/4.0/ubuntu/pool/main/z/zabbix/zabbix-agent_4.0.201%2Bfocal_amd64.deb

root@ubuntu:~# dpkg -i package.deb

2.使用 dpkg 刪除軟體包

# 不建議、不自動解除安裝依賴它的包
root@ubuntu:~# dpkg -r package.deb
# 刪除包(包括配置檔案)
root@ubuntu:~# dpkg -P package.deb

3.使用 dpkg 檢視軟體包

# 列出當前已安裝的包,類似於rpm -qa
root@ubuntu:~# dpkg -l
# 列出該包中所包含的檔案,類似於rpm -ql
root@ubuntu:~# dpkg -L package
# 檢視檔案所屬哪個包,類似於rpm -qf
root@ubuntu:~# whereis ping
root@ubuntu:~# dpkg -S /bin/ping

7.3.2 apt包管理

  • 早起 Ubuntu 使用 apt-get 命令來管理軟體包,在
    Ubuntu 16.04 釋出時,引入了新的包管理命令
    apt ,為什麼要引入 apt 命令呢?
  • 因為早期 Linux 包管理命令都被分散在了 apt-get、
    apt-cache、apt-config 這三條命令當中。那麼 apt
    命令的引入就是為了解決命令過於分散的問題。
  • 簡單來說就是: apt = apt-get、apt-cache、apt-
    config 中最常用命令選項的集合。
apt命令 apt-get 命令 命令的功能
apt install apt-get install 安裝軟體包
apt remove apt-get remove 移除軟體包
apt purge apt-get purge 移除軟體包及配置檔案
apt update apt-get update 重新整理儲存庫索引
apt upgrade apt-get upgrade 升級所有可升級的軟體包
apt autoremove apt-get autoremove 自動刪除不需要餓的包
apt full-upgrade apt-get dist-upgrade 在升級軟體包時自動處理依賴關係
apt search apt-cache search 搜尋應用程式
apt show apt-get show 顯示安裝細節

7.3.3 apt使用示例

1.檢查當前 ubuntu 版本

root@example:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.2 LTS
Release: 20.04
Codename: focal

2.根據 Ubuntu 版本配置國內倉庫地址阿里倉庫配置指南

# 手動修改如下配置檔案內容
root@example:~# vim /etc/apt/sources.list 
(focal 版本、其餘是軟體包儲存的位置)
deb http://mirrors.aliyun.com/ubuntu/ focal
main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/
focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/
focal-security main restricted universe
multiverse
deb-src http://mirrors.aliyun.com/ubuntu/
focal-security main restricted universe
multiverse
deb http://mirrors.aliyun.com/ubuntu/
focal-updates main restricted universe
multiverse
deb-src http://mirrors.aliyun.com/ubuntu/
focal-updates main restricted universe
multiverse
deb http://mirrors.aliyun.com/ubuntu/
focal-proposed main restricted universe
multiverse
deb-src http://mirrors.aliyun.com/ubuntu/
focal-proposed main restricted universe
multiverse
deb http://mirrors.aliyun.com/ubuntu/
focal-backports main restricted universe
multiverse
deb-src http://mirrors.aliyun.com/ubuntu/
focal-backports main restricted universe
multiverse
# 更新yum源
root@example:~# apt update

3.使用 apt 命令安裝進行軟體安裝

root@ubuntu:~# apt search desktop
root@ubuntu:~# apt install xubuntu-desktop -y
root@ubuntu:~# apt install samba vsftpd apache2 -y
centos:httpd
ubuntu:apache2

4.使用 apt 解除安裝軟體

# 並不會移除配置檔案
root@ubuntu:~# apt remove vsftpd -y
# 清理所有與vsftpd相關的配置
root@ubuntu:~# apt purge vsftpd -y

本文來自部落格園,作者:GaoBeier,轉載請註明原文連結:https://www.cnblogs.com/gao0722/p/15039370.html