1. 程式人生 > >linux軟體安裝之詳解apt、yum、dnf 和 pkg包安裝

linux軟體安裝之詳解apt、yum、dnf 和 pkg包安裝

介紹

包管理系統除了安裝軟體外,它還提供了工具來更新已經安裝的包。包儲存庫有助於確保你的系統中使用的程式碼是經過審查的,並且軟體的安裝版本已經得到了開發人員和包維護人員的認可。

在配置伺服器或開發環境時,我們最好了解下包在官方儲存庫之外的情況。某個發行版的穩定版本中的包有可能已經過時了,尤其是那些新的或者快速迭代的軟體。然而,包管理無論對於系統管理員還是開發人員來說都是至關重要的技能,而已打包的軟體對於主流Linux 發行版來說也是一筆巨大的財富。

本指南旨在快速地介紹下在多種 Linux 發行版中查詢、安裝和升級軟體包的基礎知識,並幫助您將這些內容在多個系統之間進行交叉對比。

包管理系統:簡要概述

大多數包系統都是圍繞包檔案的集合構建的。包檔案通常是一個存檔檔案,它包含已編譯的二進位制檔案和軟體的其他資源,以及安裝指令碼。包檔案同時也包含有價值的元資料,包括它們的依賴項,以及安裝和執行它們所需的其他包的列表。

雖然這些包管理系統的功能和優點大致相同,但打包格式和工具卻因平臺而異:

作業系統 格式 工具
Debian .deb apt, apt-cache, apt-get, dpkg
Ubuntu .deb apt, apt-cache, apt-get, dpkg
Fedora .rpm dnf
FreeBSD Ports, .txz make, pkg

Debian 及其衍生版,如 Ubuntu、Linux Mint 和 Raspbian,它們的包格式是 .deb。APT 這款先進的包管理工具提供了大多數常見的操作命令:搜尋儲存庫、安裝軟體包及其依賴項,並管理升級。在本地系統中,我們還可以使用 dpkg 程式來安裝單個的 deb 檔案,APT 命令作為底層 dpkg 的前端,有時也會直接呼叫它。

最近釋出的 debian 衍生版大多數都包含了 apt 命令,它提供了一個簡潔統一的介面,可用於通常由 apt-get 和 apt-cache 命令處理的常見操作。這個命令是可選的,但使用它可以簡化一些任務。

CentOS、Fedora 和其它 Red Hat 家族成員使用 RPM 檔案。在 CentOS 中,通過 yum 來與單獨的包檔案和儲存庫進行互動。

在最近的 Fedora 版本中,yum 已經被 dnf 取代,dnf 是它的一個現代化的分支,它保留了大部分 yum的介面。

FreeBSD 的二進位制包系統由 pkg 命令管理。FreeBSD 還提供了 Ports 集合,這是一個存在於本地的目錄結構和工具,它允許使用者獲取原始碼後使用 Makefile 直接從原始碼編譯和安裝包。

更新包列表

大多數系統在本地都會有一個和遠端儲存庫對應的包資料庫,在安裝或升級包之前最好更新一下這個資料庫。另外,yum 和 dnf 在執行一些操作之前也會自動檢查更新。當然你可以在任何時候對系統進行更新。

系統 命令
Debian / Ubuntu sudo apt-get update
sudo apt update
CentOS yum check-update
Fedora dnf check-update
FreeBSD Packages sudo pkg update
FreeBSD Ports sudo portsnap fetch update

更新已安裝的包

在沒有包系統的情況下,想確保機器上所有已安裝的軟體都保持在最新的狀態是一個很艱鉅的任務。你將不得不跟蹤數百個不同包的上游更改和安全警報。雖然包管理器並不能解決升級軟體時遇到的所有問題,但它確實使你能夠使用一些命令來維護大多數系統元件。

在 FreeBSD 上,升級已安裝的 ports 可能會引入破壞性的改變,有些步驟還需要進行手動配置,所以在通過 portmaster 更新之前最好閱讀下 /usr/ports/UPDATING 的內容。

系統 命令 說明
Debian / Ubuntu sudo apt-get upgrade 只更新已安裝的包
sudo apt-get dist-upgrade 可能會增加或刪除包以滿足新的依賴項
sudo apt upgrade 和 apt-get upgrade 類似
sudo apt full-upgrade 和 apt-get dist-upgrade 類似
CentOS sudo yum update
Fedora sudo dnf upgrade
FreeBSD Packages sudo pkg upgrade
FreeBSD Ports less /usr/ports/UPDATING 使用 less 來檢視 ports 的更新提示(使用上下游標鍵滾動,按 q 退出)。
cd /usr/ports/ports-mgmt/portmaster && sudo make install && sudo portmaster -a 安裝 portmaster 然後使用它更新已安裝的 ports

