在使用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...