Вот как я пакетно устанавливаю все свои старые приложения при переходе на другие дистрибутивы Linux

Вот как я пакетно устанавливаю все свои старые приложения при переходе на другие дистрибутивы Linux


Наступил ли «год рабочего стола Linux» или нет, смена дистрибутивов по-прежнему является проблемой. Если вы планируете перейти на другой дистрибутив Linux, вот как я пакетно устанавливаю все свои старые приложения, которые использовал на предыдущем.

Конечно, вы могли бы просто посмотреть на ваш лаунчер приложений и вручную составить список приложений, которые хотите установить, а затем искать и устанавливать их по одному на вашей новой системе. Я уже делал так раньше, и это утомительная работа. Также таким способом вы не увидите большинство инструментов командной строки. Массовая установка сэкономит вам массу времени, и к счастью, командные оболочки Linux были созданы именно для таких задач.

Не бойся терминала

Если вы переходите на другой дистрибутив Linux и хотите автоматизировать или полуавтоматизировать установку любимых приложений, вам нужно быть уверенным в работе с терминалом. Насколько мне известно, ни один из графических менеджеров программного обеспечения не предоставляет способа пакетной установки приложений.

Если вы еще этого не сделали, рассмотрите возможность изучения руководства по использованию терминала Linux для начинающих. Для этого конкретного руководства вам определенно стоит ознакомиться с установкой программного обеспечения через терминал Linux. Также может быть полезно ознакомиться с несколькими базовыми скриптами Bash для начинающих.

Перед переключением выполните эти команды

Прежде чем удалить мою текущую Linux-дистрибуцию, мне нужно составить список вручную установленных пакетов. Это будет включать все программное обеспечение, установленное на моей системе, которое не было установлено по умолчанию. Позже я установлю всё на новой системе пакетно, используя этот список.

Конечно, это не является безошибочным методом. Разные дистрибутивы — и даже разные версии одного и того же дистрибутива — могут иметь разное программное обеспечение, установленное по умолчанию. Возможно, несколько приложений, предустановленных в моем текущем дистрибутиве, не будут присутствовать в новом. Большинство же должно быть покрыто.

Если моя текущая дистрибуция — Debian, Ubuntu или одна из их производных, я могу использовать команду apt-mark, чтобы перечислить все пакеты, которые я установил сам из репозитория дистрибуции.

apt-mark showmanual

У меня также установлено несколько Flatpak, которые я хочу использовать, поэтому я выполнил эту команду Flatpak, которая показывает только колонку с названиями приложений из команды списка и передает результат в команду head, чтобы обрезать заголовок колонки:

flatpak list --app --columns=application | head -n-1 

Если у вас есть пакеты Snap, которые вы хотите установить пакетно, лучший способ, о котором я знаю, чтобы получить все их имена — это на самом деле перечислить каталоги в этом месте с помощью команды ls:

ls /snap/bin

Это не слишком изящно, и могут быть некоторые имена папок, которые вовсе не являются названиями программного обеспечения. Чтобы убедиться, вы можете сравнить это с выводом следующей команды:

snap list

Другие пакетные менеджеры, специфичные для дистрибутива

В системах Fedora и Arch вы можете использовать эти команды, чтобы увидеть все установленные пакеты:

dnf repoquery --userinstalled #Fedora pacman -Qe #Arch

Вы заметите, что в выводе указаны номера версий вместе с названиями пакетов. Если дистрибутив, на который вы переходите, может иметь те же пакеты с другими номерами версий, даже если он использует тот же менеджер пакетов.

Чтобы вывести список с удалёнными номерами версий с помощью команды awk в Fedora, вы можете выполнить следующее:

rpm --query --all --info | awk --field-separator ': ' '/^Name/ {print $2}'

Или в Arch Linux вы можете сделать то же самое с помощью более простой команды через конвейер:

pacman -Qe | awk '{print $1}'

Сохраните результат в безопасном месте