搜尋某個包

大多數發行版都提供針對包集合的圖形化或選單驅動的工具,我們可以分類瀏覽軟體,這也是一個發現新軟體的好方法。然而,查詢包最快和最有效的方法是使用命令列工具進行搜尋。

系統 命令 說明
Debian / Ubuntu apt-cache search search_string
apt search search_string
CentOS yum search search_string
yum search all search_string 搜尋所有的欄位,包括描述
Fedora dnf search search_string
dnf search all search_string 搜尋所有的欄位,包括描述
FreeBSD Packages pkg search search_string 通過名字進行搜尋
pkg search -f search_string 通過名字進行搜尋並返回完整的描述
pkg search -D search_string 搜尋描述
FreeBSD Ports cd /usr/ports && make search name=package 通過名字進行搜尋
cd /usr/ports && make search key=search_string 搜尋評論、描述和依賴

檢視某個軟體包的資訊

在安裝軟體包之前,我們可以通過仔細閱讀包的描述來獲得很多有用的資訊。除了人類可讀的文字之外,這些內容通常包括像版本號這樣的元資料和包的依賴項列表。

系統 命令 說明
Debian / Ubuntu apt-cache show package 顯示有關包的本地快取資訊
apt show package
dpkg -s package 顯示包的當前安裝狀態
CentOS yum info package
yum deplist package 列出包的依賴
Fedora dnf info package
dnf repoquery --requires package 列出包的依賴
FreeBSD Packages pkg info package 顯示已安裝的包的資訊
FreeBSD Ports cd /usr/ports/category/port && cat pkg-descr

從儲存庫安裝包

知道包名後,通常可以用一個命令來安裝它及其依賴。你也可以一次性安裝多個包,只需將它們全部列出來即可。

系統 命令 說明
Debian / Ubuntu sudo apt-get install package
sudo apt-get install package1 package2 ... 安裝所有列出來的包
sudo apt-get install -y package 在 apt 提示是否繼續的地方直接預設 yes
sudo apt install package 顯示一個彩色的進度條
CentOS sudo yum install package
sudo yum install package1 package2 ... 安裝所有列出來的包
sudo yum install -y package 在 yum 提示是否繼續的地方直接預設 yes
Fedora sudo dnf install package
sudo dnf install package1 package2 ... 安裝所有列出來的包
sudo dnf install -y package 在 dnf 提示是否繼續的地方直接預設 yes
FreeBSD Packages sudo pkg install package
sudo pkg install package1 package2 ... 安裝所有列出來的包
FreeBSD Ports cd /usr/ports/category/port && sudo make install 從原始碼構建安裝一個 port

從本地檔案系統安裝一個包

對於一個給定的作業系統,有時有些軟體官方並沒有提供相應的包,那麼開發人員或供應商將需要提供包檔案的下載。你通常可以通過 web 瀏覽器檢索這些包,或者通過命令列 curl 來檢索這些資訊。將包下載到目標系統後,我們通常可以通過單個命令來安裝它。

在 Debian 派生的系統上,dpkg 用來處理單個的包檔案。如果一個包有未滿足的依賴項,那麼我們可以使用 gdebi 從官方儲存庫中檢索它們。

在 CentOS 和 Fedora 系統上,yum 和 dnf 用於安裝單個的檔案,並且會處理需要的依賴。

系統 命令 說明
Debian / Ubuntu sudo dpkg -i package.deb
sudo apt-get install -y gdebi && sudo gdebi package.deb 安裝 gdebi,然後使用 gdebi 安裝 package.deb 並處理缺失的依賴
CentOS sudo yum install package.rpm
Fedora sudo dnf install package.rpm
FreeBSD Packages sudo pkg add package.txz
sudo pkg add -f package.txz 即使已經安裝的包也會重新安裝

刪除一個或多個已安裝的包

由於包管理器知道給定的軟體包提供了哪些檔案,因此如果某個軟體不再需要了,它通常可以乾淨利落地從系統中清除這些檔案。

系統 命令 說明
Debian / Ubuntu sudo apt-get remove package
sudo apt remove package
sudo apt-get autoremove 刪除不需要的包
CentOS sudo yum remove package
Fedora sudo dnf erase package
FreeBSD Packages sudo pkg delete package
sudo pkg autoremove 刪除不需要的包
FreeBSD Ports sudo pkg delete package
cd /usr/ports/path_to_port && make deinstall 解除安裝 port

