Как установить пакеты из списка с помощью zypper?

Вопрос или проблема

Конечное состояние. Я хочу отформатировать свой / раздел, переустановить 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, выполните следующие шаги:

Подготовка к установке

  1. Экспортируйте список установленных пакетов:
    На вашей текущей системе выполните команду, чтобы получить список установленных пакетов без версии и сохранить его в файл:

    rpm -qa --qf "%{NAME}\n" > installed_packages.txt

    Это создаст файл installed_packages.txt, содержащий только названия пакетов.

  2. Сохраните список репозиториев:
    Вы уже правильно экспортировали список репозиториев с помощью следующих команд:

    sudo zypper lr -u --export repo.list

    Чтобы добавить их на свежую установку, используйте:

    sudo zypper addrepo repo.list

Установка пакетов на новой системе

После переустановки openSUSE Tumbleweed выполните следующие шаги для восстановления пакетов:

  1. Импортируйте репозитории:

    После установки системы выполните команду для добавления списков репозиториев, если вы еще не сделали этого на новой системе.

    sudo zypper addrepo repo.list
  2. Установка пакетов из списка:

    Для установки пакетов из ранее сохраненного файла, используйте следующие команды:

    xargs -a installed_packages.txt -I {} sudo zypper -n in -l {}
    • -a installed_packages.txt указывает, что xargs берет входные данные из указанного файла.
    • -I {} позволяет задать заменяемое значение {}, используемое в команде zypper.
  3. Проверка на ошибки:

    Перед выполнением установки рекомендуется проверить, чтобы в списке installed_packages.txt не было лишних пробелов и пустых строк. Это поможет избежать ошибок во время установки.

Последние штрихи

  • Автоматический импорт GPG ключей:
    При добавлении репозиториев стоит убедиться, что ключи GPG импортируются автоматически. Если этого не происходит, возможно, вам нужно будет импортировать ключи вручную. Обычно это делается командой sudo zypper refresh после добавления репозиториев.

Следуя этим шагам, вы сможете восстановить свою систему до состояния с прежними установленными пакетами, что сделает ваш процесс установки более плавным и управляемым.

Оцените материал
Добавить комментарий

Капча загружается...