系統套件管理
傳統的 Linux 使用 rpm , dpkg 來管理套件,但使用者需要手動管理套件之間的相依性,為解決套件的相依性,目前漸漸都改成為 yum (RedHat 或是 CentOS) 或是 apt-get (Ubuntu) .
-
RPM
可以參考 RPM 套件管理 – https://benjr.tw/187 或是 Soruce RPM – https://benjr.tw/190,以及圖形介面的 system-config-packages – https://benjr.tw/2663
關於 Repository 設定請參考 https://benjr.tw/23636
- 安裝:# rpm -ivh 套件名稱
- 移除:# rpm -e 套件名稱
- 升級:# rpm -Uvh 套件名稱 或是 # rpm -Fvh 套件名稱
- 查詢:# rpm -q 套件名稱
-
YUM
可以參考 yum 的詳細說明 https://benjr.tw/96145
- 更新:#yum update 套件名稱
- 安裝:#yum install 套件名稱
- 移除:#yum remove 套件名稱
- 搜尋:#yum search 套件名稱
- 清除:#yum clean
清除 /var/cache/yum 下載的暫存套件檔,使用 #yum clean all 可以一次就給他清乾淨. - 更新:#yum list updates
列出所有可供更新的套件. - 已安裝:#yum list installed
列出所有已經安裝的套件. - 已安裝:#yum whatprovides “*command”
查詢未安裝的程式是由哪一個套件裡提供的,請參考 https://benjr.tw/95041 - yum grouplist & yum groups install 套件名稱
要額外安裝桌面系統會很麻煩.這時候可以透過 group install 的方式.請參考 https://benjr.tw/96155 - yum history
用來檢視目前 yum 的狀歷史態,請參考 https://benjr.tw/103542 .
yum-utils
- yum-builddep
編譯 src.rpm (RPM Source) 需要在編譯前要把所有需要的工具先安裝好,編譯的時候才不會出錯,這時候我們可以透過 yum-builddep 這隻工具幫我們做前置作業. 可以參考 yum-builddep 的詳細說明 https://benjr.tw/95425 - package-cleanup
用來檢視系統已安裝的套件哪些是有重複或是孤立的,請參考 https://benjr.tw/103553
-
dnf
Fedora 22 改成 DNF : Dandified Yum (#dnf) 為預設的套件管理工具.可以參考 https://benjr.tw/96160 Dandified Yum (#dnf) 套件管理.
-
APT, APT-GET
可以參考 apt 的詳細說明 https://benjr.tw/95601 ,或是 apt-get 的說明 https://benjr.tw/93967
- 更新:#apt-get update
更新 /etc/apt/sources.list 套件清單內容 - 升級:#apt-get upgrade
系統會依據 /etc/apt/sources.list 內容是更新套件 (需要透過 #apt-get update 來更新清單內容) ,但不執行套件移除 或是 更新沒有安裝過的套件.如果會影響到其它套件的相依性該套件也不會更新. - 升級:#apt-get dist-upgrade
系統會依據 /etc/apt/sources.list 內容是更新套件 (需要透過 #apt-get update 來更新清單內容) ,與 upgrade 不同的是 他會處理套件相依性的問題,系統如果有重要更新套件 (未安裝過的) 也會一併安裝,也有可能會移除一些套件. - 安裝:#apt-get install
不用考慮到相依性的問題,系統會自行處理相依性問題. - 移除:#apt-get remove
不用考慮到相依性的問題,系統會自行處理相依性問題. - 移除:#apt-get purge
除了移除程式連設定檔會一併移除掉. - 清除:#apt-get clean
清除位於 /var/cache/apt/archives 的下載暫存套件檔案. - 搜尋:#apt-cache search
- 檢視套件:#apt-cache show
可以顯示套件資訊,類似 #rpm -qi 的方式 - 檢視套件:#apt-cache showpkg
showpkg 跟 show 的作用有點像,在 man page 裡面可以看到這兩個的定義.
showpkg – Show some general information for a single package
show – Show a readable record for the package
其實都是顯示套件內容但顯示會不一樣.都可以試著讀讀看.
如果你是要透過 Http-proxy 使用 apt-get 請參考 https://benjr.tw/91047
關於 apt-get update , upgrade , dist-upgrade , do-release-upgrade 的區別,請參考 https://benjr.tw/95594 - 更新:#apt-get update
-
dpkg
下面列的幾個是常用的 dpkg 參數,更多的參數請參考 https://benjr.tw/94000
- 安裝套件(等同 #rpm -i)
# dpkg -i | –install < .deb file name> - 刪除套件,但保留設定檔(等同 #rpm -e)
# dpkg -r|–remove < package > - 列出系統中所有已經安裝的套件(等同 #rpm -qa)
# dpkg -l|–list [< pattern > …]
後面可以加 pattern 來查詢單一套件,如果不確定套件名稱可以配合 grep 來查套件關鍵字查.
- 安裝套件(等同 #rpm -i)
-
git
使用 git 下載原始碼 (source code) 的檔案.
-
Dynamical Link Libs
Linux 上大部分的程式是採用 Dynamical Link 方式來編譯,我們可以透過 ldconfig 或是 ldd 來觀察 dynamically linked (uses shared libs) 的狀態 – https://benjr.tw/23423
程式語言套件管理
Linux 下的程式語言也使用類似的方式來管理程式語言模組.
-
Perl
Perl Modules 模組安裝,更新可以透過 Source Code, CPAN, CPANM, CPANP 等方式,請參考 https://benjr.tw/16053 .
-
Python
Python Modules 模組安裝,更新可以透過 pip ,請參考 https://benjr.tw/14925 .
2 thoughts on “Linux 套件管理 ( Package Manager )”