在 Ubuntu中從外部儲存庫安裝軟體包步驟
導讀 | 你大概知道怎麼在 Ubuntu 中使用 apt 安裝軟體包。那些軟體包都是來自 Ubuntu 的官方儲存庫。 |
那第三方或者外部儲存庫呢?不,我這裡並不是要講 PPA。
早晚你會碰到那種至少四行的安裝說明:你需要安裝名為 apt-transport-https 的包、操作一下 GPG 和 源列表source list
沒有什麼印象的話,那我分享一個 在 Ubuntu 上安裝最新版本的 Yarn 的例子:
sudo apt install apt-transport-https curlcurl -sS | sudo apt-key add -sudo sh -c 'echo "deb
當你需要直接從開發者那裡安裝程式設計工具的時候,大機率會碰到這種安裝方式。
許多人只是按照說明進行操作,並不會去思考其中的原理。這也沒什麼不對,但瞭解該過程實際上可以提升你在這方面的知識,而且有助於之後排除故障。
我來解釋一下這些程式碼背後的邏輯。
整件事情其實就是在系統中新增一個新的外部儲存庫。這樣,你就可以從這個新儲存庫下載並安裝可用的軟體包。如果這個儲存庫提供了包版本的更新,你可以在更新系統的同時更新這些軟體包(apt update && apt upgrade)。
那麼,這是什麼工作原理呢?讓我們一條一條地過一遍。
第一行是這樣的:
sudo apt install apt-transport-https curl
curl 是一個 終端下載檔案的工具。這裡主要的部分是安裝 apt-transport-https,但事實上已經不需要了。
明白了嗎?這個 apt-transport-https 包讓你的系統透過 HTTPS 協議安全訪問儲存庫。
按照設計,Ubuntu 的儲存庫使用 http 而不是 https 協議。
看看下面的截圖。 https 這張圖是我已經新增到系統中的外部儲存庫。Ubuntu 的儲存庫和 PPA 使用 http 協議。
在舊版本的 apt 包管理器中,不支援 https 協議。apt-transport-https 包為 apt 新增了 https 支援。要新增一個使用 https 的儲存庫,首先就得先安裝此包。
我之前不是說不需要安裝這個包了嗎?是的,因為較新版本的 apt(高於 1.5)已經支援 https,所以你不需要再安裝 apt-transport-https。
但是你依然看到我在說明中提到了這個包。這更多是出於遺留原因,而且可能還有很舊的發行版在使用舊版本的 apt 包。
現在,你可能想知道既然 https 是安全協議,那為什麼 Ubuntu 的儲存庫還要使用 http 而不是 https。這難道沒有安全風險嗎?接著往下看你就知道答案了。
Linux 儲存庫內建了基於 GPG 金鑰的安全機制。每個儲存庫都將其 GPG 公鑰新增到你的系統信任金鑰中。來自儲存庫的包由這個 GPG 金鑰“簽名signed”,並且透過這份儲存的公鑰,系統能夠驗證軟體包正是來自這個儲存庫。
如果 金鑰之間不匹配,你的系統會發出提醒,而不會繼續從該儲存庫安裝或者更新軟體包。
到目前為止,一切都很順利。下一步是將外部儲存庫的 GPG 公鑰新增到你的 Linux 系統,以便它能接收來自該儲存庫的軟體包。
curl -sS | sudo apt-key add -
在上面的 中,你使用 curl 從指定的 URL 下載 GPG 金鑰。選項 -sS 能夠讓你不看多餘的輸出(靜默模式),但會顯示錯誤(如果有的話)。最後一個 - 告訴 apt-key 使用標準輸入stdin而不是檔案(在本例中是 curl 命令的輸出)。
apt-key add 命令已經將下載的金鑰新增到系統中。
你可以透過 apt-key list 命令檢視系統中各種儲存庫新增的 GPG 金鑰。
List GPG keys
這是將 GPG 金鑰新增到系統的一種方法。你會看到一些其它的命令,看起來略有不同,但效果一樣,都是將儲存庫的公鑰新增到你的系統裡面。
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
你會注意到 apt-key 已被棄用的警告。在 Ubuntu 22.04 之前,你還可以使用 apt-key 命令,但它最終會被刪除。現在不需要杞人憂天。
下個命令是在系統的源列表中新增一個新條目。這樣,你的系統就會知道它得檢查該儲存庫中的包和更新。
sudo sh -c 'echo "deb
有一個檔案 /etc/apt/sources.list 包含 Ubuntu 儲存庫的詳細資訊。最好不要隨便動這個檔案。所有新增的儲存庫都應放在 /etc/apt/sources.list.d 目錄中相應的檔案裡(約定以 .list 結尾)。
External repository should have their own sources list file in the /etc/apt/sources.list.d directory
這使得包管理變得更容易。如果你要從系統中刪除一個儲存庫,只需刪除相應的原始檔即可。無需修改主 sources.list 檔案。
讓我們再仔細地看一下這行命令。
sudo sh -c 'echo "deb
使用 sh 可以在一個新的 程式中執行命令,而不是 子 shell。 -c 選項告訴 sh 命令從引數而不是標準輸入讀取命令。然後它執行 echo 命令,也就是把 deb stable main 這一行新增到 /etc/apt/sources.list.d/yarn.list 檔案(會建立該檔案)。
現在,你可以透過各種方法在指定目錄中建立 .list 檔案並在其中新增包含儲存庫詳細資訊的資料行。你也可以像這樣使用:
echo "deb stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
明白了吧?
到目前為止,你已經將儲存庫的 GPG 金鑰和儲存庫的 URL 新增到系統中。
但是系統仍然不曉得這個新儲存庫中有哪些可用的包。這就是為什麼你需要先使用下面這個命令更新包後設資料的本地快取:
sudo apt update
這時你的系統就已經知道新增儲存庫中可用軟體包的資訊,現在可以試試安裝軟體包:
sudo apt install yarn
為了節省時間,你可以在 同一行挨著執行這兩個命令e。
sudo apt update && sudo apt install yarn
&& 可以確保第二個命令只會在前一個命令沒有任何報錯的前提下執行。
整個流程就是這樣。
我已經解釋了在 Ubuntu 中使用外部儲存庫背後的邏輯。希望你現在能更好地理解它,當然可能還有很多細節會讓你困惑。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2929392/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- yum安裝軟體之後如何儲存rpm安裝包
- ubuntu 下安裝nginx步驟UbuntuNginx
- Ubuntu 20.10的Docker安裝步驟UbuntuDocker
- jdk、tomcat、mysql軟體的安裝步驟JDKTomcatMySql
- ubuntu 18.04安裝kalibr(詳細步驟)Ubuntu
- dp安裝包升級步驟
- Linux作業系統中軟體安裝:用RPM包管理器安裝軟體步驟Linux作業系統
- 【slam】ubuntu中各種型別軟體包的安裝方法SLAMUbuntu型別
- Ubuntu軟體安裝Ubuntu
- vnc安裝步驟,4個在Linux下vnc的個安裝步驟VNCLinux
- ubuntu20.04安裝教程超詳細 安裝ubuntu系統步驟圖解Ubuntu圖解
- UBUNTU手動安裝JDK的詳細步驟UbuntuJDK
- ubuntu20.04.3安裝Qt6.22操作步驟UbuntuQT
- vnc安裝步驟,vnc安裝步驟詳解VNC
- 在Linux中安裝軟體Linux
- spss安裝教程26超詳細 spss26軟體安裝步驟SPSS
- MySQL資料庫安裝步驟-WindowsMySql資料庫Windows
- 如何列出 Ubuntu 和 Debian 上已安裝的軟體包Ubuntu
- Ubuntu 20.04中建立本地APT軟體包倉庫UbuntuAPT
- [ 安裝 ] Zeppelin安裝步驟!
- Termux安裝完整版Linux(Ubuntu)詳細步驟LinuxUbuntu
- Ubuntu常用軟體安裝命令Ubuntu
- Ubuntu 軟體安裝命令:aptUbuntuAPT
- xftp安裝步驟,xftp安裝的2大步驟FTP
- Hive -------- 使用mysql儲存hive後設資料,Mysql的安裝以及配置步驟HiveMySql
- Nagios安裝步驟iOS
- STF 安裝步驟
- anaconda安裝步驟
- Linux 安裝步驟Linux
- ubuntu 安裝及相關軟體安裝(2)Ubuntu
- ubuntu 安裝及相關軟體安裝(1)Ubuntu
- 在Ubuntu desktop中安裝gitUbuntuGit
- Fedora中安裝 Shutter步驟介紹
- Android 外部儲存Android
- 外部儲存器
- Ubuntu 18.04 需要安裝的軟體Ubuntu
- 在Linux中,如何升級系統內所有已安裝軟體包?Linux
- vnc安裝步驟,如何在Linux(CentOS 7)下vnc安裝步驟VNCLinuxCentOS