Архив рубрики: Linux

Ваш путеводитель по одной из самых популярных и влиятельных операционных систем в мире. От базовых команд и установки дистрибутивов до глубокого изучения ядра и сетевых технологий — здесь вы найдете статьи и руководства на самые разные темы, связанные с Linux. Независимо от вашего уровня подготовки, здесь найдется что-то интересное и полезное.

Где искать программы для Ubuntu

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

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

Важно всегда быть в курсе новинок программного обеспечения, чтобы использовать самые новые, самые безопасные и самые лучшие программы для решения своих задач. Конечно, если вам нужна замена для уже известной программы вы можете просто найти ее в Google. Скорее всего, уже на первой странице попадется что-нибудь толковое. Но также можно составить список ресурсов, на которых можно следить за новинками в мире программного обеспечения Linux.

В этой статье мы рассмотрим как и где искать программы Ubuntu 16.04 и для Linux в целом.
Читать далее Где искать программы для Ubuntu

Лучшие почтовые клиенты Linux

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

Для Linux существует немало клиентов, но всё же их не так много, как на платформе Windows. Тем, кто перешёл с этой операционной системы может не хватать Outlook или The Bat! Скажем прямо, прямых аналогов этих программ вы не найдёте. И всё же на Linux есть хорошие клиенты, которые обладают всеми необходимыми функциями для полноценной работы с электронными письмами.
Читать далее Лучшие почтовые клиенты Linux

Настройка Apparmor в Ubuntu

AppArmor - это система управления доступом к файлам на основе имен (Mandatory Access Control). Недавно мы рассматривали еще одну реализацию такой системы - SELinux. Apparmor работает подобным способом, на основе модуля ядра Linux Security (LSM). Но он сильно отличается от SELinux и в первую очередь своей простотой. Здесь нет никаких ролей и маркеров. Есть только программы и список файлов, к которым они могут иметь доступ. Если SELinux используется по умолчанию в Red Hat, то AppArmor, установлен и активирован по умолчанию в Ubuntu.

В этой статье мы рассмотрим как выполняется настройка Apparmor в Ubuntu, как контролировать доступ приложений к файлам, а также как создавать свои файлы профилей для новых приложений.
Читать далее Настройка Apparmor в Ubuntu

ТОП 5 мифов о Linux

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

Без сомнения, Linux является неотъемлемой частью технического прогресса. Но сфера его применения не ограничивается коммерческим и промышленным использованием. Мы поговорим о Linux в качестве настольной ОС. О той операционной системе, которую принято использовать ежедневно для разного рода задач: посещения интернет-страниц, работы с документами, игр и проигрывания медиафайлов.

Читать далее ТОП 5 мифов о Linux

Сравнение Snap vs Flatpak

Snap и Flatpak - системы развертывания программного обеспечения и управления пакетами для Linux, ставшие очень популярными в последнее время. На первый взгляд обе системы довольно похожи. Обе имеют определенный уровень изоляции, содержат все зависимости приложения, после упаковки приложение может быть установлено в любой дистрибутив, поддерживающий данный формат пакетов, И для Snap и для Flatpak было создано уже более 1000 приложений. Но чем же они отличаются? И что выбрать?

В этой статье я хочу провести подробное сравнение Snap vs Flatpak. Я расскажу о некоторых технических деталях их работы, назначении, преимуществах и недостатках. Но я хочу больше сосредоточится на использовании этих пакетов с точки зрения пользовтеля и пропущу все, что связано с разработкой. Я не связан с разработчиками Snap или Flatpak, просто провел небольшое исследование в Интернете, изучил, как Snap и Flatpak работают в моей системе, и вот результат.

Для чего был создан Snap?

Прежде чем мы начнем сравнивать форматы, давайте посмотрим, зачем они были созданы. Canonical на протяжении многих лет пыталась улучшить доставку свежего программного обеспечения для пользователей Ubuntu. Основная проблема заключалась в том, новые версии Ubuntu выходят фиксированными релизами два раза в год, и пользователям приходится ждать полгода, чтобы получить новые версии программ, или даже два года если они хотят использовать только LTS-релизы. Некоторые приложения, например, браузеры, развиваются очень быстро, и быстрая доставка новых версий таких приложений конечному пользователю просто необходима. Даже шесть месяцев - слишком большой срок.

