Jak uzyskać listę repozytoriów, które sprawdza apt-get? [Zamknięte]


133

Chcę listę repozytoriów w sources.list plus te w sources.list.d /.

Czy mogę uzyskać tę listę w formie odpowiedniej do skonfigurowania innego hosta, aby oglądał te same repozytoria?

Ponadto w jaki sposób mogę określić, które repozytorium jest źródłem pakietu, zainstalowanym lub dostępnym?


Odpowiedzi:


174

Wydaje się, że najbliższy jest:

apt-cache policy

3
Czy ktoś poprawił dane wyjściowe (podsumowując adresy URL itp.) I chciał udostępnić tutaj swoje polecenie?
lony

49

AFAIK, nie możesz zapytać apt o jakie są ich obecne źródła, jednak możesz zrobić, co chcesz, używając narzędzi powłoki.

Pobieranie listy repozytoriów:

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

Stosowanie listy:

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

Jeśli chodzi o uzyskanie repozytorium z pakietu (zainstalowanego lub dostępnego), to załatwi sprawę

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

Jednak to pokaże repozytorium najnowszej dostępnej wersji tego pakietu, możesz mieć więcej repozytoriów dla tego samego pakietu ze starszymi wersjami. Usuń wszystkie rzeczy grep / awk, jeśli chcesz zobaczyć pełną listę.


9
prosta pełna listaapt-cache policy |grep http |awk '{print $2 $3}' |sort -u
shadowbq

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

W wierszu poleceń z grep: /etc/apt/sources.list.d/*należy zmienić na /etc/apt/sources.list.d/*.list. Jeśli chodzi o powód, zobacz askubuntu.com/questions/82825/…
Erik Sjölund

18

Spróbuj tego:

cat /etc/apt/sources.list

26
To nie obejmie repozytoriów z /etc/apt/sources.list.d/, IE tych wynikających z # apt-add-repository XXX
ktenney

3
grep -Erh ^deb /etc/apt/sources.list*powinien załatwić sprawę.
David

1
grep -Erh '^deb ' /etc/apt/sources.list*aby wykluczyć deb-srclinie.
David

8

Jego nie format odpowiedni dla ślepo kopiować do innego komputera, ale użytkownicy, którzy chcą pracować, czy oni jeszcze czy nie repozytorium (jak ja), można po prostu zrobić:

sudo apt update

Kiedy apt aktualizacji wyświetla listę repozytoriów, które pobiera. Wydaje się to oczywiste, ale właśnie zdałem sobie sprawę, jakie GETsą adresy URL, które wypluwa.

Edytować:awk do wygenerowania źródła.list można użyć następującego wyrażenia opartego na następującym wyrażeniu:

 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

Alternatywnie, jak sugerują inne odpowiedzi, możesz po prostu cat wszystkie istniejące wcześniej źródła, takie jak to:

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

Ponieważ wyłączone repozytoria są komentowane za pomocą skrótu, powinno to działać zgodnie z zamierzeniami.


Dlaczego głos przeciw? Zostaw przynajmniej komentarz, abym mógł poprawić swoją odpowiedź .......
starbeamrainbowlabs

Głosowany negatywnie (na razie) z komentarzem: Pokaż nam, jak przechwycić te dane wyjściowe i przekonwertować je na odpowiedź na pytanie, tj. Za każdym razem, gdy to zrobimy apt update, w jaki sposób filtrujemy dane wyjściowe / tekst, aby wyodrębnić informacje istotne dla tego pytania?
dardisco

2
Bardzo ulepszony! +1 do użycia awkw filtrowaniu.
dardisco

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.