【发布时间】:2011-12-27 17:29:43
【问题描述】:
我想要 sources.list 中的存储库列表,以及 sources.list.d/ 中的存储库。
我能否以适合设置的形式获取此列表 另一个主机,所以它监视相同的存储库?
另外,我如何确定哪个存储库是 包的来源,已安装或可用?
【问题讨论】:
标签: apt
我想要 sources.list 中的存储库列表,以及 sources.list.d/ 中的存储库。
我能否以适合设置的形式获取此列表 另一个主机,所以它监视相同的存储库?
另外,我如何确定哪个存储库是 包的来源,已安装或可用?
【问题讨论】:
标签: apt
似乎最接近的是:
apt-cache policy
【讨论】:
apt-cache policy | awk '/http.*amd64/{print$2}' | sort -u
据我所知,您不能向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 内容。
【讨论】:
apt-cache policy |grep http |awk '{print $2 $3}' |sort -u
apt-cache policy |grep http |awk '{print $2 " " $3}' |sort -u
/etc/apt/sources.list.d/* 应该改为/etc/apt/sources.list.d/*.list。至于原因,见askubuntu.com/questions/82825/…
试试这个:
cat /etc/apt/sources.list
【讨论】:
grep -Erh ^deb /etc/apt/sources.list* 应该可以解决问题。
grep -Erh '^deb ' /etc/apt/sources.list* 排除 deb-src 行。
它不是一种适合盲目复制到另一台机器的格式,但是想要弄清楚他们是否添加了存储库的用户(就像我一样),你可以这样做:
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/*
由于禁用的存储库用哈希注释掉,这应该可以按预期工作。
【讨论】:
我只需要:
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
【讨论】: