常用的軟體包rpm/yum/npm到底有什麼區別

託尼沙灘褲發表於2020-11-25

在Linux中的軟體包

軟體包是什麼?軟體包顧名思義就是將應用程式、配置檔案和資料打包的產物.

所有的linux發行版都採用了某種形式的軟體包系統,這使得linux軟體管理和在windows下一樣方便,suse、red hat、fedora等發行版都是用rpm包,Debian和Ubuntu則使用.deb格式的軟體包。

mysql-5-3-4.rpm
redis-3-4-3.rpm
nginx2-3-2.rpm

在早期系統運維中,安裝軟體是一件非常費事費力的事情。系統管理員不得不下載軟體原始碼編譯軟體,並且為了系統做各種調整。儘管原始碼編譯形式的軟體增強了使用者定製的自由度,但是在小軟體上耗費精力是缺乏效率的,於是軟體包應運而生。

軟體包管理可以將管理員從無休止的相容問題中釋放。yum工具就可以自動搜尋依賴關係,並執行安裝。

1.RPM軟體包管理器

軟體包管理器核心功能

  • 製作軟體包 .rpm
  • 安裝、解除安裝、升級、查詢、校驗

在 RPM(紅帽軟體包管理器)公佈之前,要想在 Linux 系統中安裝軟體只能採取原始碼包 的方式安裝。

原始碼包安裝缺點:

  1. 步驟繁多,耗時
  2. 自己解決依賴
  3. 對運維知識要求高
  4. 管理維護難度大

RPM機制則為解決這些問題而設計的。RPM 有點像Windows系統中的控制皮膚,會建立統一的資料庫檔案,詳細記錄軟體資訊並能夠自動分析依賴關係。

rpm是由紅帽公司開發的軟體包管理方式,使用rpm我們可以方便的進行軟體的安裝、查詢、解除安裝、升級等工作。但是rpm軟體包之間的依賴性問題往往會很繁瑣,尤其是軟體由多個rpm包組成時。

1.rpm安裝命令

  • 安裝軟體的命令格式

    rpm -ivh filename.rpm 
    - i:表示安裝   
    - v:顯示詳細過程  
    - h:以進度條顯示
    
  • 升級軟體的命令格式

    rpm -Uvh filename.rpm
    
  • 解除安裝軟體的命令格式

    rpm -e filename.rpm
    
  • 查詢軟體描述資訊

    rpm -qpi filename.rpm
    
  • 列出軟體檔案資訊

    rpm -qpl filename.rpm
    
  • 查詢檔案屬於哪個RPM

    rpm -qf filename
    

2.rpm查詢軟體

rpm -q lrzsz   # 查詢lrzsz是否安裝
rpm -qi lrzsz  # 查詢lrzsz包的說明資訊
rpm -ql lrzsz  # 查詢lrzsz包生成的檔案列表
rpm -qc nginx  # 查詢nginx安裝生成後的配置檔案路徑
rpm -qf /etc/nginx/fastcgi.conf  # 檢視這個檔案由哪個rpm包安裝

3.rpm升級軟體

rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE: 如果裝有老版本的,則升級;否則,則安裝;
rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE:如果裝有老版本的,則升級;否則,退出;

4.rpm解除安裝軟體

rpm -e PACKAGE_NAME
需要手動解決依賴
不如 yum remove

5.rpm安裝軟體

#下載軟體包
wget https://rpmfind.net/linux/centos/7.5.1804/os/x86_64/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm

#安裝軟體包
[root@yugo /tmp 11:03:42]#rpm -ivh lrzsz-0.12.20-36.el7.x86_64.rpm
Preparing… ################################# [100%]
Updating / installing…
1:lrzsz-0.12.20-36.el7 ################################# [100%]

6.rpm問題

rpm軟體包管理安裝軟體的時候,會產生一系列問題,比如,你安裝一個軟體包,而這個軟體包有依賴軟體,那麼你需要先安裝依賴軟體;如果依賴的軟體還有依賴軟體,你不得崩潰嗎?

2.軟體管理yum工具

