天天看點

Linux軟體包安裝及管理

目錄

    • 一、軟體包分類
      • 1、源碼包
      • 2、二進制包
    • 二、安裝方式
      • 1、YUM安裝
      • 2、RPM安裝
      • 3、源碼安裝

一、軟體包分類

1、源碼包

  源碼包能直接看到源碼,需要我們去軟體官網進行下載下傳,通常為了友善釋出,會将源碼包做打包壓縮處理(常用的打包壓縮格式為"tar.gz"),其中一般包含多個檔案(源代碼檔案、配置和檢測程式、軟體安裝說明和軟體說明)。

優點:

  ① 開源,如果有足夠的能力,可以直接修改源代碼;

  ② 安裝時可以根據自己的需求選擇相應的功能,是以更加适合自己的系統,并且更加穩定、高效;

  ③ 解除安裝友善,直接删除安裝軟體的目錄即可。

缺點:

  ① 安裝步驟較多,尤其安裝較大的軟體集合時,容易出現錯誤;

  ② 因為是編譯安裝,安裝過程中一旦報錯新手很難解決;

  ③ 編譯時間比較長。

2、二進制包

  二進制包就是源碼包經過成功編譯之後産生的包,是Linux下預設的軟體安裝包。

優點:

  ① 包管理系統簡單,隻需要幾個指令就可以實作包的安裝,更新,查詢和解除安裝;

  ② 安裝速度比源碼包快很多;

  ③ 安裝過程中報錯幾率很小。

缺點:

  ① 已經經過編譯,看不到源代碼;

  ② 功能選擇不如源碼包靈活;

  ③ 安裝過程中有很多依賴包,依賴性不好解決。

二、安裝方式

1、YUM安裝

  ① YUM簡介

  yum(Yellow dog Updater, Modified)是一個在Fedora和RedHat以及CentOS中的Shell前端軟體包管理器。基于RPM包管理,能夠從指定的伺服器自動下載下傳RPM包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載下傳、安裝。yum提供了查找、安裝、删除某一個、一組甚至全部軟體包的指令,而且指令簡潔而又好記。

  ② YUM指令

  • 指令解釋

      yum - Yellowdog Updater Modified(Shell前端軟體包管理器)

  • 指令文法

      yum [options] [command] [package …]

  其中,[options]為可選項,選項包括-h(幫助),-y(當安裝過程提示選擇全部為"yes"),-q(不顯示安裝的過程)等等;[command]為所要進行的操作;[package]是操作的對象。
  • 常用的yum指令

  Ⅰ、顯示和查找

命 令 解 釋
yum repolist [all / enabled / disabled] 顯示配置的倉庫 [全部 / 可用 / 不可用]
yum list [all] 顯示所有軟體包
yum list | grep 包名 查找指定的軟體包
yum list installed 顯示已安裝的所有軟體包
yum list available 顯示可安裝的軟體包
yum list updates 顯示已更新的軟體包
yum list recent 顯示最近增加的軟體包
yum search 關鍵詞 以指定的關鍵詞對軟體包進行模糊查詢
yum info 包名 顯示指定軟體包資訊
yum provides 包名 列出軟體包中的檔案

  Ⅱ、安裝

命 令 解 釋
yum install 包名 安裝指定軟體包(過程中需要确認)
yum install 包名 -y 安裝指定軟體包(無需确認)

  Ⅲ、更新

命 令 解 釋
yum update 包名 更新指定軟體包
yum check-update 檢查可更新的程式

  Ⅳ、解除安裝

命 令 解 釋
yum remove 包名 解除安裝已安裝的軟體包

  Ⅴ、建立和清理緩存

命 令 解 釋
yum makecache 建構緩存
yum clean all 清除緩存

  ③ 配置yum源

  yum管理是從指定的伺服器下載下傳資源,而下載下傳資源的這個地方就叫做yum源。使用yum安裝軟體時至少需要一個yum源,這個yum源既可以是網絡源,也可以是本地源。接下來為大家示範兩種yum源的搭建方式。

  Ⅰ、網絡yum源搭建(以阿裡雲源為例)

