Программы #Linux #Ubuntu #Программы #Установка #apt

apt, snap, flatpak или AppImage

Четыре способа установить программу в Linux: чем отличаются apt, snap, flatpak и AppImage, что выбрать под конкретную задачу и что делать, когда apt ругается на блокировку. Конструктор команд для установки, удаления, обновления и очистки.

7 минут 6

Одна и та же программа в Linux ставится четырьмя разными способами, и в инструкциях из интернета каждый раз попадается новый. Разберём, чем они отличаются на практике, что выбирать по умолчанию и почему иногда приходится ставить не из репозитория. Команды под свою задачу соберите в конструкторе — он же чинит самую частую поломку, когда apt отказывается работать.

Конструктор команд: установка и удаление программ

Выберите задачу и способ установки — получите точные команды. Подставьте название пакета, если знаете его.

Команды выполняются по порядку сверху вниз

Коротко: что выбрать

СпособОткуда берётсяПлюсыМинусы
aptрепозиторий дистрибутивалегче всего по месту и памяти, проверено сопровождающими, обновляется вместе с системойверсии консервативные, свежее релиза обычно не будет
snapмагазин Canonicalодна сборка на все дистрибутивы, обновляется сама, есть в Ubuntu из коробкизапускается медленнее, занимает больше места, магазин один и закрытый
flatpakFlathubсвежие версии, изоляция программ, каталог независимыйпервый пакет тянет за собой общие библиотеки на пару гигабайт
AppImageсайт разработчиканичего не устанавливается, работает где угодно, легко удалитьсам не обновляется, не попадает в меню, иногда требует библиотеку FUSE

Правило по умолчанию: сначала пробуйте apt. Если версия в репозитории устарела и это мешает — берите flatpak или snap. AppImage оставьте для редких программ, которые нужны раз в месяц.

Почему в репозитории старые версии

Это самое частое недоумение новичка: программа вышла в новой версии полгода назад, а apt ставит прошлогоднюю.

Так сделано намеренно. В LTS-выпуске Ubuntu пакеты замораживаются на момент релиза, и дальше в них приезжают только исправления безопасности. Пять лет подряд одна и та же версия ведёт себя предсказуемо: ничего не ломается после обновления, а дыры при этом закрываются. Для сервера это ровно то, что нужно.

Для программ, где важны новые функции — редактор видео, браузер, графический редактор — разумно сделать исключение и взять flatpak или snap. Смешивать способы можно и нормально: система от этого не пострадает.

Чем snap отличается от flatpak

Оба решают одну задачу: доставить программу со всеми зависимостями, не завися от версий библиотек в системе. Разница в деталях.

Snap сделан Canonical и в Ubuntu встроен изначально. Магазин один, и он закрытый — альтернативный источник поднять нельзя. Программы запускаются заметно медленнее при первом старте и монтируются как отдельные разделы (поэтому df -h показывает длинный список /snap/...). Зато обновления полностью автоматические.

Flatpak — независимый проект, основной каталог Flathub принимает сборки и от разработчиков, и от сообщества. Изоляция гибче: правами программы можно управлять — например, запретить доступ к домашней папке. Первая установка скачивает общую платформу размером в пару гигабайт, дальше эти библиотеки переиспользуются всеми flatpak-программами.

Практический вывод: в Ubuntu snap уже есть и для отдельных программ удобен, но если вы ставите десяток современных приложений — flatpak обычно приятнее.

Чего делать не нужно

Ставить программы командой curl ... | sudo bash. Такие однострочники предлагают на многих сайтах. Вы запускаете от имени root скрипт, который не читали, с сервера, который вам не подконтролен. Если другого способа нет — хотя бы сначала скачайте скрипт и просмотрите его: curl -fsSL адрес -o setup.sh && less setup.sh.

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

Собирать из исходников, когда есть пакет. Способ рабочий, но собранная программа не попадает под управление пакетного менеджера: её не обновит система и не удалит одной командой. Для домашнего компьютера это почти всегда лишняя головная боль.

Пользоваться dpkg -i для .deb-файлов. Команда не подтягивает зависимости и оставляет систему в подвешенном состоянии. Правильнее sudo apt install ./файл.deb — apt сам доставит недостающее.

Когда apt отказывается работать

Три ошибки, с которыми сталкиваются все, и что они означают:

«Не удалось получить блокировку /var/lib/dpkg/lock» — прямо сейчас установкой занят кто-то ещё: автоматические обновления, открытый Центр приложений или ваша же команда в соседнем окне терминала. Обычно достаточно подождать минуту. Сносить файл блокировки, пока процесс жив, нельзя — можно испортить базу пакетов.

«Неудовлетворённые зависимости» — чаще всего последствие установки пакета не из репозитория. Лечится командой sudo apt --fix-broken install.

«Не удалось загрузить … 404 Not Found» — список пакетов устарел или подключён репозиторий, которого больше нет. Помогает sudo apt update, а если нет — стоит посмотреть, что лежит в /etc/apt/sources.list.d/, и убрать оттуда мёртвые источники.

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

Что читать дальше

Частые вопросы

Чем apt отличается от apt-get?

Это две команды к одному и тому же менеджеру пакетов. apt появился позже, он рассчитан на человека: показывает прогресс, подсвечивает вывод и объединяет самые нужные действия. apt-get оставлен для скриптов, где важно, чтобы формат вывода не менялся между версиями. В обычной работе используйте apt.

Что лучше — snap или flatpak?

Для единичной программы разницы почти нет. Flatpak обычно предпочтительнее, если вы ставите много современных приложений: гибче управление правами и независимый каталог. Snap удобен тем, что в Ubuntu он уже настроен и ничего подключать не нужно.

Почему программа из snap долго запускается?

Snap-пакет монтируется как отдельная сжатая файловая система, и при первом запуске после перезагрузки система распаковывает нужные части. Дальше программа стартует быстрее за счёт кэша. На SSD задержка заметна слабо, на жёстком диске — ощутимо.

Можно ли удалить snap из Ubuntu полностью?

Технически да, но часть системных компонентов в Ubuntu поставляется именно в этом виде, и после удаления придётся искать им замену. Если snap мешает конкретной программой — проще поставить её другим способом, чем выпиливать механизм целиком.

Куда устанавливаются программы в Linux?

Исполняемые файлы — в /usr/bin, общие данные — в /usr/share, настройки системы — в /etc, ваши личные настройки — в ~/.config. Snap хранит пакеты в /snap, flatpak — в /var/lib/flatpak. Искать программу вручную обычно не требуется: which имя_команды покажет путь.

Как обновить одну программу, не трогая систему?

Для apt: sudo apt install --only-upgrade имя_пакета. Для snap: sudo snap refresh имя_пакета. Для flatpak: flatpak update имя_пакета. Правда, версия всё равно ограничена тем, что есть в репозитории — новее там не появится.

Что делать, если AppImage не запускается?

Проверьте два момента. Первый — файл должен быть исполняемым: chmod +x файл.AppImage. Второй — ошибка про libfuse.so.2 означает отсутствие библиотеки FUSE, она ставится командой sudo apt install libfuse2t64.

Безопасно ли ставить программы из Flathub?

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