Сначала, Canonical запускает PPA, затем экспериментирует с точечными выпусками, такими как 22.04.1, 22.04.2, в которые входят новые версии браузера и графических драйверов для старых LTS-дистрибутивов, затем запускает Software Center поверх PPA. Все эти попытки имеют свои недостатки. PPA считается небезопасным, потому что каждый может создать PPA и обновлять пакеты без проверки Canonical. Кроме того, разработчикм нужно создать пакет для каждого выпуска Ubuntu, который они хотят поддерживать что требует много работы и затрат времени. Точечные релизы также требуют много времени от мейнтейнеров. Software Center решает некоторые проблемы, потому что там пакеты проходили проверку Canonical перед добавлением. Однако для каждого выпуска Ubuntu все равно необходимо заново отрправлять приложение на проверку.

Приблизительно в 2013 году Canonical начала разрабатывать Ubuntu Touch и Ubuntu для IoT-устройств. Эта область имела свои особенности и требования к программному обеспечению, такие как регулярные обновления и высокий уровень безопасности для уменьшения количества уязвимых IoT-устройств в интернете, а также упрощение разработки и поддержки приложений для разных версий Ubuntu Touch. Поэтому были созданы пакеты Click, а затем и Snap.

Пакеты Snap решили большинство проблем, рассмотренных выше. Перед добавлением в магазин они проверяются Canonical или сообществом, чтобы убедиться в их безопасности. Snap имеет регулярные автоматические обновления, так что вы не сможете забыть обновить его. А также, созданный один раз пакет может работать во всех дистрибутивах с установленным snapd. Немного позже Canonical добавили поддержку Snap в Ubuntu Desktop. Это случилось в Ubuntu 16.04.

Для чего был создан Flatpak?

Не только Canonical предпринимала попытки придумать лучший способ поставки приложений и сделать их более безопасными. Разработчик GNOME Александр Ларссон экспериментировал с созданием универсальных пакетов приложений с помощью API контейнеризации ядра и пространств имен ядра с 2007 года. У разработчиков приложений для Linux были те же проблемы, что и у мейнтейнеров Ubuntu. Им нужно было не только разработать и выпустить приложение, но и протестировать его работоспособность хотя бы на самых популярных дистрибутивах. Многие дистрибутивы имели разные версии библиотек или даже разные системы пакетов, такие как rpm и deb.

Примерно в 2015 году Александр Ларссон представил xdg-app для решения этих проблем. Этот инструмент предоставлял разработчикам приложений среды выполнения, называемые Runtime, которые использовались приложением для взаимодействия с окружением рабочего стола и являлись промежуточным звеном между приложением и операционной системой. Таким образом, приложение можно было установить на каждый дистрибутив, в котором есть xdg-app и необходимая среда выполнения. Преимущество такого подхода заключалось в том, что можно было иметь несколько сред выполнения с разными версиями библиотек. Кроме того, каждое приложение запускалось в песочнице для повышения безопасности. Идея заключалась в том, чтобы предотвратить доступ приложения к пользовательским файлам, если он не нужен.

Через несколько лет xdg-app эволюционировал в Flatpak, но в нем по-прежнему используется концепция сред выполнения и песочницы. Для упрощения установки и поиска приложений новыми пользователями был создан репозиторий FlatHub. Однако технология полностью открыта, и каждый может создать свой собственный репозиторий.

Как работает Snap?

Canonical стремится сделать Ubuntu максимально безопасной, поэтому у них есть только один Snap Store, где все пакеты проверяются перед добавлением. Реализация snap-репозитория проприетарная, поэтому никто не может создавать альтернативные хранилища. Все, что вам нужно знать, это то, что вы как пользователь можете искать пакеты в этом хранилище, устанавливать последнюю доступную версию, выбирать канал (стабильный/последний) и проверять наличие обновлений.

