如何获取apt-get正在检查的存储库列表?[关闭]


133

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

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

此外,如何确定哪个回购是软件包来源(已安装或可用)?


Answers:


174

似乎最接近的是:

apt-cache policy

3
是否有人增强了输出(汇总URL等)并想在这里共享他的命令?
lony

49

AFAIK您无法要求提供它们的最新来源,但是您可以使用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内容。


9
简单的完整列表apt-cache policy |grep http |awk '{print $2 $3}' |sort -u
shadowbq

缺少空间apt-cache policy |grep http |awk '{print $2 " " $3}' |sort -u
shadowbq

在带有grep:的命令行中,/etc/apt/sources.list.d/*应将其更改为/etc/apt/sources.list.d/*.list。至于原因,看 askubuntu.com/questions/82825/...
埃里克Sjölund

18

试试这个:

cat /etc/apt/sources.list

26
那将不包括来自/etc/apt/sources.list.d/的回购协议,即那些由#apt-add-repository XXX
ktenney 2011年

3
grep -Erh ^deb /etc/apt/sources.list*应该可以。
大卫

1
grep -Erh '^deb ' /etc/apt/sources.list*排除deb-src行。
大卫

8

不是适合盲目复制到另一台计算机的格式,但是希望确定自己是否已添加存储库的用户(像我一样),您可以执行以下操作:

sudo apt update

apt被更新时,其输出它获取库列表。似乎很明显,但我刚刚意识到GET它吐出的网址是什么。

编辑:以下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/*

由于禁用的存储库已用哈希注释掉,因此应可以正常工作。


为什么要下票?至少发表评论,以便我改善自己的答案。……
starbeamrainbowlabs 18-4-10

拒绝评论(暂时),并附上评论:请向我们展示如何捕获此输出并将其转换为问题的答案,即,每次执行此操作时apt update,如何过滤该输出/文本以提取与该问题相关的信息?
dardisco,

2
大有改善!+1用于awk过滤。
dardisco

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.