我怎样才能得到一个“ apt-get”正在检查的存储库列表?

我需要 资料来源列表中的存储库列表,以及 来源: list.d/中的存储库列表。

我可以得到这个名单的形式适合建立 另一个主机,所以它监视相同的存储库?

此外,如何确定哪个存储库是 安装或可用的软件包来源?

269059 次浏览

试试这个:

cat /etc/apt/sources.list

似乎最接近的是:

apt-cache policy

据我所知,你不能问 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 内容。

它是一种适合盲目复制到另一台机器的 没有格式,但是如果用户想知道他们是否已经添加了存储库(就像我一样) ,你可以这样做:

sudo apt update

apt更新时,它输出获取的存储库列表。这似乎是显而易见的,但我刚刚意识到什么是 GET的网址,它吐出来。

以下基于 awk的表达式可用于生成 资料来源列表文件:

 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/*

由于禁用的存储库是用散列注释掉的,因此应该能够按照预期的方式工作。

我只需要:

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

资料来源: 卡利网络存储库(/etc/apt/sources.list)