Приложения Snap упаковываются в самодостаточный файл-образ с помощью SquashFS. Этот файл имеет расширение .snap. Все файлы .snap, установленные в вашей системе, находятся в папке /var/lib/snapd/snaps/. Существует два типа пакетов: приложения и библиотеки snap core. Приложениям необходим интерфейс для взаимодействия с операционной системой и snapd. Такой интерфейс предоставляют библиотеки snap core. В одной системе может быть установлено несколько версий core, чтобы поддерживать пакеты, разработанные для разных версий Ubuntu.

Snap пакеты обновляются автоматически, и snapd проверяет наличие обновлений четыре раза в день. Его нельзя полностью отключить, но обновления можно отложить или же можно настроить периодичность обновлений. Когда пакет snap обновляется, он также сохраняет предыдущие версии в вашей файловой системе. По умолчанию хранятся две предыдущие версии. Эти версии называются ревизиями. И вы можете использовать эти сохраненные версии позже, чтобы вернуть предыдущую версию пакета, если что-то пойдет не так. Кроме того, 2017 года snapd поддерживает дельта-обновления, когда загружается не полный пакет, а только измененные данные.

Каждый пакет snapd должен быть смонтирован в файловую систему перед использованием. Поэтому обычно в выводе lsblk вы видите много точек монтирования snap:

lsblk

По умолчанию в каталоге /snap есть папка для каждого пакета и каждой ревизии. Например, здесь transmission - это имя пакета, а 67 - ревизия:

ls /snap/transmission/

Но Firefox обновляется чаще, поэтому в моей системе уже есть не только последняя версия, но и две предыдущие:

Пакет монтируется в папку ревизии, а затем туда же монтируются все зависимости пакета, интерфейсы и так далее. Но на хост-системе вы увидите только содержимое файла snap:

ls /snap/transmission/67

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

snap run --shell transmission

Путь к каталогу с данными snap пакета помещается в переменную окружения $SNAP. Например:

echo $SNAP

ls /snap/transmission/67

Сюда могут быть смонтированы каталоги хоста или каталоги из других snap-пакетов. Это монтирование настраивается с помощью слотов и интерфейсов при создании snap пакета.

Также здесь вы можете попробовать получить доступ к некоторым папкам в вашей файловой системе. Например, к документам в домашнем каталоге или к конфигам из /etc/. И, скорее всего, вы получите ошибку permission denied:

ls /etc/

Приложения Snap могут находиться в одном из двух режимов ограничения: strict и classic. В режиме strict используются профили AppArrmor для ограничения доступа ко всем файлам, к которым приложение не должно иметь доступа. А также исплоьзуются профили seccmap для ограничения доступа к системным вызовам ядра. В классическом режиме пакеты могут получить доступ ко всем файлам в файловой системе.

Настройка разрешений Snap осуществляется с помощью слотов и интерфейсов. Это просто абстракция, позволяющая указать, какие функции будут разрешены для использования. Их можно посмотреть с помощью следующей команды:

snap connections transmission

Дополнительно настроить разрешения Snap можно в приложении System Settings на вкладке Apps:

Там перечислены все приложения, но только для Snap вы увидите подробную настройку разрешений. Приложениям нужно где-то хранить свои данные. Поэтому Snap предоставляет две папки для данных: /var/snap/ и ~/snap в домашней директории пользователя. Ссылки на эти каталоги размещаются в следующих переменных окружения:

  • SNAP_DATA - общиесистемные данные пакета snap для конкретной ревизии
  • SNAP_USER_DATA - пользовательские данные пакета snap для конкретной ревизии
  • SNAP_COMMON. общесистемные данные пакета, общие для всех ревизий
  • SNAP_USER_COMMON - пользовательские данные пакета общие для всех ревизий

echo $SNAP_DATA

При удалении snap пакета все эти данные сохраняются в виде снапшота в /var/lib/snapd/snapshots/.

Для запуска приложения из Snap можно использовать следующую команду:

snap run transmission