[[email protected] ~]# yum install wget    //安裝wget(一個從網絡上自動下載下傳檔案的自由工具)

[[email protected] /]# cd /etc/yum.repos.d/    //備份/etc/yum/repos.d/CentOS-Base.repo檔案
[[email protected] yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.backup

[[email protected] yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo    //下載下傳新的CentOS-Base.repo到/etc/yum.repos.d(以CentOS-7.repo為例)
--2020-03-17 09:31:20--  http://mirrors.aliyun.com/repo/Centos-7.repo
正在解析主機 mirrors.aliyun.com (mirrors.aliyun.com)... 111.19.177.243, 111.19.210.115, 111.19.177.248, ...
正在連接配接 mirrors.aliyun.com (mirrors.aliyun.com)|111.19.177.243|:80... 已連接配接。
已發出 HTTP 請求,正在等待回應... 200 OK
長度:2523 (2.5K) [application/octet-stream]
正在儲存至: “/etc/yum.repos.d/CentOS-Base.repo”

100%[======================================>] 2,523       --.-K/s 用時 0s

2020-03-17 09:31:20 (10.5 MB/s) - 已儲存 “/etc/yum.repos.d/CentOS-Base.repo” [2523/2523])


[[email protected] yum.repos.d]# yum clean all    //清理緩存
已加載插件:fastestmirror
正在清理軟體源: base extras updates
Cleaning up list of fastest mirrors

[[email protected] yum.repos.d]# yum makecache    //建構緩存
已加載插件:fastestmirror
Determining fastest mirrors
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
base                                                     | 3.6 kB     00:00
extras                                                   | 2.9 kB     00:00
updates                                                  | 2.9 kB     00:00
(1/10): base/7/x86_64/group_gz                             | 165 kB   00:00
(2/10): base/7/x86_64/filelists_db                         | 7.3 MB   00:02
(3/10): base/7/x86_64/other_db                             | 2.6 MB   00:00
(4/10): extras/7/x86_64/filelists_db                       | 216 kB   00:00
(5/10): extras/7/x86_64/other_db                           | 106 kB   00:00
(6/10): base/7/x86_64/primary_db                           | 6.0 MB   00:03
(7/10): updates/7/x86_64/filelists_db                      | 4.0 MB   00:01
(8/10): updates/7/x86_64/other_db                          | 493 kB   00:01
(9/10): updates/7/x86_64/primary_db                        | 6.7 MB   00:02
(10/10): extras/7/x86_64/primary_db                        | 164 kB   00:04
中繼資料緩存已建立

           

  Ⅱ、本地yum源搭建

  在沒有網絡的情況下,yum可以使用本地CD光牒(映像檔案)作為yum源,Linux系統安裝映像檔案中就含有幾乎所有常用的 RPM 包,是以足以滿足我們的需求。

[[email protected] ~]# mount /dev/sr0 /media/    //挂載CD光牒
mount: /dev/sr0 寫保護,将以隻讀方式挂載

[[email protected] ~]# cd /etc/yum.repos.d/    //備份yum源配置檔案
[[email protected] yum.repos.d]# mkdir backup
[[email protected] yum.repos.d]# mv Cen* backup/

[[email protected] yum.repos.d]# cp backup/CentOS-Media.repo CentOS-Media.repo    //我們以CentOS-Media.repo為模闆進行修改(此檔案就是以本地CD光牒作為 yum源的模闆檔案,隻需進行簡單的修改即可)
[[email protected] yum.repos.d]# vim CentOS-Media.repo
[CentOS]    //軟體源的名字,不能為空
name=CentOS-Media    //軟體源的描述
baseurl=file:///media/    //指定伺服器位址,因為是本地檔案是以使用file,在這裡一定要注意是三個"/",其中前兩個是标準格式,第三個是目錄路徑。
gpgcheck=0    //表示下載下傳軟體包時是否檢查簽名,0表示不檢查,1表示檢查
enabled=1    //表示是否啟用這個軟體源,0表示不啟用,1表示啟用
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7    //開啟gpgcheck後通過gpgkey來指定相應的簽名認證資訊路徑

[[email protected] yum.repos.d]# yum clean all    //清理緩存
已加載插件:fastestmirror
正在清理軟體源: CentOS
Cleaning up list of fastest mirrors
Other repos take up 79 M of disk space (use --verbose for details)

[[email protected] yum.repos.d]# yum makecache    //建構緩存
已加載插件:fastestmirror
Determining fastest mirrors
CentOS                                                   | 3.6 kB     00:00
(1/4): CentOS/group_gz                                     | 166 kB   00:00
(2/4): CentOS/filelists_db                                 | 3.2 MB   00:00
(3/4): CentOS/primary_db                                   | 3.1 MB   00:00
(4/4): CentOS/other_db                                     | 1.3 MB   00:00
中繼資料緩存已建立

           

2、RPM安裝

  ① RPM簡介

  rpm(redhat package manager) 原本是 Red Hat Linux 發行版專門用來管理 Linux 各項套件的程式,由于它遵循 GPL 規則且功能強大友善,因而廣受歡迎。逐漸受到其他發行版的采用。yum可以自動判斷依賴,一次性安裝多個rpm軟體包,但原理和一個個地安裝rpm軟體包沒有本質差別。

  ② RPM包在哪裡?

[[email protected] ~]# mount /dev/sr0 /media/   //首先需要挂載CD光牒
mount: /dev/sr0 寫保護,将以隻讀方式挂載

[[email protected] ~]# cd /media/    //進入挂載點
[[email protected] media]# ll    //Package這個目錄裡就是自帶編譯好的rpm程式包
總用量 686
-rw-rw-r--. 1 root root     14 11月 26 2018 CentOS_BuildTag
drwxr-xr-x. 3 root root   2048 11月 26 2018 EFI
-rw-rw-r--. 1 root root    227 8月  30 2017 EULA
-rw-rw-r--. 1 root root  18009 12月 10 2015 GPL
drwxr-xr-x. 3 root root   2048 11月 26 2018 images
drwxr-xr-x. 2 root root   2048 11月 26 2018 isolinux
drwxr-xr-x. 2 root root   2048 11月 26 2018 LiveOS
`drwxrwxr-x. 2 root root 663552 11月 26 2018 Packages`
drwxrwxr-x. 2 root root   4096 11月 26 2018 repodata
-rw-rw-r--. 1 root root   1690 12月 10 2015 RPM-GPG-KEY-CentOS-7
-rw-rw-r--. 1 root root   1690 12月 10 2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r--. 1 root root   2883 11月 26 2018 TRANS.TBL
[[email protected] media]# cd Packages/    //進入Package目錄
[[email protected] Packages]# ls    //rpm包命名原則:軟體包名-版本号-釋出次數-适用系統-适用的CPU架構平台_支援系統位數.包擴充名(rpm)
...省略部分資訊
zenity-3.28.1-1.el7.x86_64.rpm
zip-3.0-11.el7.x86_64.rpm
zlib-1.2.7-18.el7.x86_64.rpm
zlib-devel-1.2.7-18.el7.x86_64.rpm
zsh-5.0.2-31.el7.x86_64.rpm
zziplib-0.13.62-9.el7.x86_64.rpm
...省略部分資訊

           

  ③ RPM指令

  • 指令解釋

      rpm - RPM Package Manager(RPM軟體包管理器)

  • 指令文法

      rpm [選項]… [完整包名]

  • 常用的rpm指令

  Ⅰ、安裝

  

rpm -ivh 完整軟體包名

選 項 解 釋
-i 安裝( install)
-v 顯示詳細資訊(verbose)
-h 顯示進度條(hash),每個#代表%2的進度
--force 強制安裝
--nodeps 忽略依賴

  Ⅱ、更新

  

rpm -Uvh 完整軟體包名

     如果該軟體沒安裝過則直接安裝;若沒安裝則更新至最新版本

  

rpm -Fvh 完整軟體包名

     如果該軟體沒有安裝,則不會安裝,必須安裝有較低版本才能更新

選 項 解 釋
-U 更新或安裝
-F 更新

  Ⅲ、解除安裝

  RPM 軟體包的解除安裝要考慮包之間的依賴性,先安裝的後解除安裝,後安裝的先解除安裝。

  

rpm -e 軟體包名

選 項 解 釋
-e 解除安裝( erase)

  Ⅳ、查詢

  

rpm -q 軟體包名

        查詢軟體包是否安裝

  

rpm -qa

           查詢所有已安裝的軟體包

  

rpm -qi

           查詢軟體包相關資訊

  

rpm -qf 檔案名

        查詢系統檔案屬于哪個RPM包

  

rpm -qR 軟體包名

       查詢軟體包的依賴性

選 項 解 釋
-q 查詢(query)
-a 所有(all)
-i 軟體包相關資訊(information)
-f 系統檔案所屬的軟體包(file)
-R 軟體包的依賴性(rely)

  Ⅳ、校驗

  

rpm -V 已安裝的軟體包名

選 項 解 釋
-V 校驗指定rpm包中的檔案(verify)

  執行後無任何提示資訊,表明軟體包安裝的檔案均未改動過。

3、源碼安裝

  ① 安裝

  Ⅰ、下載下傳源碼包

  下載下傳指定軟體的源碼包(字尾名為"tar.gz"或"tar.bz2")至"/usr/local/src"目錄下(推薦大家去官方網站去下載下傳)。

  Ⅱ、解壓源碼包

[[email protected] src]# tar -zxvf 軟體包全名    //解壓字尾名為tar.gz的源碼包
[[email protected] src]# tar -jxvf 軟體包全名    //解壓字尾名為tar.bz2的源碼包

           

  Ⅲ、切換到源碼目錄(解壓後的目錄)下,執行後續操作

  我們可以檢視INSTALL檔案,裡面寫着一些安裝說明。一般來說源碼安裝需要三步:配置(configure)→編譯(make)→安裝(make install)。

  a、配置 # ./configure

  可以跟以下參數:

參 數 解 釋
--prefix=安裝路徑 指定安裝路徑
--enable-FEATURE 啟用某項功能
--disable-FEATURE 禁用某項功能
--with-package=包所在的路徑 與其他軟體關聯

  配置操作主要是定義需要的功能選項、檢測系統環境是否符合安裝要求(例如,是否有gcc編譯器,是否滿足依賴需求等)、把系統環境的檢測結果和定義好的功能選項寫入 Makefile 檔案(後續的編譯和安裝需要依賴這個檔案的内容)。

  b、編譯 # make

  make 會調用 gcc 編譯器,并讀取 Makefile 檔案中的資訊進行系統軟體編譯。

  c、安裝 # make install

  根據Makefile定義的檔案路徑進行安裝,整個過程不報錯,即為安裝成功。如果出現"error"或"warning"且安裝過程停止,表示安裝失敗;但是如果僅出現警告資訊,但安裝過程還在繼續,這并不是安裝失敗!

tips:如果在 “./configure” 或 “make” 兩步中出現錯誤,則在重新執行這兩步前必須執行 make clean 指令,它會清空 Makefile 檔案或編譯産生的 “.o” 頭檔案。

  ② 解除安裝

  源碼包解除安裝非常簡單便利,隻需要直接删除軟體的安裝目錄即可,但删除前記得将軟體的服務停止哦!

繼續閱讀