1. 程式人生 > >【debian/ubuntu】手動更新軟體倉庫索引的方法

【debian/ubuntu】手動更新軟體倉庫索引的方法

至少適用於光碟源和本地源,其他標準形式的應該也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=? 設定任意指定的配置選項
    “`