Но вы также можете запустить его, набрав имя приложения, как и для обычных приложений. Это работает, потому что snapd создает символические ссылки для всех доступных исполняемых файлов snap в /snap/bin на /usr/bin/snap.

ls -l /snap/bin/transmission

Когда вы запускаете любую ссылку, команда snap смотрит на первый аргумент, чтобы определить имя приложения, а затем просто запускает запрошенный snap. Поэтому вы не увидите разницы. Также иконки и файлы ярлыков экспортируются в /var/lib/snapd/desktop/icons/ и /var/lib/snapd/desktop/applications/. Таким образом, вы можете запускать эти приложения и из главного меню.

Как работает Flatpak?

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

Технически каждый репозиторий Flatpak очень похож на git-репозиторий, но для бинарных файлов. Технология, которая используется для организации работы репозитория называется ostree. Каждое приложение в репозитории - это ветка, а каждая версия - это коммит. Таким образом, вы можете свободно просматривать информацию обо всех предыдущих версиях приложения и устанавливать любую из них. Например, вот так можно посмотреть журнал истории версий для Transmission:

flatpak remote-info --log flathub com.transmissionbt.Transmission

Также вы можете обновить или понизить версию приложения до определенного коммита:

flatpak update --commit=1d4ddca72967f38c0339ab80dda38eb173e048800bfd11d635d21ec24781d477 com.transmissionbt.Transmission

В графическом интерфейсе можно управлять версиями установленных Flatpak приложений с помощью Warehouse. При обновлении пакетов Flatpak загружаются только измененные данные, а не весь пакет. После выполнения обновления в командной строке вы увидите два размера в колонке Загрузка, первый - дельта - это фактически загруженный размер, а второй - полный размер загрузки:

flatpak update

Приложения Flatpak размещаются в /var/lib/flatpak/ в файловой системе. Поскольку приложения могут работать в каждом дистрибутиве, где установлен Flatpak, необходимы универсальные библиотеки, которые будут работать как промежуточное звено между операционной системой и приложением. Как я уже говорил, эти библиотеки называются Runtime. Эта концепция была представлена на GNOME Developer Hackfest в 2013 году. В отличие от Snap, существуют разные Runtime с разным набором инструментов, например, GNOME Platform, Freedesktop, KDE platform и так далее. Приложения и библиотеки разделены по разным папкам: /var/lib/flatpak/app для приложений и /var/lib/flatpak/runtime для библиотек:

ls /var/lib/flatpak/app

Само приложение Flatpak - это просто каталог в файловой системе. Например, файлы из пакета Transmission помещаются в /var/lib/flatpak/app/com.transmissionbt.Transmission/current/active/. Для того чтобы приложения можно было запускать из главного меню, их ярлыки и иконки экспортируются в папку /var/lib/flatpak/exports/share/. Кстати, в вашей файловой системе хранится только текущая версия пакета:

ls /var/lib/flatpak/app/com.transmissionbt.Transmission/current/active/

Если вы хотите посмотреть, к чему приложение может получить доступ, вам нужно войти в оболочку приложения. Например, используйте эту команду, чтобы запустить оболочку для GNOME Clocks:

flatpak run --command=sh org.gnome.clocks

Здесь вы можете увидеть, как выглядит внутреннее окружение приложения. Приложение находится в песочнице, но для меня это больше похоже на контейнер. Здесь есть своя корневая файловая система, а файлы приложения монтируются в папку /app:

По умолчанию это не корневая файловая система Linux, а специальная файловая система со всеми необходимыми библиотеками, сокетами, устройствами и так далее. Например, в каталоге /etc/ много пустых папок, и каталог /home тоже пуст:

Важно отметить, что в каталоге /proc, который содержит всю информацию о процессах, есть информация только о процессах, запущенных в песочнице:

Я выбрал Clocks, потому что он не требует специального доступа к файлам. Конечно, если приложению нужен доступ к корневой файловой системе или пользовательским файлам, оно может запросить это разрешение, и реальная файловая система будет смонтирована в песочницу. Это широко используется для преодоления проблем с разрешениями, но даже в этом случае приложение в песочнице не может монтировать некоторые каталоги из корневой файловой системы, например: /root, и /proc. Некоторые другие каталоги могут быть смонтированы, но в /run/host, а не в root. И если приложение захочет смонтировать домашний каталог пользователя, оно все равно не сможет увидеть в файловой системе данные других приложений Flatpak.