apt 命令

Debian 家族發行版的管理員通常熟悉 apt-get 和 apt-cache。較少為人所知的是簡化的 apt 介面,它是專為互動式使用而設計的。

傳統命令 等價的 apt 命令
apt-get update apt update
apt-get dist-upgrade apt full-upgrade
apt-cache search string apt search string
apt-get install package apt install package
apt-get remove package apt remove package
apt-get purge package apt purge package

雖然 apt 通常是一個特定操作的快捷方式,但它並不能完全替代傳統的工具,它的介面可能會隨著版本的不同而發生變化,以提高可用性。如果你在指令碼或 shell 管道中使用包管理命令,那麼最好還是堅持使用 apt-get 和 apt-cache。

獲取幫助

除了基於 web 的文件,請記住我們可以通過 shell 從 Unix 手冊頁(通常稱為 man 頁面)中獲得大多數的命令。比如要閱讀某頁,可以使用 man:

在 man 中,你可以用箭頭鍵導航。按 / 搜尋頁面內的文字,使用 q 退出。

系統 命令 說明
Debian / Ubuntu man apt-get 更新本地包資料庫以及與包一起工作
man apt-cache 在本地的包資料庫中搜索
man dpkg 和單獨的包檔案一起工作以及能查詢已安裝的包
man apt 通過更簡潔,使用者友好的介面進行最基本的操作
CentOS man yum
Fedora man dnf
FreeBSD Packages man pkg 和預先編譯的二進位制包一起工作
FreeBSD Ports man ports 和 Ports 集合一起工作

相關推薦

linux軟體安裝aptyumdnf pkg安裝

介紹 包管理系統除了安裝軟體外,它還提供了工具來更新已經安裝的包。包儲存庫有助於確保你的系統中使用的程式碼是經過審查的,並且軟體的安裝版本已經得到了開發人員和包維護人員的認可。 在配置伺服器或開發環境時,我們最好了解下包在官方儲存庫之外的情況。某個發行版的穩定版本中的包有

LinuxCENTOS7安裝步驟

1.安裝虛擬機器 (1)雙擊vmware12.exe安裝包,一路下一步安裝成功     (2)注: 安裝到這裡把這兩個對勾去了,不檢查更新。   (3)開始安裝,等待出現以下介面: 輸入以下序列號,完成啟用:VY1DU-2VXDH

LR監控linuxrstatd的安裝-Zee

Monitor name :UNIX Resources. Cannot initialize the monitoring on 10.1.200.65. Error while creating the RPC client. Ensure that the machine can be connecte

Linux軟體安裝(rpmyumapt-get)

rpm常用命令rpm -ivh 軟體包名稱 rpm -uvh 軟體包名稱 rpm -e 軟體名稱 rpm -qa | grep 軟體名稱 rpm -ql 軟體名稱 rpm -qf 檔案絕對路徑http://rpmfind.net/ yum常用命令(Redhat安裝rpm包)yum repolist yum

#21 在Linux裏進程管理,與pstreepspgreppkillpidoftop命令的應用

在linux裏進程管理詳解 與pstree、ps、pgrep、pkill、pidof、top命令的應用 進程管理: 所謂進程:process,一個活動的程序的實體的副本; 生命周期; 可能包含一個或多個執行流; 創建進程: 每個進程的組織結構是一致的: 內核在正常啟動並且全

LNMP編譯安裝nginx安裝--圖文

star bin software tcp firewall onf nload b- 編譯安裝 LNMP編譯安裝之nginx安裝--圖文詳解 1、前言 本次安裝采用源碼安裝,主要資源包從官網下載,次要依賴則使用yum進行安裝,本篇只涉及nginx的安裝,不涉及nginx

linux--系統啟動及安裝過程

linux啟動先通過一張圖來簡單了解下整個系統啟動的流程,整個過程基本可以分為POST-->BIOS-->MBR(GRUB)-->Kernel-->Init-->Runlevel本文出自 “運維自動化” 博客,請務必保留此出處http://shower.blog.51cto.co

Linux 安裝 JDK

根目錄 exp 傳輸 software 軟件包 ava 如果 local tools 安裝 JDK 說明:Linux 系統中安裝軟件需在 root 用戶下進行。 (1) 首先下載 jdk-8u131-linux-x64.rpm (2)將用戶切換至 r

