Пакетні системи Linux

Це було в далекі часи Ubuntu 12.04, коли трава здавалася зеленішою, а вода мокрішою. Закортіло встановити в Xubuntu 12.04 додаток для запису лазерних дисків Brasero з екосистеми Gnome, оскільки наявна на борту програма якістю обтяжена не була.

Разом із Brasero встановилася й запустилася офіційна шпигунська програма Zeitgeist. (Зараз це Tracker.) Навіщо той спостерігач потрібен? Не потрібен більш ніж повністю. Однак випилювання Zeitgeist спричинило зникнення Brasero. Тому що виробники Gnome зробили ці абсолютно різнопланові програми залежними одна від одної.

Насправді це не програми, а пакети, уявіть собі. Так і пишуть розробники, мовляв, у нас є сто тисяч п'ятсот мільярдів мільйонів пакетів. Ну або інше число називають, якмога більш вражаюче.

Пакети у форматі DEB

Що таке deb-пакети? Це коли програма навмисно подрібнена на безліч архівів з компонентами (звідси і мільярди тисяч мільйонів пакетів, предмет гордості дистрибутивів). У кожному прописана залежність від інших частин. Одне без іншого не встановлюється, одне тягне за собою ще щось, а при своєму видаленні тягне це щось у небуття.

Причому, залежності можуть бути не просто абсурдними, а й зловмисними. Такими, що дають змогу встромити користувачеві в систему який-небудь хитрий софт. Роблять людей рабами репозиторіїв, мережевих сховищ. Немає підключення до інтернету — залежності не завантажаться — нічого не встановиться. Підключення є, але версія дистрибутива Linux застаріла — репозиторії відключені — теж нічого не встановиться, мусиш переходити на новий реліз, навіть якщо не хочеш.

Конкретний приклад. Встановлюємо редактор зображень Krita в Lubuntu стандартною командою sudo apt-get install krita і бачимо, що нам із репозиторіїв прилетять 52 пакети, які містять невідомо що і незрозуміло навіщо.

Встановлення Krita
Змінюємо команду на розсудливу sudo apt-get install krita --no-install recommends, щоб заборонити доставку так званих рекомендованих пакетів. І що бачимо? Буде встановлено тільки чотири штуки.

Тобто інші 48 пакетів абсолютно не обов'язкові, анітрохи не потрібні для роботи Krita. Їх нам пхають із цілями, про які можна лише здогадуватися. Причому, не один і не два, а майже півсотні. Хтось же працював, прописуючи їх у залежності, був дуже зацікавлений у нав'язуванні зайвого.
Чистий, без зайвого, редактор Krita
Після встановлення лише тих чотирьох пакетів, як і передбачалося, Krita працює чудово.

Найсмішніше, при всьому цьому користувачам інтенсивно їздять по вухах маркетологи, мовляв, Linux — це свобода. Авжеж.

Пакети Flatpak

Корпорації, що виготовляють платні версії Linux, які тестують безкоштовні сирі напівфабрикати на живих людях, все ж зрозуміли, що цих самих живих скоро не залишиться. Усі, крім найбільш відморожених фанатиків, рано чи пізно розчаруються й повернуться на Windows. Хто ж тоді буде нововведення випробовувати на власній шкурі. Не самі ж розробники. (А тестувати треба, адже дві третини серверів у світі працюють на Linux. Інтернет розвалиться, якщо продукцію не полірувати.)

Так з'явився формат пакетів Flatpak, який нібито вже точно робить користувачів незалежними. Мовляв, встановлюй собі в будь-який дистрибутив.

Але влада надто солодка. Керувати широкими масами, робити їх залежними від мережевих сховищ, репозиторіїв, — відмовитися від усього цього не знайшлося сил.

Ба більше, якщо deb-пакети все ж можна встановлювати офлайн командою sudo dpkg -i, вручну зібравши в одну теку всі залежності, то для Flatpak треба робити власний репозиторій на флешці. Причому, інструкції досить розпливчасті. Нормальна людина з усім цим морочитися просто не стане. І правильно зробить.

Але й це ще не все. Якщо купа взаємозалежних deb-архівів після встановлення займає, приміром, близько двохсот мегабайт, то абсолютно та ж сама програма у форматі Flatpak зжере гігабайти й не подавиться. Тому що їй ще й середовище виконання потрібне, бачте, чи то пак Runtime.

І ці Runtime рідко використовуються кількома додатками одразу. Тобто далеко не завжди один Runtime придатний для багатьох. Тому вони накопичуються масово. Ймовірно, спонсори, виробники комп'ютерів і комплектуючих, попросили виробників роздути формат якомога сильніше. Мовляв, нехай користувачі постійно купують дедалі об'ємніші накопичувачі, якщо вже за Linux не платять.

Не вірите? Тоді розглянемо конкретні приклади. VLC Media Player у вигляді розсипу deb-пакетів просить для себе дуже скромні 68 мегабайт. (Насправді забере втричі більше, притягнувши купу непотрібних залежностей, але в підсумку все одно вийде не так вже й багато.)

VLC в deb

А тепер тримайте під рукою валеріанку. Або валідол. Підготували? Зробіть глибокий вдих. Той же VLC Media Player у варіанті Flatpak бажає відгризти... 3,8 гігабайта.

Flatpak VLC

Заспокоїлися? Шок минув? Тепер вирішуйте самостійно, чи дійсно вас може ощасливити такий формат. Особливо якщо встромили в не дуже новий ноутбук який-небудь дешевий накопичувач SSD об'ємом 128 гігабайт. Адже Linux встановлюється насамперед на машини в середньому віці, які вже не можуть Windows тягнути.

