为什么这个带有覆盖的 apt-cache dumpavail 不起作用?

为什么这个带有覆盖的 apt-cache dumpavail 不起作用?

我正在尝试列出远程存储库中的可用包无需访问 /etc/apt 或 /var以下命令不返回任何内容并以代码零退出。

apt-cache dumpavail -o Dir::Etc=tmp/ -o Dir::Cache=tmp/ -o Dir::State=tmp/

该命令似乎是正确的文档。知道我缺少什么或者我可以如何做不同的事情吗?我的 resources.list 位于 /tmp 下,内容如下:

deb http://br.archive.ubuntu.com/ubuntu/ precise main restricted

当前的 apt 配置是默认的

$apt-config dump
...
Dir "/";
Dir::State "var/lib/apt/";
Dir::State::lists "lists/";

Dir::State::cdroms "cdroms.list";
Dir::State::mirrors "mirrors/";
Dir::State::extended_states "extended_states";
Dir::State::status "/var/lib/dpkg/status";
Dir::Cache "var/cache/apt/";
Dir::Cache::archives "archives/";
Dir::Cache::srcpkgcache "srcpkgcache.bin";
Dir::Cache::pkgcache "pkgcache.bin";
Dir::Etc "etc/apt/";
Dir::Etc::sourcelist "sources.list";
Dir::Etc::sourceparts "sources.list.d";

答案1

apt-cache dumpavail从本质上读取/var/lib/apt/lists,确实如此cat /var/lib/apt/lists/*_Packages。事实上,整个apt-cache实用程序被设计为对本地缓存的数据进行操作,它从不查询网络。

你需要apt-get先运行,并确保你已经设置了一个可以运行的缓存目录。

dir_cache=$(mktemp -d)
mkdir "$dir_cache/etc" "$dir_cache/var" "$dir_cache/state"
echo 'deb http://br.archive.ubuntu.com/ubuntu/ precise main restricted' >"$dir_cache/etc/apt/sources.list"
apt-get update -o Dir::Etc="$dir_cache/etc" -o Dir::Cache="$dir_cache/var" -o Dir::State="$dir_cache/state"
apt-cache dumpavail -o Dir::Etc="$dir_cache/etc" -o Dir::Cache="$dir_cache/var" -o Dir::State="$dir_cache/state"
rm -r "$dir_cache"

相关内容