Как получить список репозиториев, которые проверяет apt-get? [закрыто]

133

Я хочу список репо в sources.list, а также в sources.list.d /.

Могу ли я получить этот список в форме, подходящей для настройки другого хоста, чтобы он смотрел те же репо?

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

ktenney
источник
1
См. Askubuntu.com/questions/148932/…
Мауг говорит восстановить Монику

Ответы:

174

Кажется, самым близким является:

apt-cache policy
ktenney
источник
3
Кто-то улучшил вывод (суммирование URL-адресов и т. Д.) И хочет поделиться своей командой здесь?
одинокий
49

AFAIK, вы не можете спросить apt о том, каковы их текущие источники, однако вы можете делать то, что вы хотите, используя инструменты оболочки.

Получение списка репозиториев:

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
radri
источник
26
Это не включает в себя репозитории из /etc/apt/sources.list.d/, т. Е. Репозитории, полученные в результате # 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выражение на основе может быть использовано для генерации списка sources.list:

 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
источник
Почему отрицательный голос? По крайней мере, оставьте комментарий, чтобы я мог улучшить свой ответ .......
starbeamrainbowlabs
Пониженное голосование (пока) с комментарием: Пожалуйста, покажите нам, как захватить этот вывод и преобразовать его в ответ на вопрос, т.е. каждый раз, когда мы это делаем apt update, как мы фильтруем этот вывод / текст, чтобы извлечь информацию, относящуюся к этому вопросу?
Дардишко
2
Значительно улучшилось! +1 за использование awkв фильтрации.
Дардиско,