Як отримати список сховищ, які apt-get перевіряє? [зачинено]


133

Я хочу, щоб список репостів був у source.list, а також ті, які містяться в source.list.d /.

Чи можу я отримати цей список у формі, придатній для налаштування іншого хоста, щоб він спостерігав ті самі репости?

Крім того, як я можу визначити, який репо є джерелом пакета, встановлений чи доступний?


Відповіді:


174

Здається, найближче:

apt-cache policy

3
Хтось підвищив результат (підсумовуючи URL тощо) і хотів поділитися тут своєю командою?
самотній

49

AFAIK ви не можете запитати влучно, які є їх поточні джерела, проте ви можете робити все, що завгодно, використовуючи інструменти оболонки.

Отримання списку сховищ:

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, якщо ви хочете переглянути повний список.


9
простий повний списокapt-cache policy |grep http |awk '{print $2 $3}' |sort -u
shadowbq

пропущено пробілapt-cache policy |grep http |awk '{print $2 " " $3}' |sort -u
shadowbq

У командному рядку з grep: /etc/apt/sources.list.d/*слід змінити на /etc/apt/sources.list.d/*.list. Щодо причини, чому дивіться askubuntu.com/questions/82825/…
Ерік

18

Спробуйте це:

cat /etc/apt/sources.list

26
Вони не включатимуть репости з /etc/apt/sources.list.d/, IE, які є результатами # apt-add-repository XXX
ktenney

3
grep -Erh ^deb /etc/apt/sources.list*повинен зробити трюк.
Девід

1
grep -Erh '^deb ' /etc/apt/sources.list*для виключення deb-srcрядків.
Девід

8

Це не формат, який підходить для сліпого копіювання на іншу машину, але користувачі, які бажають розібратися, додали вони сховище ще чи ні (як я), ви можете просто зробити:

sudo apt update

Під час aptоновлення він виводить список сховищ, які він отримує. Це здається очевидним, але я щойно зрозумів, що таке GETURL-адреси, що вони виплюнуті.

Редагувати: Для awkстворення джерела списку може бути використаний наступний вираз:

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

Оскільки відключені репости коментуються хешем, це повинно працювати за призначенням.


Чому потік? Принаймні залиште коментар, щоб я міг покращити свою відповідь .......
starbeamrainbowlabs

Запропонований (поки що) коментар: Будь ласка, покажіть нам, як захопити цей вихід і перетворити його на відповідь на питання, тобто щоразу apt update, як ми фільтруємо цей вихід / текст, щоб отримати інформацію, що стосується цього питання?
дардіско

2
Набагато покращився! +1 для використання awkу фільтруванні.
dardisco

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.