Пакети у форматі Snap

Фірму Canonical можна й потрібно лаяти за багато речей. Наприклад, за те, що Ubuntu завжди глючна, навіть фінальні коригувальні релізи (point releases). За whoopsie, apport, kerneloops, unattended-upgrades та інший шпигунський мотлох на кшталт rsyslog. За колишнє закриття чудового проекту Unity Desktop. За вибір найбільш ненажерливого робочого столу Gnome Shell замість чогось пристойного, наприклад, Mate.

Але що Canonical зробила дійсно добре, людяно, це самодостатні пакети у форматі Snap. У будь-який більш-менш сучасний (бажано стабільний) реліз Debian легко додається підтримка Snap, а самі пакети завантажуються й потім встановлюються офлайн без проблем.

Що тут почалося! Світ Linux завив. Це ж замах на солодку владу над мільйонами користувачів. Скасування рабської прив'язки до репозиторіїв.

Маркетологи одразу ж вхопилися за дитячі хвороби нового формату, мовляв, перший запуск такої програми відбувається довго, пакети Snap підсовуються замість купи нахабних залежностей, ну й взагалі як посміли.

На щастя, фірма Canonical діє за принципом «собаки гавкають, але караван іде». Тепер у всіх охочих є власний набір потрібних додатків у форматі Snap.

Виття триває. Нове рабство Flatpak просувається, рекламується як єдиний притомний формат. Snap енергійно лається скрізь, де тільки можна, навіть де не можна. Але ми ж можемо чинити опір тиску маркетингу на психіку й думати своєю власною головою.

Як саме встановлювати Snap на інших машинах без необхідності завантажувати для кожного комп'ютера одне й те саме з репозиторіїв? Спочатку додаємо в Debian підтримку Snap:

sudo apt-get install snapd

sudo snap install snapd

Перший пакет snapd у deb-форматі зазвичай самодостатній, можна переносити на інші пристрої і там встановлювати за допомогою Gdebi. Другий — це вже Snap.

Завантажуємо який-небудь гарний, потрібний застосунок, наприклад, медіаплеєр MPV, командою в емуляторі терміналу:

snap download mpv

Безпосередньо в домашній теці з'являться одразу два файли, щось на кшталт сертифіката mpv_201.assert і сам пакет mpv_201.snap (номер версії програми може бути іншим).

Спочатку потрібно згодувати підготовленій (вже з підтримкою Snap) цільовій операційній системі сертифікат:

sudo snap ack /путь/к/файлу/mpv_201.assert

Потім і сам пакет:

sudo snap install  /путь/к/файлу/mpv_201.snap 

Тепер, якщо все влаштовує, заборонимо програмі автоматично оновлюватися:

sudo snap refresh --hold mpv

Можна заборонити оновлюватися взагалі всім встановленим Snap:

sudo snap refresh --hold

Щоб не вводити вручну шлях, можна просто перетягнути файл у віконце емулятора терміналу, набравши команду. Потрібно лише стежити, щоб після тієї команди був пробіл. Видалити Snap-пакет можна так:

sudo snap remove mpv

Якщо Snap не з'являються в головному меню Debian, виконуємо команду:

sudo ln -s /var/lib/snapd/desktop/applications /usr/share/applications/snapd 

Просто? Так. Тому й триває завивання. Підігрівається корпораціями, що стоять за розробкою Linux і жадають влади над користувачами.

Пакети у форматі Appimage

Портативні, можна запускати хоч із флешки, звідки завгодно. Але свої налаштування та інші дані все одно зберігають у призначеній для користувача директорії так само, як це роблять програми в інших форматах.

Тобто якщо запускаєте на чужому комп'ютері, скажімо, браузер у форматі Appimage, введені вами паролі можуть запам'ятатися на тому пристрої. Слід ставитися до цього уважно.

Ну і, звісно, пакети Appimage не є повністю самодостатніми. Потрібні базові програмні бібліотеки, особливо відповідна версія Fuse. Найчастіше потрібна libfuse2, треба додавати в систему вручну. Для деяких додатків, наприклад, для Viber, іноді потрібна ще й libopengl0. Загалом, якщо Appimage має право на виконання, але все одно не запускається, перетягуємо його у віконце емулятора терміналу, тиснемо Enter, читаємо повідомлення про те, чого не вистачає, встановлюємо компоненти, яких бракує, за допомогою Synaptic Package Manager (або Muon).

А от усіляких хитрих програм для запуску Appimage, які нібито підвищують зручність, треба уникати. Користуватися можна й без них. Скопіювали файл у форматі Appimage прямо на робочий стіл — і робимо на ньому подвійний клік, як на ярлику.

 Відеоредактор Shotcut у форматі Appimage

Корисна властивість формату Appimage полягає в тому, що можна оперативно тестувати нові версії додатків, не чіпаючи вже наявні в системі. Свіже глючить — встановлене поки не оновлюємо. Спробуємо пізніше, завантаживши через деякий час Appimage з виправленою версією.

Резюмуємо

Про всяк випадок збираємо колекцію Appimage і, звичайно ж, Snap (з окремим сертифікатом для кожного файлу), щоб можна було забезпечити себе софтом на випадок недоступності репозиторіїв. 

Наприклад, реліз застарів — і вже не завантажити залежності, все відключено через місяць після офіційного припинення підтримки. А новий реліз якщо не глючний, то вже напевно більш роздутий, важкий. Не дуже хочеться переходити на нього примусово (і на радість корпораціям бігти в магазин за новим процесором). Ось і допоможе колекція дійсно вільного софту.