【debian/ubuntu】手动更新软件仓库索引的方法

至少适用于光盘源和本地源,其他标准形式的应该也ok

需要安装apt-utils

# 注意将[CODENAME] 根据实际情况修改
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 {
    Extensions ".udeb";
    Compress ". gzip";
  };
};

Contents {
  Compress "gzip";
};
EOF
apt-ftparchive generate apt-ftparchive-udeb.conf

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


  • 选项:
    -h 本帮助文档
    –md5 使之生成 MD5 校验和
    -s=? 源代码包 override 文件
    -q 输出精简信息
    -d=? 指定可选的缓存数据库
    -d=? 使用另一个可选的缓存数据库
    –no-delink 开启delink的调试模式
    –contents 使之生成控制内容文件
    -c=? 读取指定配置文件
    -o=? 设置任意指定的配置选项
    “`

猜你喜欢

转载自blog.csdn.net/u013390088/article/details/80856853