
我有一台筆記型電腦和連接到路由器的外部硬碟中多個儲存庫的本機副本。我的路由器提供對這些文件(帶有憑證)的存取權作為 samba 共用和/或 ftp 伺服器。
我想配置 apt-get 來檢查這些存儲庫(當它們可用時)並從中下載更新以在可能的情況下加快進程。
更清楚地說:當我的筆記型電腦連接到我的 WiFi 時,我希望 apt-get 檢查互聯網上的常規存儲庫和本地存儲庫。如果外部儲存庫中的檔案比本機鏡像中的檔案新或鏡像不可用,則 apt-get 應該從網路下載檔案。
答案1
設定您自己的儲存庫有 4 個步驟
- 安裝
dpkg-dev
- 將包放入目錄中
- 創建一個腳本來掃描包並創建一個
apt-get update
可以讀取的 文件 - 新增一行指向
sources.list
您的儲存庫
安裝dpkg-dev
打開終端機:
sudo apt-get install dpkg-dev
目錄
建立一個目錄來保存您的包。對於本範例,我們將使用/usr/local/lan-repo
.
sudo mkdir -p /usr/local/lan-repo
現在將所有套件移至該新目錄中。
已經下載的軟體包通常儲存在您的系統上/var/cache/apt/archives
。如果您已經安裝,apt-cacher
您很可能會在apt-cacher/packages
目錄中儲存其他軟體包。
建立一個名為update-lan-repo
這是一個非常簡單的三行腳本:
#! /bin/bash
cd /usr/local/lan-repo
sudo dpkg-scanpackages . /dev/null | gzip -9c > packages.gz
將以上內容複製並貼上到您喜歡的文字編輯器中,並將其另存update-lan-repo
為~/bin
. (~
表示主目錄。如果~/bin
尚不存在,請建立它。Ubuntu 會自動將該目錄放入您的 PATH 中。這使其成為放置個人腳本的好地方。)
現在讓我們讓腳本可執行:
chmod u+x ~/bin/update-lan-repo
該腳本的工作原理如下:
dpkg-scanpackages
查看 中的所有包lan-repo
,並將輸出壓縮並寫入檔案 中packages.gz
,該檔案apt-get update
可以讀取(請參閱下面的參考資料,詳細解釋了這一點)。/dev/null
是一個空文件 - 也就是說 - 它是一個覆蓋文件的臨時文件,其中包含有關包的一些附加信息,在我們的例子中並不是真正需要的。看deb-override(5)
如果您想了解更多。
我們需要將您的本機儲存庫新增至您的sources.list 檔案中
echo "deb file:/usr/local/lan-repo ./" >> /etc/apt/sources.list
就這樣你就完成了。
CD/DVD 選項
您可以將包含 .deb 檔案的目錄儲存到 CD/DVD 中,並將其用作儲存庫(適合在電腦之間共用)。要將 CD 用作儲存庫:
只需運行命令:
sudo apt-cdrom add
使用新的儲存庫。
然後,每當您在 lan-repo 目錄中儲存新的 debian 軟體包時,請執行:
sudo update-lan-repo
sudo apt-get update
現在,您的本機軟體包可以使用 Synaptic、aptitude 和 apt 命令進行操作:apt-get
、apt-cache
等。
答案2
我終於設法解決了這個問題,而且效果很好,所以我想與想要實現類似功能的人分享。
我的第一個問題是我的系統支援多架構,因此鏡像儲存庫應包含 i386 和 amd64 軟體包(我沒有鏡像來源)以避免下載錯誤。這是在/etc/apt/mirror.list就像這個例子所示:
deb-i386 http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
我的基本路徑該文件中定義的是/mnt/apt 鏡像,然後我運行一個腳本,將連接到路由器 USB 連接埠的外部硬碟作為 Samba 共享安裝(您可以在此處查看該腳本: 如何使用apt-mirror將檔案儲存在連接到LAN路由器的硬碟中
我想從 LAN 中的其他電腦存取鏡像儲存庫,因此解決方案的另一部分是新增 FTP 儲存庫定義一開始在/etc/apt/sources.list。這個設定使得apt-get下載檔案時首先使用 FTP 儲存庫,然後使用中定義的儲存庫/etc/apt/sources.list.d,前提是鏡像是最新的。
本機儲存庫定義如下:
deb [arch=amd64,i386] ftp://user:password@lan-resource/apt-mirrors/mirror/archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
你替換的地方使用者使用有權存取 FTP 伺服器的使用者名,:密碼如果需要連接,則使用其密碼(否則刪除),以及區域網路資源與 LAN 中 FTP 伺服器的位址(我決定編輯/etc/主機為了避免重複硬編碼的 IP 位址,我將 192.168.0.1 定義為區域網路FTP伺服器用於該領域)。