ubuntu包管理機制

2022-03-21 02:12:49 字數 3193 閱讀 5440

在使用apt-get install 和 apt-get update時, 系統會先掃瞄/etc/apt/目錄下的所有的源倉庫檔案。該目錄下包含兩種型別的檔案,

源倉庫檔案source.list和gpg秘鑰。其中source.list是ubunut官方的源倉庫檔案。

souce.list檔案的結構如下所示,該檔案的每一項都可以分成四個部分

deb/deb-src ## url ## ubuntu版本代號 ## 限定詞

其中 deb-src 表示該項指向乙個軟體源**的倉庫,deb表示指向乙個軟體倉庫

第二部分是倉庫的url

第三部分是版本**,可以看到在我的ubuntu18.04上(代號bionic), 有bionic 和 bionic-updates 兩種選項,其中updates表示,

更新時使用的倉庫。我猜測在apt-get update時應該讀取的是該項。

以vscode的ubuntu倉庫為例,我們來看看乙個完整的倉庫是什麼模樣。

可以看到目錄分成了兩級,dists中存放的是該軟體的配置資訊。這些資訊以文字形式儲存。包含了軟體的大小,

維護者資訊,版本,軟體執行於那些平台,還有軟體的校驗和保證軟體的完整性。當然最重要的還有軟體的deb檔案的存放路徑。

庫中另一類檔案是庫中的公鑰檔案(gpg檔案)。 通過這種非對稱的加密手段,可以保證傳輸過程的安全。

最後就是實際的軟體的安裝包,這些軟體被打包為deb格式存放在pool目錄下。

下面我們說說手動新增ppa倉庫的步驟:

1 安裝秘鑰

安裝秘鑰有兩種方式,手動方式或者使用命令apt-key 命令

apt-key list 

apt-key add keyname

apt-key del keyname

apt-key update

手動方式我們需要講gpg格式的秘鑰放置到目錄 ** /etc/apt/trusted.gpg/ ** 中去。

通過list命令我們可以看到秘鑰已經安裝成功。

2 新增源

同樣新增源也是兩種手段,手動和命令。

在手動方式中,我們先建立乙個/etc/apt/source.list.d/《庫名》.list檔案。然後根據上面說過的格式新增項。

或者使用 add-apt-repository 命令。

手動方式,就如下圖中的sh命令所示,按照標準格式生成倉庫的源,原則就是apt-get命令必須能夠從新增的項中解析出倉庫的位置。

所以我建議大家在手動新增源時,先從瀏覽器中進入url指向的**,觀察軟體庫的結構,然後再去構造項。

值得注意的是,能夠使用add-apt-repository命令安裝的必須是在launchpad這個**上註冊過的使用者才可以。

至於為什麼要這麼做,接下來我們來看看ppa

上文提到過通過ppa,開發者可以更便捷的發布自己的軟體。其實ppa也可以分成兩類,一類在launchpad中註冊(算是ubuntu認證的ppa), 另一類是未登記的ppa。

如果按照安全等級排列的話,官方倉庫 > 已註冊ppa > 未註冊ppa。

如果在launchpad中註冊過,那麼該倉庫在launchpad中就有乙個使用者名稱,這個使用者名稱就是稍後在add-apt-repository中要用到的。

如下圖所示,docker的ppa已經在launchpad中

命令格式

add-apt-repository ppa: [ppa name]

如果我們想新增docker stable ppa的話,就可以使用以下命令

sudo add-apt-repository ppa:docker/stable
以上我們**ubuntu的倉庫管理機制,主要是如何新增乙個ppa倉庫。

有兩個命令,也許我們都用過,但是可能並不了解它們的區別。這兩個命令就是:

apt-get update 和 apt-get upgrade

文件中解釋的還是比較清楚的,update的作用是讀取/etc/apt/source.list,並根據倉庫的描述檔案去更新索引。

而upgrade是根據source.list檔案去安裝所有軟體的更新,所以在upgrade之前會先執行update命令。

一般我們在手動新增ppa成功後,會按如下步驟去安裝相應的軟體:

apt-get update
所以說只有在你想要更新系統中所有軟體時,使用upgrade命令。

利器/2016/10/23/ubuntu軟體源詳解.html

#adding_ppas

Linux軟體包管理機制

1 紅帽系作業系統軟體管理分類 yumrpm source bin2 rpm工具管理rpm軟體包 2.1 認識rpm軟體包 rpm軟體包名稱 軟體名稱 版本號 主版本 次版本 修訂號 作業系統 cpu平台 作業系統 el6 el5 fedora suse debin ubuntu cpu平台i386...

Debian和Gentoo包管理機制比較及延伸

如果你現在想安裝一套linux,又不想隨著linux發行版本的版本號,不停的格式化系統,重新安裝,或者公升級安裝。那麼,最適合你的只有lfs debian和gentoo。本文嘗試對debian gentoo的包管理機制進行比較,並由此得出了幾個有趣的結論。本文對於debian gentoo的包管理,...

python包管理機制 Python例項 包機制

每乙個.py檔案稱為乙個module,module之間可以互相匯入.請參看以下例子 a.py def add func a,b return a b b.py from a import add func also can be import a print import add func from...