Uygun apt-get depoları listesini almak için nasıl? [kapalı]


133

Sources.list dosyasındaki depoların yanı sıra sources.list.d / dosyasındaki depoların listesini istiyorum.

Bu listeyi, aynı depoları izleyecek şekilde başka bir ana bilgisayar kurmak için uygun bir biçimde alabilir miyim?

Ayrıca, yüklü veya kullanılabilir bir paketin kaynağının hangi repo olduğunu nasıl belirleyebilirim?


Yanıtlar:


174

En yakın görünüyor:

apt-cache policy

3
Birisi çıktıyı geliştirdi mi (URL'leri özetliyor vb.) Ve komutunu burada paylaşmak mı istiyor?
lony

49

AFAIK, mevcut kaynaklarının ne olduğunu uygun şekilde isteyemez, ancak kabuk araçlarını kullanarak istediğinizi yapabilirsiniz.

Depoların listesini alma:

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

Listenin uygulanması:

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

Bir paketten (yüklü veya mevcut) repo alma ile ilgili olarak, bu hile yapacaktır

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

Ancak, bu paketin mevcut en son sürümünün deposunu gösterecektir, aynı paket için daha eski sürümlere sahip daha fazla havuzunuz olabilir. Listenin tamamını görmek istiyorsanız tüm grep / awk öğelerini kaldırın.


9
basit tam listeapt-cache policy |grep http |awk '{print $2 $3}' |sort -u
shadowbq

bir yer eksikapt-cache policy |grep http |awk '{print $2 " " $3}' |sort -u
shadowbq

Komut satırında grep: /etc/apt/sources.list.d/*ile değiştirilmelidir /etc/apt/sources.list.d/*.list. Nedeni için bkz. Askubuntu.com/questions/82825/…
Erik Sjölund


8

Bu , başka bir makineye körü körüne kopyalamak için uygun bir format değildir , ancak henüz bir havuz ekleyip eklemediklerini öğrenmek isteyenler (yaptığım gibi), şunları yapabilirsiniz:

sudo apt update

aptGüncelleme yaparken getirdiği depoların bir listesini çıkarır. Görünüşe göre, ama GETurl'lerin ne tükürdüğünü fark ettim .

Düzenleme: Aşağıdaki awktabanlı ifade bir sources.list oluşturmak için kullanılabilir:

 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

Alternatif olarak, diğer cevapların da belirttiği catgibi, önceden var olan tüm kaynakları şöyle yapabilirsiniz:

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

Engelli depolar karma ile yorumlandığından, bu amaçlandığı gibi çalışmalıdır.


Neden inişli çıkışlı? En azından bir yorum bırakın ki cevabımı geliştirebilirim .......
starbeamrainbowlabs

Yorumlu (şimdilik) Yorum: Lütfen bu çıktıyı nasıl yakalayacağımızı ve sorunun cevabına nasıl dönüştüreceğimizi gösterin, yani her yaptığımızda apt update, bu soru ile ilgili bilgileri çıkarmak için bu çıktı / metni nasıl filtreleyebiliriz?
dardisco

2
Çok gelişmiş! awkFiltrelemede kullanım için +1 .
dardisco

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.