【debian/ubuntu】手動更新軟體倉庫索引的方法
阿新 • • 發佈:2019-02-17
至少適用於光碟源和本地源,其他標準形式的應該也ok
需要安裝
apt-utils
準備
注意將[CODENAME] 根據實際情況修改
注意現在要進入到有pool/子目錄的一個目錄:即# ls
要看到有pool/
目錄
更新udeb軟體包索引
# 注意!如果你不知道什麼是udeb,那麼apt-ftparchive-udeb.conf你就不用管了,直接看下面的`更新deb軟體包索引`吧
cat > apt-ftparchive-udeb.conf <<EOF
Dir {
ArchiveDir ".";
OverrideDir ".";
CacheDir "." ;
};
TreeDefault {
Directory "pool/";
};
BinDirectory "pool/main" {
Packages "dists/[CODENAME]/main/debian-installer/binary-amd64/Packages";
};
Default {
Packages {
# 這裡的udeb是一種特殊的deb包
Extensions ".udeb";
Compress ". gzip";
};
};
Contents {
Compress "gzip";
};
EOF
+ 在生成apt-ftparchive-udeb.conf 後再執行以下命令,更新udeb軟體包索引
`# apt-ftparchive generate apt-ftparchive-udeb.conf`
更新deb軟體包索引
cat > config-rel <<EOF
APT::FTPArchive::Release::Codename "[CODENAME]";
APT::FTPArchive::Release::Origin "Ubuntu";
APT::FTPArchive::Release::Components "main";
APT::FTPArchive::Release::Label "Ubuntu" ;
APT::FTPArchive::Release::Architectures "amd64";
APT::FTPArchive::Release::Suite "[CODENAME]";
EOF
apt-ftparchive -c config-rel release dists/[CODENAME] > dists/[CODENAME]/Release
關於apt-ftparchive的介紹
- 用法: apt-ftparchive [選項] 命令
- 命令: packages 二進位制軟體包搜尋路徑 [overridefile [路徑字首]]
sources 原始碼包搜尋路徑 [overridefile [路徑字首]]
contents 搜尋路徑
release 搜尋路徑
generate 配置檔案 [groups]
clean 配置檔案
apt-ftparchive 被用來為 Debian 軟體包生成索引檔案。它能支援多種生成索引的方式,從全自動的索引生成到在功能上取代 dpkg-scanpackages 和 dpkg-scansources,都能遊刃有餘
apt-ftparchive 能依據一個由 .deb 檔案構成的檔案樹生成 Package 檔案。
Package 檔案裡不僅注有每個軟體包的 MD5 校驗碼和檔案大小,
還有軟體包的所有控制欄位的內容。該軟體同時支援 override 檔案,
通過它可以強制指定軟體包的優先順序及其所屬的軟體類別。與上面類似,apt-ftparchive 也能由 .dsc 的檔案樹生成 Source 檔案。
可以通過使用 –source-override 選項來指定一個 override 檔案使用“packages”和“source”命令時,必須在檔案樹的根部執行本程式。
二進位制包的搜尋路徑一定要是遞迴搜尋的底層,而且 override 檔案裡
應該註明 override 的標誌。若指定了路徑字首,那麼它會被加到檔名前面。
下面有個來自 Debian 文件的例子:# apt-ftparchive packages dists/potato/main/binary-i386 > dists/potato/main/binary-i386/Packages
- apt-ftparchive選項引數說明
- 選項:
-h 本幫助文件
–md5 使之生成 MD5 校驗和
-s=? 原始碼包 override 檔案
-q 輸出精簡資訊
-d=? 指定可選的快取資料庫
-d=? 使用另一個可選的快取資料庫
–no-delink 開啟delink的除錯模式
–contents 使之生成控制內容檔案
-c=? 讀取指定配置檔案
-o=? 設定任意指定的配置選項
“`