Yum(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及SUSE中的Shell前端軟體包管理器。基於RPM包管理,能夠從指定的伺服器自動下載RPM包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。

1.yum軟體包管理器

Yum (Yellow dog Updater, Modified) 黃狗升級器是一個在 Fedora 中的字元前端軟體包管理器。基於 RPM包管理(介紹見RPM包及其管理),能夠從指定的伺服器自動下載 RPM 包並且安裝,可以處理依賴性關係,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。

img

2.軟體安裝的三種方式:

  • 原始碼編譯安裝
  • 獲取軟體原始碼
  • 手動編譯安裝

yum工具是紅帽子才有的軟體管理工具,例如suse和烏班圖等系統,就沒有yum

yum提供了查詢、安裝、刪除某一個、一組甚至全部軟體包的命令,而且命令簡潔而又好記。

yum(選項)(引數):

-h:顯示幫助資訊;
-y:對所有的提問都回答“yes”;
-c:指定配置檔案;
-q:安靜模式;
-v:詳細模式;
-d:設定除錯等級(0-10);
-e:設定錯誤等級(0-10);
-R:設定yum處理一個命令的最大等待時間;
-C:完全從快取中執行,而不去下載或者更新任何標頭檔案。

3.什麼是yum源?

Yum全稱為 Yellow dog Updater, Modified,是一個在Fedora和RedHat以及CentOS中的Shell前端軟體包管理器。

基於RPM包管理,能夠從指定的伺服器自動下載RPM包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。

4.yum的基本工作機制如下

伺服器端:在伺服器上面存放了所有的RPM軟體包,然後以相關的功能去分析每個RPM檔案的依賴性關係,將這些資料記錄成檔案存放在伺服器的某特定目錄內。

客戶端:如果需要安裝某個軟體時,先下載伺服器上面記錄的依賴性關係檔案(可通過WWW或FTP方式),通過對伺服器端下載的紀錄資料進行分析,然後取得所有相關的軟體,一次全部下載下來進行安裝。

5.yum源的目錄

# 進入yum源目錄
cd /etc/yum.repos.d/
# 檢視yum原始檔
ls -l

配置阿里雲yum源

linux的yum倉庫目錄是

cd /etc/yum.repos.d/ 

這個目錄下,第一層中,所有以.repo結尾的檔案,都會識別為一個yum倉庫。(這個倉庫就是一個url),url中提供了各種rpm包的下載,yum工具回去查詢。

阿里雲yum源的下載地址:https://opsx.alibaba.com/mirror

1.備份原本的yum倉庫檔案

cd /etc/yum.repos.d
# 新建資料夾
mkdir  allrepo
# 移動所有的repo檔案到這個目錄下,我們不用它了
mv *  ./allrepo

2.下載新的阿里雲的yum倉庫檔案

wget -O /etc/yum.repos.d/CentOS-Base.repo   http://mirrors.aliyun.com/repo/Centos-7.repo
# -O  代表把Centos-7.repo  下載到指定目錄,且改名

3.配置額外的第三方倉庫

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

4.測試yum工具,安裝一個nginx

yum install nginx -y

5.啟動nginx測試訪問

systemctl start nginx

7.可以通過修改nginx的index網頁,直接展示覆制的頁面。

find / -name nginx/html/index.html

把網頁原始碼放進去就可以訪問了。

8.yum工具的其他方法

- yum repolist all  # 列出所有倉庫
- yum list all      # 列出倉庫所有軟體包
- yum info          # 軟體包名 檢視軟體包資訊
- yum install       # 軟體包名 安裝軟體包
- yum reinstall     # 軟體包名 重新安裝軟體包
- yum update        # 軟體包名 升級軟體包
- yum remove        # 軟體包名 移除軟體包
- yum clean all     # 清楚所有倉庫快取
- yum check-update  # 檢查可以更新的軟體包
- yum grouplist     # 檢視系統中已安裝的軟體包
- yum groupinstall  # 軟體包組 安裝軟體包組

3.NPM

NPM是隨同NodeJS一起安裝的包管理工具,能解決NodeJS程式碼部署上的很多問題,常見的使用場景有以下幾種:

允許使用者從NPM伺服器下載別人編寫的第三方包到本地使用。
允許使用者從NPM伺服器下載並安裝別人編寫的命令列程式到本地使用。
允許使用者將自己編寫的包或命令列程式上傳到NPM伺服器供別人使用。

相關文章