Для повышения безопасности и обеспечения большего контроля над доступом приложений к ресурсам разработчики Flatpak создали технологию Portals, которая позволяет взаимодействовать с окружением рабочего стола и файлами без прямого доступа к файловой системе. Например, Portals позволяет делать скриншоты, записывать экран, выбирать файл и т.д. Теперь Portals принадлежит Freedesktop и может использоваться всеми приложениями. Поскольку разработчики GNOME сделали внутренний API GNOME приватным, Portals - единственный способ получить доступ к определённым функциям окружения рабочего стола.

Технически, Portal - это DBus-адрес с некоторым API, который приложение может использовать для выполнения действий или сбора данных без прямого доступа к сокетам или файловой системе. При этом для доступа к каждому порталу приложение должно запросить разрешение у пользователя. В командной строке песочницы пакета можно выполнить следующую команду, чтобы увидеть доступные порталы и другие адреса DBus:

dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListNames

Проверить разрешения для пакета Flatpak можно с помощью команды info с опцией --show-permissions:

flatpak info --show-permissions io.missioncenter.MissionCenter

Кроме того, можно проверить и даже изменить разрешения приложений Flatpak с помощью приложения Flatseal. Оно показывает все доступные сокеты, ресурсы, папки, интерфейсы DBus, порталы и так далее в графическом интерфейсе:

Если приложению Flatpak нужен доступ, который не предоставляется порталами и не может быть предоставлен монтированием файловых систем, оно может использовать flatpak-spawn для запуска произвольного процесса в хостовой системе. Ему требуется разрешение на обращение к DBus по адресу org.freedesktop.Flatpak. Во время установки Flatpak показывает разрешения, которые необходимы приложению, так что вы будете знать, к чему приложение может получить доступ ещё до установки:

Данные для приложений Flatpak находятся в ~/.var/app/. Глобальных директорий нет, и все данные, связанные с пользователем, хранятся в его домашней папке. Например, для Transmission:

Ещё вы можете посмотреть пути к папкам с данными приложения, которые хранятся в переменных окружения:

  • XDG_STATE_HOME - состояние приложения (например, /var/lib)
  • XDG_CACHE_HOME - кэш приложения
  • XDG_CONFIG_HOME. файлы конфигурации приложения
  • XDG_DATA_HOME - ресурсы приложения (например, /usr/share)

При удалении приложения по умолчанию все эти данные остаются в вашей файловой системе. Для запуска приложений используется flatpak с опцией run:

Snap vs Flatpak. В чем разница?

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

1. Открытый исходный код

И Snap, и Flatpak - системы управления пакетов с открытым исходным кодом. И оба разрабатываются и поддерживаются огромным сообществом пользователей по всему миру. Однако реализация репозитория Snap Store на стороне сервера является проприетарной. API, с помощью которого snapd получает пакеты, хорошо документирован, и технически возможно создать альтернативную реализацию. Более того, некоторое время назад были попытки, например Kebe, но на момент написания статьи они выглядят заброшенными. Так что работающих альтернатив с открытым исходным кодом нет. Это может иметь некоторые недостатки, например, дистрибутивы и организации не могут создавать свои собственные репозитории, чтобы не зависеть от Canonical. А если Canonical решит прекратить поддержку Snap, сообщество не сможет форкнуть этот репозиторий и запустить альтернативу.

Репозиторий Flatpak основан на инструменте с открытым исходным кодом ostree, и пользователи могут создавать столько репозиториев, сколько захотят. Однако существует один, наиболее популярный репозиторий FlatHub, который обладает большинством преимуществ, присущих Snap Store, таких как проверка пакетов перед добавлением для защиты пользователей и простой пользовательский интерфейс, позволяющий искать и устанавливать пакеты в веб-браузере.

2. Безопасность

