一、軟件包分類
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” 頭文件。
② 卸載
源碼包卸載非常簡單便利,只需要直接刪除軟件的安裝目錄即可,但刪除前記得將軟件的服務停止哦!