如何获取apt-get存储库列表正在检查?

kte*_*ney 125 apt

我想要一个source.list中的repos列表,以及sources.list.d /中的那些.

我是否可以以适合设置其他主机的形式获取此列表,以便观看相同的回购?

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

kte*_*ney 163

似乎最接近的是:

apt-cache policy
Run Code Online (Sandbox Code Playgroud)

  • 有人增强了输出(总结网址等)并想在这里分享他的命令吗? (3认同)
  • @Iony Howbout 这个:`apt-cache 策略 | awk '/http.*amd64/{print$2}' | 排序-u` (2认同)
  • 或者像这样:```apt-cache 策略 | grep 起源 | 排序-u``` (2认同)

Val*_*lor 41

AFAIK你不能问他们当前的资源是什么,但你可以使用shell工具做你想做的事.

获取存储库列表:

grep -h ^deb /etc/apt/sources.list /etc/apt/sources.list.d/* >> current.repos.list
Run Code Online (Sandbox Code Playgroud)

应用清单:

apt-add-repository << current.repos.list
Run Code Online (Sandbox Code Playgroud)

关于从包(安装或可用)获取repo,这将成功

apt-cache policy package_name |grep -m1 http| awk '{ print $2 " " $3 }'
Run Code Online (Sandbox Code Playgroud)

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

  • 简单的完整列表`apt-cache policy | grep http | awk'{print $ 2 $ 3}'| sort -u` (8认同)
  • 缺少空格 `apt-cache policy |grep http |awk '{print $2 " " $3}' |sort -u` (3认同)
  • 在命令行中使用 grep: `/etc/apt/sources.list.d/*` 应更改为 `/etc/apt/sources.list.d/*.list`。至于原因,请参见https://askubuntu.com/questions/82825/do-files-at-etc-apt-sources-list-d-need-to-have-an-extension-list (2认同)

rad*_*dri 16

试试这个:

cat /etc/apt/sources.list
Run Code Online (Sandbox Code Playgroud)

  • 这将不包括来自/etc/apt/sources.list.d/的回购,IE由#apt-add-repository XXX产生的回购 (23认同)
  • `grep -Erh ^ deb/etc/apt/sources.list*`应该可以解决问题. (2认同)

sta*_*abs 10

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

sudo apt update
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

cat /etc/apt/sources.list /etc/apt/sources.list.d/*
Run Code Online (Sandbox Code Playgroud)

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