В обоих форматах существует изоляция приложений для защиты данных пользователя и системы. Оба имеют механизмы для преодоления этой изоляции. Snap использует AppArrmor и Seccomp. AppArmor может гарантировать, что приложение не будет иметь доступа к каталогам, которые ему не нужны. Но настольным приложениям очень часто требуется больше разрешений, поэтому они используют режим classic, когда приложения вообще не изолированы. Такие пакеты утверждаются вручную перед публикацией, чтобы снизить риски безопасности. В качестве преимущества snap-пакеты могут иметь доступ к /proc и другим виртуальным файловым системам даже в режиме strict, что позволяет создавать snap-пакеты для многих инструментов командной строки, например htop.

Flatpak имеет изоляцию, которая больше похожа на контейнеризацию, реализованную с помощью bwrap. Каждое приложение имеет свою собственную корневую файловую систему. Все сокеты, каталоги и интерфейсы, к которым оно может получить доступ, должны быть явно предоставлены в этой файловой системе. Все, что не разрешено, ограничивается. Предполагается, что приложения будут использовать порталы для доступа к различным системным функциям, поэтому существует flatpak-spawn, кторый может выполнять код в хост-системе. Именно поэтому Mission.Center может видеть все системные процессы. Snap-приложения могут использовать порталы, но flatpak-spawn доступен только для Flatpak приложений.

Как видите, по уровню безопасности оба варианта не идеальны. Snap позволяет разработчикам настроить более гибкие ограничения для файлов и папок. Но порталы - это будущее для Flatpak и Snap. Скорее всего, в будущем приложения Linux будут иметь систему настройки разрешений как у приложений на Android.

3. Настройка разрешений

Разработчики могут настраивать, к каким файлам и системным функциям приложение может получить доступ как для Snap, так и для Flatpak. Однако, как пользователь, я хочу иметь возможность изменять эти настройки и предоставлять дополнительные права доступа к файловой системе или сокетам. Для пакетов Snap вы можете управлять только предопределенными настройками, включая/выключая переключатели или выбирая значения в списке в настройках системы. Возможно, в командной строке доступно больше настроек, но разобраться, что нужно изменить, чтобы обеспечить доступ к той или иной функции, не так просто.

Flatpak позволяет настраивать практически любые разрешения с помощью приложения Flatseal. Вы можете разрешить или запретить выполнение кода на хосте, предоставить доступ к необходимым сокетам, смонтировать дополнительные папки хоста в песочницу, разрешить доступ к системным устройствам, добавить переменные окружения, настроить доступные адреса DBus и т. д.

3. Обновления

Snap был разработан для устройств IoT, которые должны работать большую часть времени без участия человека. Во многих программах постоянно обнаруживаются и исправляются уязвимости. Поэтому такие IoT-устройства, как роутеры, камеры, видео-регистраторы и т. д., должны получать обновления регулярно. Snap обновляет пакеты автоматически и проверяет наличие обновлений четыре раза в день. Это отлично подходит для IoT, но не очень удобно для настольных компьютеров. Приложение будет обновлено, даже если вы его используете. Например, вы используете Firefox, а потом видите сообщение о том, что нужно перезапустить браузер, потому что он был обновлен. Также разработчики могут вернуть версию пакета к предыдущей. Однако вы, как пользователь, можете установить только последнюю версию или использовать предыдущие версии, которые хранятся в вашей системе.

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

4. Используемое дисковое пространство

Файлы обоих форматов пакетов занимают много места на диске. Пакеты содержат все необходимые библиотеки и ресурсы, поэтому они не могут быть маленькими. Кроме того, snap сохраняет резервные копии предыдущих версий пакетов после обновления. По умолчанию у вас есть две предыдущие версии, но вы можете настроить хранение только одной резервной версии. Это означает, что если размер пакета составляет 1,5 Гб, snapd будет потреблять не менее 3 Гб для этого пакета. И я не рекомендую удалять резервную копию пакета, потому что если что-то пойдет не так, вы не сможете получить предыдущую версию из хранилища snapd. Преимущество Snap-пакетов в том, что они сжаты, поэтому занимают меньше места, чем обычные приложения.

