Linux軟件包安裝及管理

一、軟件包分類

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 makechche 構建緩存
yum clean all 清除緩存

  ③ 配置yum源

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

  Ⅰ、網絡yum源搭建(以阿里雲源爲例)

[root@localhost ~]# yum install wget    //安裝wget(一個從網絡上自動下載文件的自由工具)

[root@localhost /]# cd /etc/yum.repos.d/    //備份/etc/yum/repos.d/CentOS-Base.repo文件
[root@localhost yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.backup

[root@localhost 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])


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

[root@localhost 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可以使用本地光盤(映像文件)作爲yum源,Linux系統安裝映像文件中就含有幾乎所有常用的 RPM 包,因此足以滿足我們的需求。

[root@localhost ~]# mount /dev/sr0 /media/    //掛載光盤
mount: /dev/sr0 寫保護,將以只讀方式掛載

[root@localhost ~]# cd /etc/yum.repos.d/    //備份yum源配置文件
[root@localhost yum.repos.d]# mkdir backup
[root@localhost yum.repos.d]# mv Cen* backup/

[root@localhost yum.repos.d]# cp backup/CentOS-Media.repo CentOS-Media.repo    //我們以CentOS-Media.repo爲模板進行修改(此文件就是以本地光盤作爲 yum源的模板文件,只需進行簡單的修改即可)
[root@localhost 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來指定相應的簽名認證信息路徑

[root@localhost 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)

[root@localhost 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包在哪裏?

[root@localhost ~]# mount /dev/sr0 /media/   //首先需要掛載光盤
mount: /dev/sr0 寫保護,將以只讀方式掛載

[root@localhost ~]# cd /media/    //進入掛載點
[root@localhost 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
[root@localhost media]# cd Packages/    //進入Package目錄
[root@localhost 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"目錄下(推薦大家去官方網站去下載)。

  Ⅱ、解壓源碼包

[root@localhost src]# tar -zxvf 軟件包全名    //解壓後綴名爲tar.gz的源碼包
[root@localhost 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” 頭文件。


  ② 卸載

  源碼包卸載非常簡單便利,只需要直接刪除軟件的安裝目錄即可,但刪除前記得將軟件的服務停止哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章