Я знаю, как составить список всех пакетов, установленных в моей системе.
Но как я могу получить список всех репозиториев и PPA-скриптов в сценарии, который я могу запустить на новом компьютере для репликации настроек репозитория, включая ключи?
Я знаю, что могу изучить /etc/apt/sources.list
и /etc/apt/sources.list.d
, но я ищу способ создания сценария, который выполняет все apt-add-repository
команды в новой системе (который сортирует получение всех ключей).
Есть идеи?
egrep -v '^#|^ *$' /etc/apt/sources.list /etc/apt/sources.list.d/*
удаления закомментированных строк и пустых строк?^
послеgrep
вgrep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*
?cat /etc/apt/sources.list /etc/apt/sources.list.d/*
Спасибо за указатели. После небольшой очистки я получил скрипт, в котором перечислены PPA, но не какой-либо другой репозиторий:
Когда вы вызываете его,
listppa > installppa.sh
вы получаете скрипт, который вы можете скопировать на новый компьютер, чтобы переустановить все PPA.Следующая остановка: сделайте это для других репозиториев:
Это должно сделать свое дело. Мне нужен вопрос о суперпользователе, чтобы выяснить правильное регулярное выражение.
источник
grep -o
примере,\`
in[a-z0-9\-]
не делает то, что вы ожидаете. Это фактически соответствует буквальному обратному слешу . Вам не нужно , чтобы избежать-
, когда она находится в начале или в конце[]
списка; на самом деле, вы не можете избежать этого! .. В этом случае\`
(вероятно) не будет возникать проблема, потому что вы (надеюсь) не встретите обратную косую черту вdeb
записи.http://ppa.launchpad.net/[a-z0-9-]\+/[a-z0-9.-]\+
[[:graph:]]
вместо,[a-z...blah.anything]
потому что оно будет соответствовать любым буквенно-цифровым + знакам препинания - это то, из чего состоят имена PPA.deb
слово в начале каждой строки хранилища, если оно не указано вppa:$USER/$PPA
форме.grep -Po "(?<=^deb\s).*?(?=#|$)" /etc/apt/{sources.list,sources.list.d/*.list} | while read ENTRY ; do echo $ENTRY; done
Обратите внимание, что, как написано, это показывает вам имя файла, из которого происходит каждая запись, поэтому вам нужно будет выполнить обрезку с начала результата до первого двоеточия, но это не слишком сложно с вырезкой. Вы также можете пропустить его,uniq
если не хотите, чтобы несколько записей для одного и того же источника (например, если у вас установлен Google Chrome Stable / Beta / Dev).Я удивлен, что самый простой, но самый эффективный способ собрать все включенные бинарные программные источники вместе с файлом, в котором они указаны, еще не опубликован:
Из всех обработанных файлов будет напечатана каждая строка, начинающаяся с
deb
. Это исключает закомментированные строки, а такжеdeb-src
строки для включения репозиториев исходного кода.Он действительно ищет только все
*.list
файлы, которые будут проанализированыapt
, но, например,*.list.save
файлы, используемые для резервного копирования, или другие файлы с недопустимыми именами.Если вам нужен более короткий, но, возможно, только в 99,9% всех случаев правильный вывод, который может искать слишком много файлов (включая все
/etc/apt/sources.list*
файлы и каталоги, не только/etc/apt/sources.list
и `/etc/apt/sources.list.d/*), вы также можете использовать это:Если нет файлов, которых там быть не должно, вывод будет таким же.
Пример вывода на моей машине будет такой:
Если вы хотите более красивый вывод, давайте передадим его через
sed
:И мы увидим это:
источник
ppa:<user>/<project>
форме.Запустите следующую команду:
Источник
источник
apt-cache policy
репо будут показаны только после того, как вы запуститеapt-get update
. Если вы только что добавили репоadd-apt-repository
, он не будет отображаться доapt-cache policy
тех пор, пока вы не запуститеapt-get update
sudo apt update > /dev/null 2>&1 && sudo apt-cache policy | grep http | awk '{print $2 $3}' | sort -u
работает хорошо. gist.github.com/bmatthewshea/229da822f1f02157bff192a2e4a8ffd1Я использую эту команду для вывода списка всех настроенных программных источников (репозиториев), включая отключенные в настоящий момент :
Я использую это в основном для устранения неполадок; это, безусловно, может быть включено в сценарии, но вы можете захотеть сузить
/etc/apt/sources.list.d/*
его,/etc/apt/sources.list.d/*.list
чтобы получить только доступные в настоящее время программные источники.источник
Итак, мы покопались, у нас есть
AptPkg::Class
.Таким образом, используя
perl
мы можем сделать что-то простое, как это ..Это дает нам список всех
AptPkg::Class::PkgFile
пакетов. Вы могли бы, вероятно, сгенерироватьapt-add-repository
команды с этим.источник
https://repogen.simplylinux.ch/ предоставит вам список всех PPA для вашей версии Ubuntu. Вот сгенерированный список без исходных файлов и psa принтера samsung:
источник
Вот мой скрипт "
list-apt-repositories
", который перечисляет все репозитории в "/etc/sources.list"
и"/etc/sources.list.d/*.list
". Вы можете добавить,--ppa-only
чтобы показать только PPA. PPA автоматически преобразуются вppa:USER/REPO
формат.Соответствующие части состоят из 5 строк
list_sources
иlist_ppa
функций, остальные - просто шаблон, чтобы обернуть его в удобный сценарий оболочки.list-apt-repositories
:И чтобы сделать скрипт установки, отправьте другой скрипт "
make-apt-repository-install-script
". Сгенерированный скрипт поддерживает аргумент-y
/--yes
для неинтерактивного использования (см.add-apt-repository(1)
).make-apt-repository-install-script
:Опять же, важная часть - это
xargs
команда в последней строке, остальное - шаблон.источник
Для этого добавьте строки ppa.launchpad.net как ppa: $ USER / $ PPA. Добавьте другие репозитории с их полной строкой из файлов * .list. Никаких тупых линий.
источник
Спасибо BobDodds!
Если кому-то будет интересно, я немного обновил ваш код (надеюсь, вы не возражаете).
Этот скрипт будет печатать только добавленные пользователем PPA (/etc/apt/sources.list.d).
источник
Это не генерирует команды для включения возможных исходных репозиториев (deb-src).
источник
устанавливать
ppa-purge
Затем получить список PPA по завершению вкладки ...
ppa-purge -o
( Tabдважды нажмите клавишу)источник
ppa-purge
не имеет-o
флага в соответствии со своей страницей руководства . -1