Flatpak сохраняет только текущую версию пакета. Однако этот пакет представляет собой просто папку с файлами, без какого-либо сжатия. Я провел тест на двух виртуальных машинах с Ubuntu, установил 30 приложений с помощью Snap, а затем с помощью Flatpak.

Используемое пространство на корневом разделе после установки всех приложений с помощью Snap увеличилось на 8 гигабайт. Однако эту цифру следует умножить на три, поскольку по мере выхода новых версий занимаемое пространство будет расти. Три - потому что одна текущая версия и две резервные. Так что реальное потребление диска будет около 24 Гбайт. Затем я установил те же 30 приложений с помощью Flatpak, и используемое пространство увеличилось на 13 ГБ. Конечно, приложения также будут хранить кэш и пользовательские данные, но маловероятно, что в будущем эти приложения будут занимать гораздо больше места. Таким образом, я могу сказать, что Flatpak использует меньше дискового пространства, чем Snap в долгосрочной преспективе.

5. Популярность

Недавно на сайте статистики snap сообщалось, что в магазине Snap насчитывается около 8000 пакетов. Это очень много. Остальная статистика, такая как количество установок и активных пользователей, доступна только разработчикам приложений. Ubuntu использует Snap по умолчанию, поэтому у многих пользователей некоторые приложения установлены из Snap Store по умолчанию. Однако многие приложения - это браузеры, неофициальные клиенты для чего-либо или системные компоненты для Ubuntu Core. Snap Store не содержит некоторых приложений из GNOME Circle. Например, нет Console, Text Pieces и Polari.

Статистика FlatHub открыта и доступна по адресу analyzen.com. На момент написания статьи там насчитывается 2500 приложений и более 3 миллионов загрузок в день. Вы можете найти множество различных приложений, которые хорошо классифицированы. Там есть все приложения из GNOME Circle и многое другое.

Сложно определить, какой репозиторий программ более популярен, так как я не могу найти открытой статистики для Snap Store, но для меня FlatHub выглядит более живым. Хотя оба довольно популярны. Все наиболее используемые приложения можно найти как в Snap Store, так и в FlatHub.

6. Запуск приложений

Приложения в пакетах Snap удобнее запускать из командной строки, потому что для запуска достаточно просто набрать название приложения и нажать Enter. Нет необходимости постоянно писать snap run и т. д.

Имена пакетов Flatpak очень длинные потому, что они содержат не только имя пакета, но также и имя автора и префикс домена. Поэтому трюк с симлинками, как в пакетах Snap, не сработает. Но это не так уж и плохо. Если вам нужно запустить приложение Flatpak из командной строки, вы можете воспользоваться автозаполнением Bash или создать псевдоним. Приложения Flatpak предназначены для запуска из главного меню, а не для CLI.

Скорость запуска на момент написания статьи примерно одинаковая. После перезагрузки приложения Flatpak запускаются немного дольше, как и приложения Snap. Однако в моих тестах оба формата работали довольно быстро.

7. Установка без интернета

Вы можете загрузить любой пакет Snap из Snap Store или с веб-сайта, а затем установить его с опцией --dangerous локально, даже если у вас нет доступа к интернету. Это работает примерно так же, как и с deb-пакетами, но вам не нужно разрешать зависимости, потому что все необходимое уже упаковано в самодостаточный образ.

Flatpak позволяет разработчикам создавать однофайловые образы с расширением *.flatpak тоже. Однако обычно никто этого не делает, потому что пакеты Flatpak зависят от репозитория для получения обновлений. Скачать пакет с Flathub нельзя, но при необходимости можно создать USB с необходимыми пакетами и их метаданными для автономной установки.

Выводы

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

