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?

ktenney
źródło
1
Zobacz askubuntu.com/questions/148932/…
Mawg mówi, że przywróć Monikę

Odpowiedzi:

174

Wydaje się, że najbliższy jest:

apt-cache policy
ktenney
źródło
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ę.

Dzielność
źródło
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
radri
źródło
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.

starbeamrainbowlabs
źródło
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