Вопрос или проблема
Я знаю, как перечислить все пакеты, установленные на моей системе.
Но как я могу получить список всех репозиториев и PPA в скрипт, который я могу запустить на новой машине, чтобы воспроизвести настройки репозиториев, включая ключи?
Я знаю, что могу посмотреть в /etc/apt/sources.list
и /etc/apt/sources.list.d
, но я ищу способ сгенерировать скрипт, который выполняет все команды apt-add-repository
на новой системе (что позволяет получить все ключи).
Есть идеи?
Вы можете показать все с помощью:
grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*
Спасибо за подсказки. С небольшими исправлениями я получил скрипт, который перечисляет PPA, но не другие репозитории:
скрипт listppas
:
#! /bin/sh
# Скрипт listppas для получения всех установленных PPA на системе, готовых для
# повторной установки
for APT in `find /etc/apt/ -name \*.list`; do
grep -o "^deb http://ppa.launchpad.net/[a-z0-9\-]\+/[a-z0-9\-]\+" $APT \
| while read ENTRY ; do
USER=`echo $ENTRY | cut -d/ -f4`
PPA=`echo $ENTRY | cut -d/ -f5`
echo sudo apt-add-repository ppa:$USER/$PPA
done
done
Когда вы вызываете его с listppas > installppas.sh
, вы получаете скрипт installppas.sh
, который вы можете скопировать на новую машину для переустановки всех PPA.
Следующий шаг: сделать это для других репозиториев:
Окончательный скрипт listppas
:
#! /bin/sh
# Скрипт для получения всех PPA, которые установлены на системе
for APT in `find /etc/apt/ -name \*.list`; do
grep -Po "(?<=^deb\s).*?(?=#|$)" $APT | while read ENTRY ; do
HOST=`echo $ENTRY | cut -d/ -f3`
USER=`echo $ENTRY | cut -d/ -f4`
PPA=`echo $ENTRY | cut -d/ -f5`
#echo sudo apt-add-repository ppa:$USER/$PPA
if [ "ppa.launchpad.net" = "$HOST" ]; then
echo sudo apt-add-repository ppa:$USER/$PPA
else
echo sudo apt-add-repository \'${ENTRY}\'
fi
done
done
Это должно сработать. Используйте его как listppas > installppas.sh
на исходной машине, затем запустите содержимое installppas.sh
на целевой машине.
Мне понадобился вопрос на superuser, чтобы выяснить правильный regex.
Меня удивляет, что самый простой, но самый эффективный способ получить все включенные бинарные программные источники вместе с файлом, в котором они указаны, еще не был опубликован:
grep -r --include '*.list' '^deb ' /etc/apt/sources.list /etc/apt/sources.list.d/
Из всех обработанных файлов это выведет каждую строку, начинающуюся с deb
. Это исключает закомментированные строки, а также строки deb-src
, чтобы включить репозитории исходного кода.
На самом деле он ищет только все *.list
файлы, которые будут обработаны apt
, но, например, никакие *.list.save
файлы, используемые для резервного копирования или другие с недопустимыми именами.
Если вам нужен более короткий, но возможно лишь в 99.9% всех случаев правильный вывод, который может слишком много искать файлов (включает все /etc/apt/sources.list*
файлы и директории, а не только /etc/apt/sources.list
и /etc/apt/sources.list.d/*
), вы также можете использовать это:
grep -r --include '*.list' '^deb ' /etc/apt/sources.list*
Если только в файлах нет, которые не должны быть там, вывод будет одинаковым.
Примером вывода на моей машине будет:
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily main restricted
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates main restricted
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily universe
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates universe
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily multiverse
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates multiverse
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-backports main restricted universe multiverse
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security main restricted
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security universe
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security multiverse
/etc/apt/sources.list:deb http://archive.canonical.com/ubuntu wily partner
/etc/apt/sources.list.d/maarten-fonville-ubuntu-ppa-wily.list:deb http://ppa.launchpad.net/maarten-fonville/ppa/ubuntu wily main
/etc/apt/sources.list.d/webupd8team-ubuntu-tor-browser-wily.list:deb http://ppa.launchpad.net/webupd8team/tor-browser/ubuntu wily main
/etc/apt/sources.list.d/fossfreedom-ubuntu-indicator-sysmonitor-wily.list:deb http://ppa.launchpad.net/fossfreedom/indicator-sysmonitor/ubuntu wily main
/etc/apt/sources.list.d/getdeb.list:deb http://archive.getdeb.net/ubuntu wily-getdeb apps
Если вы хотите более красивый вывод, давайте пропустим его через sed
:
grep -r --include '*.list' '^deb ' /etc/apt/ | sed -re 's/^\/etc\/apt\/sources\.list((\.d\/)?|(:)?)//' -e 's/(.*\.list):/\[\1\] /' -e 's/deb http:\/\/ppa.launchpad.net\/(.*?)\/ubuntu .*/ppa:\1/'
И мы увидим следующее:
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily main restricted
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates main restricted
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily universe
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates universe
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily multiverse
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates multiverse
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-backports main restricted universe multiverse
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security main restricted
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security universe
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security multiverse
deb http://archive.canonical.com/ubuntu wily partner
[maarten-fonville-ubuntu-ppa-wily.list] ppa:maarten-fonville/ppa
[webupd8team-ubuntu-tor-browser-wily.list] ppa:webupd8team/tor-browser
[fossfreedom-ubuntu-indicator-sysmonitor-wily.list] ppa:fossfreedom/indicator-sysmonitor
[getdeb.list] deb http://archive.getdeb.net/ubuntu wily-getdeb apps
Запустите следующую команду:
apt-cache policy | grep http | awk '{print $2" "$3}' | sort -u
Используя add-apt-repository
из software-properties-common
, это так же просто, как:
add-apt-repository --list
Вывод можно легко вернуть команде add-apt-repository
для воссоздания источников.
Тем не менее, он перечисляет только deb
источники. Если вас также интересуют ppa
, то другие ответы на этот вопрос будут более полезными.
Доступность
Похоже, что опция --list
была доступна только начиная с версии 0.99.0+ software-properties-common
, которая по умолчанию доступна начиная с Ubuntu 20.10 (Groovy). Так что вам, возможно, придется обновить вашу версию программного обеспечения или обновить вашу дистрибуцию до как минимум 20.10.
Вот мой скрипт “list-apt-repositories
“, который перечисляет все репозитории в “/etc/sources.list"
и “/etc/sources.list.d/*.list
“. Вы можете добавить --ppa-only
, чтобы показать только PPA. PPA автоматически преобразуются в формат ppa:USER/REPO
.
Соответствующие части – это 5 строк в функциях list_sources
и list_ppa
, остальное – просто стандартные шаблоны для обертывания этого в удобный скрипт shell.
list-apt-repositories
:
#!/bin/sh
usage () {
cat >&2 <<USAGE
$0 [--ppa-only]
Options:
--ppa-only только перечислить PPA
USAGE
exit $1
}
list_sources () {
grep -hE '^deb\s' /etc/apt/sources.list /etc/apt/sources.list.d/*.list |\
sed '/ppa/ s/deb //g' |\
sed -re 's#http://ppa\.launchpad\.net/([^/]+)/([^/]+)(.*?)$#ppa:\1/\2#g'
}
list_ppa () {
list_sources | grep '^ppa:'
}
generate=list_sources
while test -n "$1"
do
case "$1" in
-h|--help) usage 1;;
--ppa-only) generate=list_ppa;;
*)
printf -- "Неизвестный аргумент '$1'\n" >&2
usage 2
;;
esac
shift
done
$generate
И чтобы создать скрипт установки, перенаправьте вывод в другой скрипт “make-apt-repository-install-script
“. Сгенерированный скрипт поддерживает аргумент -y
/--yes
для не интерактивного использования (см. add-apt-repository(1)
).
make-apt-repository-install-script
:
#!/bin/sh
if test -n "$1"
then
cat >&2 <<USAGE
Usage: $0 < PATH_TO_LIST_OF_REPOS
list-apt-repositories [--ppa-only] | $0
Не распознаны опции.
Читает список репозиториев из stdin и генерирует скрипт для их установки
с помощью \`add-apt-repository(1)\`. Скрипт выводится в stdout.
Сгенерированный скрипт поддерживает необязательный
\`-y\` или \`--yes\` аргумент, который вызывает выполнение команд \`add-apt-repository\`
с флагом \`--yes\`.
USAGE
exit 1
fi
cat <<INSTALL_SCRIPT
#!/bin/sh
y=
case "\$1" in
-y|--yes) y=\$1;;
'') y=;;
*)
printf '%s\n' "Неизвестная опция '\$1'" "Использование: \$0 [{-y|--yes}]" >&2
exit 1
;;
esac
INSTALL_SCRIPT
xargs -d'\n' printf "add-apt-repository \$y '%s'\n"
Снова важная часть – это команда xargs
на последней строке, остальное – стандартные шаблоны.
Я использую следующую команду, чтобы перечислить все настроенные программные источники (репозитории), включая в настоящее время отключенные:
cat /etc/apt/sources.list; for X in /etc/apt/sources.list.d/*; do echo; echo; echo "** $X:"; echo; cat $X; done
Я использую это в основном для устранения неполадок; это можно, безусловно, включить в скрипты, но вы, возможно, захотите сузить /etc/apt/sources.list.d/*
до /etc/apt/sources.list.d/*.list
, чтобы получить только в настоящее время включенные программные источники.
Итак, подытожив, у нас есть AptPkg::Class
.
Используя perl
, мы можем сделать что-то простое, как это:
perl -MAptPkg::Cache -MData::Dumper -E'say Dumper [AptPkg::Cache->new->files()]' | less
Это дает нам список всех пакетов AptPkg::Class::PkgFile
. Вы, вероятно, сможете сгенерировать команды apt-add-repository
с их помощью.
Вот одна команда:
find /etc/apt/sources.list* -type f -iname "*.list" -exec grep -viE '(^#|^$)' {} \; -print | column -tx
deb http://archive.ubuntu.com/ubuntu bionic main restricted
deb http://archive.ubuntu.com/ubuntu bionic-updates main restricted
deb http://archive.ubuntu.com/ubuntu bionic universe
deb http://archive.ubuntu.com/ubuntu bionic-updates universe
deb http://archive.ubuntu.com/ubuntu bionic multiverse
deb http://archive.ubuntu.com/ubuntu bionic-updates multiverse
deb http://archive.ubuntu.com/ubuntu bionic-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu bionic-security main restricted
deb http://security.ubuntu.com/ubuntu bionic-security universe
deb http://security.ubuntu.com/ubuntu bionic-security multiverse
/etc/apt/sources.list
deb https://nginx.org/packages/ubuntu/ bionic nginx
deb-src https://nginx.org/packages/ubuntu/ bionic nginx
/etc/apt/sources.list.d/nginx.list
Ripgrep версия для полноты:
rg --iglob '*.list' '^deb(-src)? ' /etc/apt/sources.list /etc/apt/sources.list.d/
https://repogen.simplylinux.ch/ даст вам список всех PPA для вашей версии Ubuntu. Вот сгенерированный список без исходных файлов и без PPA для принтера samsung:
#------------------------------------------------------------------------------#
# ОФИЦИАЛЬНЫЕ РЕПОЗИТОРИИ UBUNTU #
#------------------------------------------------------------------------------#
###### Главные репозитории Ubuntu
deb http://us.archive.ubuntu.com/ubuntu/ yakkety main restricted universe multiverse
###### Репозитории обновлений Ubuntu
deb http://us.archive.ubuntu.com/ubuntu/ yakkety-security main restricted universe multiverse
deb http://us.archive.ubuntu.com/ubuntu/ yakkety-updates main restricted universe multiverse
deb http://us.archive.ubuntu.com/ubuntu/ yakkety-proposed main restricted universe multiverse
deb http://us.archive.ubuntu.com/ubuntu/ yakkety-backports main restricted universe multiverse
###### Партнерский репозиторий Ubuntu
deb http://archive.canonical.com/ubuntu yakkety partner
#------------------------------------------------------------------------------#
# НЕОФИЦИАЛЬНЫЕ РЕПОЗИТОРИИ UBUNTU #
#------------------------------------------------------------------------------#
###### 3-й сторонние бинарные репозитории
#### Flacon PPA - http://kde-apps.org/content/show.php?content=113388
## Запустите эту команду: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F2A61FE5
deb http://ppa.launchpad.net/flacon/ppa/ubuntu yakkety main
#### Gimp PPA - https://launchpad.net/~otto-kesselgulasch/+archive/gimp
## Запустите эту команду: sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 614C4B38
deb http://ppa.launchpad.net/otto-kesselgulasch/gimp/ubuntu yakkety main
#### Браузер Google Chrome - http://www.google.com/linuxrepositories/
## Запустите эту команду: wget -q https://dl.google.com/linux/linux_signing_key.pub -O- | sudo apt-key add -
deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main
#### Google Earth - http://www.google.com/linuxrepositories/
## Запустите эту команду: wget -q https://dl.google.com/linux/linux_signing_key.pub -O- | sudo apt-key add -
deb [arch=amd64] http://dl.google.com/linux/earth/deb/ stable main
#### Высоко взрывоопасный PPA - https://launchpad.net/~dhor/+archive/myway
## Запустите эту команду: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93330B78
deb http://ppa.launchpad.net/dhor/myway/ubuntu yakkety main
#### JDownloader PPA - https://launchpad.net/~jd-team
## Запустите эту команду: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6A68F637
deb http://ppa.launchpad.net/jd-team/jdownloader/ubuntu yakkety main
#### Lazarus - http://www.lazarus.freepascal.org/
## Запустите эту команду: gpg --keyserver hkp://pgp.mit.edu:11371 --recv-keys 6A11800F && gpg --export --armor 0F7992B0 | sudo apt-key add -
deb http://www.hu.freepascal.org/lazarus/ lazarus-stable universe
#### LibreOffice PPA - http://www.documentfoundation.org/download/
## Запустите эту команду: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1378B444
deb http://ppa.launchpad.net/libreoffice/ppa/ubuntu yakkety main
#### Клиент синхронизации MEGA - https://mega.co.nz/
deb http://mega.nz/linux/MEGAsync/xUbuntu_16.10/ ./
#### MKVToolnix - http://www.bunkus.org/videotools/mkvtoolnix/
## Запустите эту команду: wget -q http://www.bunkus.org/gpg-pub-moritzbunkus.txt -O- | sudo apt-key add -
deb http://www.bunkus.org/ubuntu/yakkety/ ./
#### PPA ежедневно выпускаемой команды Mozilla - http://edge.launchpad.net/~ubuntu-mozilla-daily/+archive/ppa
## Запустите эту команду: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 247510BE
deb http://ppa.launchpad.net/ubuntu-mozilla-daily/ppa/ubuntu yakkety main
#### muCommander - http://www.mucommander.com/
## Запустите эту команду: sudo wget -O - http://apt.mucommander.com/apt.key | sudo apt-key add -
deb http://apt.mucommander.com stable main non-free contrib
#### Opera - http://www.opera.com/
## Запустите эту команду: sudo wget -O - http://deb.opera.com/archive.key | sudo apt-key add -
deb http://deb.opera.com/opera/ stable non-free
#### Установщик Oracle Java (JDK) PPA - http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-ubuntu-via.html
## Запустите эту команду: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886
deb http://ppa.launchpad.net/webupd8team/java/ubuntu yakkety main
#### PlayDeb - http://www.playdeb.net/
## Запустите эту команду: wget -O- http://archive.getdeb.net/getdeb-archive.key | sudo apt-key add -
deb http://archive.getdeb.net/ubuntu yakkety-getdeb games
#### PPA SABnzbd - http://sabnzbd.org/
## Запустите эту команду: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4BB9F05F
deb http://ppa.launchpad.net/jcfp/ppa/ubuntu yakkety main
#### PPA SimpleScreenRecorder - http://www.maartenbaert.be/simplescreenrecorder/
## Запустите эту команду: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 283EC8CD
deb http://ppa.launchpad.net/maarten-baert/simplescreenrecorder/ubuntu yakkety main
#### Steam для Linux - http://store.steampowered.com/about/
## Запустите эту команду: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F24AEA9FB05498B7
deb [arch=i386] http://repo.steampowered.com/steam/ precise steam
#### Syncthing - https://syncthing.net/
## Запустите эту команду: curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
deb http://apt.syncthing.net/ syncthing release
#### Tor: анонимность в интернете - https://www.torproject.org
## Запустите эту команду: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 886DDD89
deb http://deb.torproject.org/torproject.org yakkety main
#### PPA Unsettings - http://www.florian-diesch.de/software/unsettings/
## Запустите эту команду: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0FEB6DD9
deb http://ppa.launchpad.net/diesch/testing/ubuntu yakkety main
#### VirtualBox - http://www.virtualbox.org
## Запустите эту команду: wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox_2016.asc -O- | sudo apt-key add -
deb http://download.virtualbox.org/virtualbox/debian yakkety contrib
#### Webmin - http://www.webmin.com
## Запустите эту команду: wget http://www.webmin.com/jcameron-key.asc -O- | sudo apt-key add -
deb http://download.webmin.com/download/repository sarge contrib
#### PPA WebUpd8 - http://www.webupd8.org/
## Запустите эту команду: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4C9D234C
deb http://ppa.launchpad.net/nilarimogard/webupd8/ubuntu yakkety main
#### PPA Xorg Edgers - https://launchpad.net/~xorg-edgers
## Запустите эту команду: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8844C542
deb http://ppa.launchpad.net/xorg-edgers/ppa/ubuntu yakkety main
вот сгенерированный список без исходных файлов и без PPA для принтера samsung
#### Yuuguu - http://yuuguu.com
deb http://update.yuuguu.com/repositories/apt hardy multiverse
Чтобы добавить строки ppa.launchpad.net в формате ppa:$USER/$PPA. Добавьте другие репозитории с их полной строкой из *.list файлов. Без дубликатов.
#!/bin/bash # Мой ~/bin/mk_repositories_restore_script mkdir -p ~/bin x=~/bin/restore_repositories echo \#\!/bin/bash > $x chmod u+x $x ( for APT in $( find /etc/apt/ -name \*.list ) do sed -n -e '/^deb /{ /ppa\.launchpad/s/\(.*\/\/[^\/]*.\)\([^ \t]*\)\(.*$\)/sudo apt-add-repository ppa:\2/p; /ppa\.launchpad/!s/\(deb[ \t]*\)\(.*$\)/sudo apt-add-repository \2/p; }' $APT done ) | sort | uniq | tee -a ~/bin/restore_repositories
Спасибо, BobDodds!
Если кто-то будет заинтересован, я немного обновил ваш код (надеюсь, вы не против)…
Этот скрипт будет выводить только добавленные пользователем PPA (/etc/apt/sources.list.d).
#!/bin/bash
# Мой ~/bin/mk_repositories_restore_script
mkdir -p ~/bin
x=~/bin/restore_repositories
echo \#\!/bin/bash > $x
chmod u+x $x
(
for APT in $( find /etc/apt/ -name \*.list )
do sed -n -e '/^deb /{
/ppa\.launchpad/s/\(.*\/\/[^\/]*.\)\([^ \t]*\)\(.*\/ubuntu.*$\)/ppa:\2/p;
}' $APT
done
) | sort | uniq | tee -a ~/bin/restore_repositories
sed -r -e '/^deb /!d' -e 's/^([^#]*).*/\1/' -e 's/deb http:\/\/ppa.launchpad.net\/(.+)\/ubuntu .*/ppa:\1/' -e "s/.*/sudo add-apt-repository '&"https://askubuntu.com/" /etc/apt/sources.list /etc/apt/sources.list.d/*
Однако это не генерирует команды для включения возможных репозиториев исходного кода (deb-src).
Для того чтобы перечислить репозитории, я предоставлю короткий метод, похожий на уже опубликованные, также фильтруя комментарии с помощью regex: ^[^#] (“в начале строки, без закомментированных строк”):
grep "^[^#]" /etc/apt/sources.list /etc/apt/sources.list.d/*
Установите ppa-purge
apt install ppa-purge
Затем получите список PPA с помощью автозаполнения…
ppa-purge -o
(нажмите Tab дважды)
Ответ или решение
Для создания скрипта установки, который будет реплицировать настройки репозиториев и PPA на новом Ubuntu-системе, вы можете использовать несколько команд для извлечения информации о существующих репозиториях. Следующий пошаговый процесс поможет вам с этим:
1. Сбор информации о репозиториях и PPA
Первый шаг заключается в извлечении информации о всех файлах репозиториев, находящихся в /etc/apt/sources.list
и папке /etc/apt/sources.list.d/
. Чтобы получить список всех активных репозиториев и PPA, вы можете использовать команду grep
:
grep -hE '^deb ' /etc/apt/sources.list /etc/apt/sources.list.d/*.list | sed 's/^deb //g'
Эта команда соберет все строки, начинающиеся с deb
, и пропустит закомментированные строки.
2. Генерация команд добавления PPA и репозиториев
Следующий шаг — создать скрипт, который будет генерировать команды добавления репозиториев и PPA. Вот пример скрипта list_apt_repositories.sh
, который делает именно это:
#!/bin/bash
# Скрипт для генерации команд добавления репозиториев
# Сбор PPA и прочих репозиториев
find /etc/apt/ -name '*.list' | while read APT; do
grep -oP '^deb\s+\K.*(?=#|$)' "$APT" | while read ENTRY; do
HOST=$(echo "$ENTRY" | cut -d/ -f3)
if [[ "$HOST" == "ppa.launchpad.net" ]]; then
USER=$(echo "$ENTRY" | cut -d/ -f4)
PPA=$(echo "$ENTRY" | cut -d/ -f5)
echo "sudo add-apt-repository ppa:$USER/$PPA"
else
echo "sudo add-apt-repository 'deb $ENTRY'"
fi
done
done | sort -u
3. Создание исполняемого файла
Сохраните этот скрипт в файл, например, list_apt_repositories.sh
, и дайте ему права на выполнение:
chmod +x list_apt_repositories.sh
4. Генерация скрипта для новой машины
Теперь вы можете сгенерировать скрипт установки для новой машины, запустив:
./list_apt_repositories.sh > install_repositories.sh
Это создаст файл install_repositories.sh
, который будет содержать все необходимые команды для добавления PPA и репозиториев.
5. Запуск на новой машине
Чтобы использовать сгенерированный скрипт на новой машине, просто выполните:
bash install_repositories.sh
Заключение
Этот процесс позволяет эффективно копировать настройки репозиториев и PPA с одной установки Ubuntu на другую с помощью простых команд командной строки. Убедитесь, что у вас установлены все необходимые пакеты и ключи, чтобы избежать ошибок во время установки на новой системе. Если вы хотите увидеть PPA, созданные пользователями, этот метод также будет их включать.