sources.listにあるリポジトリのリストと、sources.list.d/にあるリポジトリのリストが必要です。
同じリポジトリを監視するように別のホストをセットアップするのに適した形式でこのリストを取得できますか?
さらに、どのリポジトリがパッケージのソースであるか (インストール済みか使用可能か) を判断するにはどうすればよいですか?
sources.listにあるリポジトリのリストと、sources.list.d/にあるリポジトリのリストが必要です。
同じリポジトリを監視するように別のホストをセットアップするのに適した形式でこのリストを取得できますか?
さらに、どのリポジトリがパッケージのソースであるか (インストール済みか使用可能か) を判断するにはどうすればよいですか?
最も近いのは次のようです。
apt-cache policy
私の知る限り、apt彼らの現在の情報源が何であるかを尋ねることはできません。ただし、シェルツールを使用してやりたいことができます。
リポジトリのリストを取得する:
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のものをすべて削除してください。
これを試して:
cat /etc/apt/sources.list
別のマシンにやみくもにコピーするのに適した形式ではありませんが、リポジトリを追加したかどうかを確認したいユーザー (私のように) は、次のように実行できます。
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/*
無効なリポジトリはハッシュでコメントアウトされているため、これは意図したとおりに機能するはずです。