python中呼叫R語言通過rpy2 進行互動安裝配置(R_USERR_HOME配置)

python中呼叫R語言通過rpy2 進行詳解 文章目錄 python中呼叫R語言通過rpy2 進行詳解 1.R語言的安裝: 2.Rpy2工具的安裝和配置 3.pycharm中使用R語言配置

linux安裝solr

什麼是Solr 大多數搜尋引擎應用都必須具有某種搜尋功能,問題是搜尋功能往往是巨大的資源消耗並且它們由於沉重的資料庫載入而拖垮你的應用的效能。 這就是為什麼轉移負載到一個外部的搜尋伺服器是一個不錯的主意,Apache Solr是一個流行的開源搜尋伺服器,它通過使用類似REST的HTTP AP

Linux 安裝 Tomcat

說明:安裝的 tomcat 為解壓版(即免安裝版):apache-tomcat-8.5.15.tar.gz (1)使用 root 使用者登入虛擬機器,在根目錄下的 opt 資料夾新建一個 software 資料夾,專門用於存放軟體包。 (2)將下載的 Tomcat tar 包傳輸到 Linux 系統中

Linux安裝軟體的三種方式--rpmyum原始碼

說明:此文首發於本人原創公眾號【媛測】中,如有轉載,請著明出處! 在windows系統下安裝軟體很簡單,下載軟體包後雙擊.exe檔案,點選下一步即可。然而在linux安裝軟體就沒那麼容易了,不同的Linux發行版有所差異,下面以centos7系統為例說明,如何在linux下安裝軟體

Linux上進行原始碼編譯安裝程式

文章轉載自:http://xuweitao.blog.51cto.com/11761672/1905357 1. 編譯安裝概述 前面兩篇關於程式包管理器的文章談到,無論是使用rpm命令還是yum命令安裝的都是已編譯好的程式包,在整個安裝過程中使用者只需執行一條命令即可完成安裝。這樣帶

ORACLE資料庫安裝步驟LINUX

一、安裝包匯入 1、WINDOWS遠端LINUX伺服器 使用Xmanager工具進行遠端,具體步驟如下: 1.1開啟Xmanager,點選左上方檔案“檔案”,選擇“新建”,點選“Xshell會話” 輸入伺服器ip,點選確定 1.2找到之前新建的Xshell會話,雙擊開啟 輸入賬號

Spring AOP AspectJ切入點語法(最全面最詳細。)(轉)

6.5  AspectJ切入點語法詳解 6.5.1  Spring AOP支援的AspectJ切入點指示符        切入點指示符用來指示切入點表示式目的,,在spring AOP中目

Linux從原始碼編譯安裝程式

1.原始碼編譯概述 1.1 使用原始碼安裝軟體的優點: 獲得最新的軟體版本,及時修復bug 根據使用者需要,靈活定製軟體功能 1.2 應用場合舉例 安裝較新版本的應用程式時 當前安裝的程式無法滿足需要時  需要為應用程式新增新的功能時

Linux 安裝 MySQL (rpm

說明:Linux 系統中軟體的安裝在 root 使用者下進行,此安裝方式為 rpm 包方式,安裝的版本為:MySQL-5.6.25-1.linux_glibc2.5.x86_64.rpm-bundle.tar (1)使用 root 使用者登入虛擬機器,檢查  Linux 是否自帶安裝了 MySQL。

linux中資料倉庫工具hive簡介及安裝部署

簡介: Apache Hive是一個建立在Hadoop架構之上的資料倉庫。它能夠提供資料的精煉,查詢和分析。 hive是基於Hadoop的一個數據倉庫工具,可以將結構化的資料檔案對映為一張資料庫表,並提

Linux安裝Docker教程(使用yum安裝

Docker的三大核心概念:映象、容器、倉庫 映象:類似虛擬機器的映象、用俗話說就是安裝檔案。 容器:類似一個輕量級的沙箱,容器是從映象建立應用執行例項,可以將其啟動、開始、停止、刪除、而這些容器都是相互隔離、互不可見的。 倉庫:類似程式碼倉庫,是Docker集

轉:JAVAWEB開發許可權管理(二)——shiro入門以及使用方法shiro認證與shiro授權

原文地址:JAVAWEB開發之許可權管理(二)——shiro入門詳解以及使用方法、shiro認證與shiro授權 以下是部分內容,具體見原文。 shiro介紹 什麼是shiro shiro是Apache的一個開源框架,它將軟體系統的安全認證相關的功能抽取出來,實現使用者身份認證,許可權授權、加密、會話