Мир программных пакетов в Linux и других системах на базе Unix – это настоящая саванна: каждая система имеет свой собственный подход к управлению пакетами, превращая в ад жизнь тех, кто вынужден работать с несколькими платформами.
Существуют pacman
для Arch Linux и его производных, Alpine Package Keeper (он же APK
), Advanced Package Tool (он же APT
) для Debian Linux и его производных, Aptitude
, фронт-энд для APT, Snap
для Ubuntu, Yellowdog Updater Modified (он же Yum
) для систем на базе RPM, Slackpkg
для Slackware, Emerge для Gentoo, команда guix
для Guix и nix-env
для NixOS, не говоря уже о Homebrew
для macOS и Scoop
для Windows. Каждый из них имеет свой собственный способ управления, заставляя вас изучать разные способы выполнения одних и тех же действий.
Короче говоря, это действительно беспорядок… или нет?
Синтаксис
Разработчик по имени sigoden создал универсальный инструмент под названием Universal Package-management Tool, или сокращенно UPT, способный собрать все воедино в этих джунглях. Установив его, вам больше не придется изучать синтаксис другого менеджера пакетов.
UPT написан на Rust, поэтому вам нужно установить Rust и Cargo на Ubuntu или любой другой дистрибутив Linux, который вы используете.
Я рекомендую установить пакет rustup
для вашей системы – системы Linux обычно имеют пакет rustup
, доступный в их репозиториях.
Все следующие команды должны выполняться пользователем root, если не указано иное, поэтому не забудьте выполнить команду sudo -i
.
On Debian Linux and derivatives: apt install gcc make rustup On Arch Linux and derivatives: packman -S gcc make rustup On Alpine: apk add gcc make rustup rustup-init source ~/.cargo/env On RPM-based systems: yum install gcc make rustup On macOS with Homebrew (not Linux, obviously) brew install clang make rustup
Я использую clang
вместо gcc
, и у меня это работает так же хорошо, вам просто нужно будет установить переменные окружения CC
и CPP
, если вы тоже хотите их использовать, на clang
и clang++ -E
соответственно.
После установки rustup
не забудьте добавить $HOME/.cargo/bin
в PATH
. Если вы используете Bash в качестве оболочки (обычно это оболочка по умолчанию), вам нужно добавить следующую строку в ~/.bash_profile
:
export PATH $HOME/.cargo/bin:$PATH
Если ваша оболочка – Zsh, вы можете добавить ту же строку в ~/.zshrc
вместо этого. Не забудьте перезагрузить оболочку.
Теперь можно установить командный инструмент upt
:
rustup default stable cargo install upt
Если вы хотите использовать пользователя-администратора (например, в группе wheel или sudo), вам следует выполнить те же команды, которые приведены выше, как пользователь-администратор.
Все готово! Теперь у вас есть единый инструмент управления пакетами, который вы можете использовать одинаково во всех своих системах.
Использование
Обновление менеджера пакетов:
sudo upt update
Установка пакета:
sudo upt install package_name
Обновление пакета:
sudo upt upgrade package_name
Обновление всех установленных пакетов:
sudo upt upgrade
Удаление пакета:
sudo upt remove package_name
Поиск пакета (vtk
, например):
sudo upt search vtk
Если один и тот же пакет доступен в apt (deb), Snap, Flatpak и т. д., какой из них UPT должен выбрать при установке? Это определяется порядком, указанным в этой таблице.
Чтобы предпочесть один пакет snap другому, можно установить переменную окружения UPT_TOOL
. В нижней части файла bashrc добавьте строку:
export UPT_TOOL='snap'
Сейчас, если вы запустите (не используйте sudo при выполнении следующей команды):
sudo upt install vlc
Он запросит пароль. Укажите его, и пакет snap будет установлен.
Заключение
Как видите, UPT требует первоначальных усилий для установки, что не так уж и много для опытных пользователей Linux.
К сожалению, хотя менеджер пакетов одинаков для разных систем, он все еще является внешним интерфейсом для стандартного менеджера пакетов каждой системы. Это означает, что имена пакетов по-прежнему используются в каждом дистрибутиве, и вы не можете использовать одно имя пакета для разных систем.
Например, если вы хотите установить пакет разработки Python, вам понадобятся разные пакеты для разных систем:
On Alpine, Debian Linux, and derivatives upt install python3-dev On RPM-based systems: upt install python3-devel On Arch Linux upt install python
Для пользователей Ubuntu есть похожий инструмент под названием Nala, который может вас заинтересовать.
Комментарии (0)