151

sources.listにあるリポジトリのリストと、sources.list.d/にあるリポジトリのリストが必要です。

同じリポジトリを監視するように別のホストをセットアップするのに適した形式でこのリストを取得できますか?

さらに、どのリポジトリがパッケージのソースであるか (インストール済みか使用可能か) を判断するにはどうすればよいですか?

4

5 に答える 5

194

最も近いのは次のようです。

apt-cache policy
于 2011-12-30T12:59:27.047 に答える
55

私の知る限り、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のものをすべて削除してください。

于 2012-10-05T04:00:48.623 に答える
17

これを試して:

cat /etc/apt/sources.list
于 2011-12-27T17:59:42.437 に答える
11

別のマシンにやみくもにコピーするのに適した形式ではありませんが、リポジトリを追加したかどうかを確認したいユーザー (私のように) は、次のように実行できます。

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

無効なリポジトリはハッシュでコメントアウトされているため、これは意図したとおりに機能するはずです。

于 2017-01-20T21:12:14.243 に答える