Вопрос или проблема
Конечное состояние. Я хочу отформатировать свой /
раздел, переустановить openSUSE Tumbleweed и установить те же пакеты, что и сейчас.
Проблема. Я сделал, похоже, неудачный выбор, отформатировав корневую файловую систему как btrfs. 20 ГБ, которые у меня были, было достаточно ранее с, скажем, ext3, но я не могу справиться с управлением моментальными снимками с помощью snapper из-за большого количества обновлений Tumbleweed.
Частичный успех.
- Репозитории: Я могу экспортировать список своих репозиториев с помощью
sudo zypper lr -u --export repo.list
и добавить его обратно в новую установку с помощьюsudo zypper addrepo repo.list
. - Пакеты: Я могу экспортировать список установленных пакетов с помощью
sudo zypper search --installed-only > installed.packages
илиrpm -qa | sort
.
Но я не знаю, как установить пакеты из списка или создать список пакетов, который может быть использован openSUSE во время установки дистрибутива.
Правка: autoyast может быть подходящим решением, но это более тяжелый вариант, чем я искал.
Используйте --queryformat
, чтобы перечислить названия пакетов без версии:
rpm -qa --qf "%{NAME}\n" > installed_pkgs.txt
Для установки пропустите содержимое файла через xargs
:
cat installed_pkgs.txt | xargs sudo zypper install
Это может быть медленно, но вы можете использовать этот bash-скрипт:
IFS=$'\n'
for package in `cat installed.packages`; do
zypper install $package
done
У меня были хорошие результаты, используя экспортированный список (из rpm -qa | cut ...
) как способ создать моментальный снимок конкретной конфигурации, а затем воспроизвести его с помощью:
# cat packages.txt | xargs -I {} zypper -n in -l {}
но нужно быть уверенным, что в списке пакетов нет лишних пробелов.
Я думаю, что более надежным решением может быть:
# xargs -a packages.txt -I {} sudo zypper -n in -l {}
так как я думаю, что это не вызовет проблем с лишними пробелами, но пока не тестировал это (еще).
Не забудьте использовать sudo
, если вы не используете su
!
Я не видел, чтобы другие решения упоминали требование -I {} … {} для работы этого без ошибок.
Единственная проблема заключается в получении автоматического импорта и принятия GPG-ключей из моего импортированного списка репозиториев (шаг 1, перед установкой/обновлением программного обеспечения необходимо убедиться, что репозиторий с программным обеспечением действительно доступен…) Не знаю, почему это не работает так, как рекламируется.
Ответ или решение
Чтобы установить пакеты из списка с помощью zypper
, выполните следующие шаги:
Подготовка к установке
-
Экспортируйте список установленных пакетов:
На вашей текущей системе выполните команду, чтобы получить список установленных пакетов без версии и сохранить его в файл:rpm -qa --qf "%{NAME}\n" > installed_packages.txt
Это создаст файл
installed_packages.txt
, содержащий только названия пакетов. -
Сохраните список репозиториев:
Вы уже правильно экспортировали список репозиториев с помощью следующих команд:sudo zypper lr -u --export repo.list
Чтобы добавить их на свежую установку, используйте:
sudo zypper addrepo repo.list
Установка пакетов на новой системе
После переустановки openSUSE Tumbleweed выполните следующие шаги для восстановления пакетов:
-
Импортируйте репозитории:
После установки системы выполните команду для добавления списков репозиториев, если вы еще не сделали этого на новой системе.
sudo zypper addrepo repo.list
-
Установка пакетов из списка:
Для установки пакетов из ранее сохраненного файла, используйте следующие команды:
xargs -a installed_packages.txt -I {} sudo zypper -n in -l {}
-a installed_packages.txt
указывает, чтоxargs
берет входные данные из указанного файла.-I {}
позволяет задать заменяемое значение{}
, используемое в командеzypper
.
-
Проверка на ошибки:
Перед выполнением установки рекомендуется проверить, чтобы в списке
installed_packages.txt
не было лишних пробелов и пустых строк. Это поможет избежать ошибок во время установки.
Последние штрихи
- Автоматический импорт GPG ключей:
При добавлении репозиториев стоит убедиться, что ключи GPG импортируются автоматически. Если этого не происходит, возможно, вам нужно будет импортировать ключи вручную. Обычно это делается командойsudo zypper refresh
после добавления репозиториев.
Следуя этим шагам, вы сможете восстановить свою систему до состояния с прежними установленными пакетами, что сделает ваш процесс установки более плавным и управляемым.