Параметр Snap Flatpak
Полностью открытый исходный код Нет (Snap Store проприетарный) Да (Ostree Open-Source)
Пользователи могут создавать свои репозитории Нет Да
Имеет как минимум один популярный репозиторий Да (Snap Store) Да (Flathub)
Поддерживает изоляцию приложений Да (AppArrmor, Seccomp) Да (bwrap)
Позволяет полностью отключить изоляцию Да (classic confinement) Нет (но можно смонтировать крневую файловую систему в песочницу)
Позволяет выполнять процессы вне песочницы Нет Да (flatpak-spawn)
Позволяет монтировать /proc в песочницу Да Нет
Можно отключить автоматические обновления Нет Да (Нет автоматических обновлений)
Поддерживает загрузку пакетов для установки без интернета Да (одним файлом) Да (созданеие установочного USB)
Позволяет скачать предыдущую версию пакета Нет (доступна только последняя) Да (доступны все опубликованные ранее версии)
Сохраняет предыдущие версии пакета в системе Да (как минимум одну) Нет
Простой запуск приложений из командной строки Да Нет (длинные имена)
Использует сжатие для файлов приложения Да (SquashFS, xz) Нет
Пользователи могут настроить разрешения для приложения Частично (в System Settings) Да (практически всё можно настроить используя Flatseal)
Содержит все приложения из Gnome Circle Нет Да
Занимаемое дисковове пространство при обновлении пакета обычно значительно увеичиться Да (резервные копии) Нет
Позволяет запускать приложения во всех дистрибутивах, которые поддерживают эту технологию Да Да
Имеет униваерсальные библиотеки для взаимодействия приложения с системой Да (core) Да (Runtimes)
Автоматически обновляет приложения даже если они запущены Да Нет
Загружает только измененные данные во время обновления вместо всего пакета Да Да

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

Лучшие программы для Ubuntu

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

Поиск необходимого программного обеспечения и способа его установки в свою операционную систему - это очень непростая задача для начинающих пользователей. Я собрал лучшие программы для Ubuntu в один список, здесь каждый найдет приложение по вкусу. Некоторые из них, возможно, и не пригодятся прямо сейчас, однако если вам понадобится, например, отредактировать видео, то лучшие приложения Ubuntu уже собраны в одной статье. Она может помочь и владельцам других дистрибутивов. Итак, приступим:
Читать далее Лучшие программы для Ubuntu

Управление службами Linux

В операционной системе Linux, так же как и в Windows, кроме обычных программ, с которыми может взаимодействовать пользователь есть еще один вид программ. Это работающие в фоне службы. Важность служб тяжело переоценить, они следят за состоянием системы, обеспечивают автоматическое подключение внешних устройств и сети, позволяют процессам взаимодействовать с оборудованием (dbus), а также в виде служб реализованы различные веб-серверы и серверы баз данных.

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

Читать далее Управление службами Linux

Настройка Wifi в Ubuntu

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

Но тут кроется одна проблема: не всегда и не на всех устройствах Wifi поддерживается из коробки. Да, есть такие ноутбуки Linux, в которых настройка Wifi в Ubuntu не нужна: после установки всё работает, вы можете подключаться к сетям или даже создавать точки доступа. Но это не так уж часто. В этой статье будет рассмотрена настройка Wifi в Ubuntu. Мы возьмём самую последнюю версию дистрибутива Ubuntu 16.04 с ядром Linux 4.4. Тут самую важную роль играет ядро, поскольку именно оно отвечает за поддержку оборудования. Я буду предполагать, что у вас не работает Wifi Ubuntu из коробки, если же вас интересует, как подключиться к сети, листайте ниже.
Читать далее Настройка Wifi в Ubuntu

Установка обновлений Ubuntu

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

В этой статье будет как установить обновления Ubuntu, мы поговорим о том, как обновить программы Ubuntu через терминал, так и через графический интерфейс, с помощью стандартной утилиты - менеджер обновлений.
Читать далее Установка обновлений Ubuntu

Группы пользователей Linux

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

Поэтому и были придуманы группы пользователей. Пользователи могут объединяться в группы, чтобы уже группам выдавать нужные полномочия на доступ к тем или иным файлам, а соответственно и действиям. В этой статье мы рассмотрим группы пользователей в Linux, рассмотрим зачем они нужны, как добавить пользователя в группу и управлять группами.
Читать далее Группы пользователей Linux