151

我想要 sources.list 中的存储库列表以及sources.list.d/中的那些。

我能否以适合设置另一台主机的形式获取此列表,以便它监视相同的存储库?

此外,我如何确定哪个存储库是包的来源,无论是已安装还是可用?

4

5 回答 5

194

似乎最接近的是:

apt-cache policy
于 2011-12-30T12:59:27.047 回答
55

据我所知,你不能问apt他们目前的来源是什么。但是,您可以使用 shell 工具做您想做的事情。

获取存储库列表:

grep -h ^deb /etc/apt/sources.list /etc/apt/sources.list.d/* >> current.repos.list

应用列表:

apt-add-repository << current.repos.list

关于从包(已安装或可用)中获取存储库,这将起到作用:

apt-cache policy package_name | grep -m1 http | awk '{ print $2 " " $3 }'

但是,这将向您显示该软件包的最新可用版本的存储库,并且对于具有旧版本的同一软件包,您可能有更多存储库。如果您想查看完整列表,请删除所有 grep/awk 内容。

于 2012-10-05T04:00:48.623 回答
17

尝试这个:

cat /etc/apt/sources.list
于 2011-12-27T17:59:42.437 回答
11

不是一种适合盲目复制到另一台机器的格式,但是想要弄清楚他们是否已经添加了存储库的用户(就像我一样),你可以这样做:

sudo apt update

更新时apt,它会输出它获取的存储库列表。这似乎很明显,但我刚刚意识到GET它吐出的 URL 是什么。

以下awk基于 - 的表达式可用于生成sources.list文件:

 cat /tmp/apt-update.txt | awk '/http/ { gsub("/", " ", $3); gsub("^\s\*$", "main", $3); printf("deb "); if($4 ~ "^[a-z0-9]$") printf("[arch=" $4 "] "); print($2 " " $3) }' | sort | uniq

或者,正如其他答案所暗示的那样,您可以只cat使用所有预先存在的来源,如下所示:

cat /etc/apt/sources.list /etc/apt/sources.list.d/*

由于禁用的存储库用哈希注释掉,这应该按预期工作。

于 2017-01-20T21:12:14.243 回答
-6

我只需要:

cd /etc/apt
nano source.list
deb http://http.kali.org/kali kali-rolling main non-free contrib
deb-src http://http.kali.org/kali kali-rolling main non-free contrib
apt upgrade && update

来源:Kali 网络存储库 (/etc/apt/sources.list)

于 2019-01-31T13:13:38.457 回答