НовостиОбзорыСобытияIT@WorkРеклама
Open Source:

Блог

Вкушаем прелести Flatpak

Недавно вышла версия 3.2 дистрибутива Endless OS. Дистрибутив примечателен тем, что в качестве пакетного менеджера в дистрибутиве используется система самодостаточных пакетов Flatpak, в то время как базовая система установлена в режиме «только чтение». Увы, такая организация привела к тому, что выбор ПО для дистрибутива крайне скудный.

Но. Flatpak же - самодостаточные пакеты, значит их можно установить в любом дистрибутиве. А вот это уже интересно.[spoiler] Берём Ubuntu устанавливаем flatpak штатными средствами и добавляем репозитарий eos:

$ flatpak remote-add eos-apps https://ostree.endlessm.com/ostree/eos-apps --no-gpg-verify


Обратите внимание на отсутствующее sudo — Flatpak сам спросит пароль пользователя для добавления удалённого репозитария. Опция --no-gpg-verify отключает проверку цифровых подписей — я не искал эти подписи в дистрибутиве eos, на боевой системе так делать не надо!

Смотрим содержимое репозитария и диву даёмся:

$ flatpak remote-ls eos-apps 


…253 строки, я выбрал наиболее, на мой взгляд, интересные …
com.github.Slingshot                                  
com.google.AndroidStudio                              
com.google.Chrome                                     
com.microsoft.Skype                                   
com.mojang.Minecraft                                  
com.slack.Slack                                       
com.spotify.Client                                    
com.stencyl.Game                                      
com.sublimetext.three                                 
com.teeworlds.Teeworlds                               
com.transmissionbt.Transmission                       
com.valvesoftware.Steam                               
com.visualstudio.code.oss                             
io.atom.Atom                                          
io.github.Supertux                                    
org.codeblocks.App                                    
org.eclipse.Eclipse                                   
org.freeciv.Freeciv                                   
org.frozenbubble.FrozenBubble                         
org.gimp.Gimp                                         
org.inkscape.Inkscape                                 
org.mozilla.Firefox                                   
org.openarena.Openarena                               
org.openscad.Openscad                                 
org.pitivi.Pitivi                                     
org.platformio.Ide                                    
org.stellarium.Stellarium
org.tuxfamily.Xmoto
org.tuxpaint.Tuxpaint
org.videolan.VLC
org.wesnoth.Wesnoth


Установим, для примера, видеоплеер VLC (а вот тут надо sudo, из-за проблем с отсутствием цифровых подписей):

$ sudo flatpak install eos-apps org.videolan.VLC
Требуемая среда исполнения для org.videolan.VLC/x86_64/eos3 (com.endlessm.Platform/x86_64/eos3.1) не установлена, поиск...
Требуемая среда исполнения com.endlessm.Platform/x86_64/eos3.1 не найдена в настроенных удалённых репозиториях.
ошибка: The Application org.videolan.VLC/x86_64/eos3 requires the runtime com.endlessm.Platform/x86_64/eos3.1 which is not installed


Не тут-то было! Пакет org.videolan.VLC имеет зависимость. К счастью, во Flatpak зависимости бывают только от пакетов к рантаймам. Поэтому нам всего лишь потребуется подключить репозитарий с рантаймами:

$ flatpak remote-add eos-runtime https://ostree.endlessm.com/ostree/eos-amd64 --no-gpg-verify


Повторяем установку:

$ sudo flatpak install eos-apps org.videolan.VLC
Требуемая среда исполнения для org.videolan.VLC/x86_64/eos3 (com.endlessm.Platform/x86_64/eos3.1) не установлена, поиск...
Обнаружен удалённый репозиторий eos-runtime, установить? [y/n]: y
Установка: com.endlessm.Platform/x86_64/eos3.1 из eos-runtime

1043 metadata, 56516 content objects fetched; 853761 KiB transferred in 1528 seconds                                                                                                                                 
Установка: org.videolan.VLC/x86_64/eos3.2 из eos-apps

4 delta parts, 35 loose fetched; 46133 KiB transferred in 10 seconds  



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

$ sudo flatpak install eos-apps org.videolan.VLC//eos3.2


К счастью, конечному пользователю ни к чему эти заклинания в командной строке — я показал их здесь исключительно для того, чтобы была возможность взглянуть на Flatpak «изнутри». Для конечного пользователя можно сформировать файл flatpakref либо flatpakrepo. Первый содержит в себе всё необходимое для установки пакета и его рантайма, второй — описание репозитария, из которого пользователь затем сможет установить любое ПО при помощи Gnome-software или KDE Adept.

Лично я последнюю неделю в качестве эксперимента использую VLC из набора eos и прекрасно себя чувствую. Пакет интегрирован в систему как родной, файлы играет, ассоциации с расширениями поддерживает, в меню появляется. Единственная разница между пакетом Flatpak и системным — программы из Flatpak не подхватывают тему оформления. Разработчики работают над этим.

Таким образом, Flatpak предлагает нечто среднее между установочным пакетом snap/AppImage/MSI/DMG и пакетом из репозитария. С одной стороны, у нас-таки есть зависимость, но зависимость только одна — от рантайма, а в системе может быть несколько рантаймов, соответственно, мы не попадаем в ситуацию, когда свежую версию ПО нельзя установить из-за старых библиотек в системе. С другой стороны, репозитарии автоматически прописываются в системе и пакеты и рантаймы из них автоматически обновляются, за это мы и любим репозитарии.

Пытаясь совместить преимущества и той и другой системы, по-моему, у разработчика Flatpak получилось весьма неплохо, как вы считаете?