Bagaimana cara mendapatkan daftar repositori yang sedang diperiksa oleh apt-get? [Tutup]


133

Saya ingin daftar repo di sources.list, ditambah yang ada di sources.list.d /.

Bisakah saya mendapatkan daftar ini dalam bentuk yang sesuai untuk menyiapkan host lain sehingga ia menonton repo yang sama?

Selain itu, bagaimana cara menentukan repo mana yang merupakan sumber paket, apakah diinstal atau tersedia?


Jawaban:


174

Tampaknya yang terdekat adalah:

apt-cache policy

3
Apakah seseorang meningkatkan output (meringkas url dll) dan ingin berbagi perintahnya di sini?
lony

49

AFAIK Anda tidak dapat bertanya dengan tepat apa sumber mereka saat ini, namun Anda dapat melakukan apa yang Anda inginkan menggunakan alat shell.

Mendapatkan daftar repositori:

grep -h ^deb /etc/apt/sources.list /etc/apt/sources.list.d/* >> current.repos.list

Menerapkan daftar:

apt-add-repository << current.repos.list

Mengenai mendapatkan repo dari paket (diinstal atau tersedia), ini akan melakukan trik

apt-cache policy package_name |grep -m1 http| awk '{ print $2 " " $3 }'

Namun, itu akan menunjukkan kepada Anda repositori versi terbaru yang tersedia dari paket itu, Anda mungkin memiliki lebih banyak repositori untuk paket yang sama dengan versi yang lebih lama. Hapus semua barang grep / awk jika Anda ingin melihat daftar lengkap.


9
daftar lengkap sederhanaapt-cache policy |grep http |awk '{print $2 $3}' |sort -u
shadowbq

hilang spasiapt-cache policy |grep http |awk '{print $2 " " $3}' |sort -u
shadowbq

Pada baris perintah dengan grep: /etc/apt/sources.list.d/*harus diubah menjadi /etc/apt/sources.list.d/*.list. Mengenai alasannya, lihat askubuntu.com/questions/82825/…
Erik Sjölund

18

Coba ini:

cat /etc/apt/sources.list

26
Itu tidak akan termasuk repos dari /etc/apt/sources.list.d/, yaitu yang dihasilkan dari # apt-add-repositori XXX
ktenney

3
grep -Erh ^deb /etc/apt/sources.list*harus melakukan trik.
David

1
grep -Erh '^deb ' /etc/apt/sources.list*untuk mengecualikan deb-srcgaris.
David

8

Ini bukan format yang cocok untuk menyalin secara membabi buta ke komputer lain, tetapi pengguna yang ingin mengetahui apakah mereka sudah menambahkan repositori atau belum (seperti yang saya lakukan), Anda bisa melakukannya:

sudo apt update

Ketika aptmemperbarui, ia mengeluarkan daftar repositori yang diambilnya. Tampaknya sudah jelas, tetapi saya baru menyadari apa GETurl-nya.

Edit: Berikut awkekspresi berbasis dapat digunakan untuk menghasilkan sources.list sebuah:

 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

Atau, seperti yang disarankan oleh jawaban lain, Anda dapat menggunakan catsemua sumber yang sudah ada seperti ini:

cat /etc/apt/sources.list /etc/apt/sources.list.d/*

Karena repo yang dinonaktifkan dikomentari dengan hash, ini harus berfungsi sebagaimana dimaksud.


Mengapa downvote? Setidaknya tinggalkan komentar agar saya dapat meningkatkan jawaban saya .......
starbeamrainbowlabs

Diturunkan (untuk saat ini) dengan komentar: Tolong tunjukkan kami bagaimana menangkap output ini dan mengubahnya menjadi jawaban untuk pertanyaan, yaitu setiap kali kami melakukannya apt update, bagaimana kami menyaring output / teks untuk mengekstrak informasi yang relevan dengan pertanyaan ini?
dardisco

2
Jauh lebih baik! +1 untuk digunakan awkdalam pemfilteran.
dardisco

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.