Теперь мне нужно либо скопировать и вставить, либо, что ещё лучше, перенаправить вывод этих команд непосредственно в отдельные файлы. Например, я создал файл с названием my-packages.txt с выводом на моём устройстве Ubuntu с помощью этой команды:

apt-mark showmanual > my-packages.txt

Перенаправление > сохраняет вывод в файл. Если вы используете Fedora или Arch, вы можете просто добавить это перенаправление «> my-packages.txt» точно так же.

Я также собираюсь сделать то же самое для своих приложений Flatpak:

flatpak list --app --columns=application > my-flatpaks.txt

Независимо от дистрибутива, вы можете быстро проверить, что перенаправление прошло успешно, с помощью команды cat:

cat my-packages.txt cat my-flatpaks.txt 

Я настоятельно рекомендую удалить из ваших списков все названия пакетов, в переносе которых вы не уверены. В первый раз, когда я пытался это сделать, я не стал ничего удалять и в итоге столкнулся с странными графическими проблемами.

Сохранив все списки приложений, пора перенести их на флешку или в облако. Возможно, самый эффективный способ — создать резервную копию вашего устройства Linux, а затем, восстанавливая файлы из этой копии, найти там свои списки пакетов.

Выполните эти команды и подождите

Теперь пришло время действительно выполнить пакетную установку. На моем новом компьютере с Ubuntu, куда я скопировал свой сокращенный список пакетов, я сначала попробовал запустить простую команду установки APT с переменной. У вас может получиться, если повезет.

sudo apt install $(cat my-packages.txt)

Однако у меня возникла серия ошибок, и установка каких-либо пакетов не удалась только потому, что APT не мог определить некоторые названия пакетов. Если вы столкнетесь с этим, то следующая команда, о которой мне известно, является лучшей для выполнения задачи:

for i in $(cat pkglist); do sudo apt-get install $i; done

Это цикл for в Bash, который проходит по всему списку и пытается установить каждый элемент. Если вы используете Fedora или Arch, просто введите dnf install или pacman -S вместо «apt install».

Это заняло у меня довольно много времени, потому что я не делал много обрезки. Также имейте в виду, что время от времени система будет спрашивать вас, действительно ли вы хотите установить программное обеспечение. Если вы хотите пропустить эти запросы и установить всё без вопросов, запустите эту изменённую версию того же цикла с флагом -y в команде APT, который автоматически ответит «да» на все запросы подтверждения.

for i in $(cat my-packages.txt); do sudo apt install $ -y; done

Как только основной скрипт для менеджера пакетов был готов, пришло время заняться моими Flatpak. Сначала мне нужно было установить поддержку Flatpak в Ubuntu, а затем включить репозиторий Flathub:

sudo apt install flatpak flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

Мне удалось установить мои Flatpak-приложения, используя более простую команду Bash:

flatpak install $(cat my-flatpaks.txt) 

Если бы это не сработало, я бы просто внедрил это в цикл for.

Следите за ошибками

Обязательно просмотрите весь вывод команд установки, которые вы выполняете. Возможно, вы увидите сообщения об ошибках для конкретных установленных пакетов. Если это так, попробуйте устанавливать их по одному, чтобы разобраться, в чем проблема.

Ожидайте возникновения нескольких проблем, если дистрибутив, на который вы переходите, использует другой менеджер пакетов или репозитории, отличающиеся от тех, с которых вы переходите. Названия пакетов часто немного различаются между репозиториями, и ваш менеджер пакетов может не суметь обработать эти запросы на установку. Кроме того, они могут поступать из специальных репозиториев, которые вам придется искать отдельно.


Один из распространённых типов программного обеспечения для Linux, о котором я здесь не упомянул, — это AppImages. Мне очень нравится использовать AppImages, потому что их можно переносить между устройствами, и при частой смене дистрибутивов их переносимость сэкономит вам некоторое время.

Комментарии

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *