Loading AI tools
система керування пакунками З Вікіпедії, вільної енциклопедії
Snap — система керування пакунками та розгортання програмного забезпечення, розроблена компанією Canonical для операційних систем, котрі використовують ядро Linux та систему systemd init. Пакунки, які називаються snaps, а також інструмент для роботи з ними, snapd, працюють на різноманітних дистрибутивах Linux,[2] і дозволяють розробникам постачати програмне забезпечення напряму до користувачів. Snaps — самодостатні застосунки, які запускаються в режимі пісочниці з опосередкованим доступом до основної системи. Snap початково було випущено для хмарних застосунків,[3] проте згодом його було портовано для пристроїв Інтернету речей,[4][5] а також комп'ютерних[6][7] застосунків.
Магазин Snap дозволяє розробникам публікувати застосунки, створені як пакунки snap.[8] Усі застосунки, завантажені до магазину Snap, проходять автоматичне тестування, що включає перевірку на шкідливі програмні засоби. Втім, сканування не виявляє усіх проблем. В одному випадку в травні 2018 року два застосунки від одного виробника містили видобувач криптовалюти, який запускався як фоновий процес під час виконання застосунку. Коли проблему було виявлено, Canonical видалила застосунок з магазину Snap та передала права власності Snaps перевіреному сторонньому видавцеві, який заново опублікував Snaps після видалення видобувача.[9][10][11] Хоча режим пісочниці для Snap знижує шкоду від шкідливих застосунків, Canonical радить користувачам встановлювати Snaps лише від видавців, яким користувач довіряє.[12][13]
Пакунки snaps — самодостатні, які працюють на багатьох дистрибутивах Linux. Це відрізняє Snaps від традиційних підходів до керування пакунками у Linux, які вимагають підлаштовувати пакунки окремо для кожного дистрибутива.[14][15]
Формат snap — єдиний файл, котрий містить архівовану файлову систему в форматі SquashFS з розширенням .snap
. Така файлова система містить застосунок, бібліотеки, від яких він залежить, а також декларативні метадані. Ці метадані зчитує snapd для того, аби налаштувати відповідну безпечну пісочницю для даного застосунку. Після встановлення, snap монтується до основної операційної системи та розархівовується наживо коли файли використовуються.[16][17] Хоча завдяки архівуванню snaps займають менше місця на жорсткому диску, це також означає, що деякі великі застосунки запускаються повільніше.[18][19]
Суттєва відмінність між пакунками Snap та інших форматів універсальних пакунків Linux, таких як Flatpak є те, що Snap підтримує будь-який клас Лінукс-застосунків, таких як комп'ютерні застосунки, серверні інструменти, застосунки для Інтернету речей і навіть системних сервісів, таких як пакет драйверів для принтерів.[8][20][21] Аби забезпечити це, Snap покладається на systemd для таких функцій, як запуск сервісів сокет-активованої системи в Snap.[22] Через це Snap працює найкраще лише на дистрибутивах, які використовують дану систему init.[23]
Додатки у форматі Snap запускаються в контейнері з обмеженим доступом до основної системи. Використовуючи Інтерфейси, користувачі можуть надавати додаткові опосередкований доступ до додаткових можливостей основної системи, наприклад записування аудіо, доступ до пристроїв USB, а також записування відео.[24][25][26] Оскільки інтерфейси звертаються до стандартних Linux API, додатки можуть працювати в пісочниці без потреби бути переписаними. Користувацькі додатки також можуть використовувати портали робочого столу XDG, стандартизований API, початково створений проєктом Flatpak для надання користувацьким додаткам у пісочниці доступу до ресурсів основної операційної системи.[27][28] Такі портали зазвичай кращі для користувачів у порівнянні зі стандартними Linux API тому що вони запитують в користувача дозвіл на використання ресурсів, таких як веб-камера, коли додаток їх потребує. Недоліком є те, що додатки та набори інструментів необхідно переписувати аби використовувати з такими новішими API.
Пісочниця Snap також підтримує спільне використання даних та сокетів Unix між Snap'ами.[29] Також можна спільно використовувати бібліотеки та фреймворки додатків між Snap'ами аби зменшити їх об'єм та уникнути повторюваності.[30][31]
Пісочниця Snap значною мірою покладається на безпековий модуль Linux AppArmor висхідного ядра Linux. Оскільки лише один «основний» модуль безпеки Лінукс (LSM) може бути активний,[32] пісочниця Snap є значно менш безпечною коли активний інший основний LSM. Тому в таких дистрибутивах як Fedora, де одразу увімкнено модуль SELinux, пісочниця Snap проявляє себе значно гірше. Хоча Canonical працює з багатьма іншими розробниками та компаніями аби уможливити одночасний запуск кількох LSM, це рішення не з'явиться найближчим часом.[33][32][34]
Пісочниця Snap не дозволяє користувацьким додаткам отримувати доступ до графічного оформлення основної операційної системи аби запобігти проблемам із сумісністю. Для того аби Snap'и використовували графічну тему, її також доведеться помістити в окремий Snap. Багато популярних тем було розміщено розробниками як Snap-пакунки,[35] але деякі теми досі не підтримуються,[36] а нестандартні теми доведеться встановлювати вручну. Якщо тема недоступна як пакунок Snap, користувачам лишається обирати найбільш відповідну з наявних.[37] Зараз розробники працюють над тим, аби стороннім розробникам стало простіше поширювати теми в пакунках Snap та автоматично встановлювати нестандартні теми систем.[38]
Кілька разів на день snapd перевіряє наявність оновлень для всіх Snaps, і встановлює їх фоново використовуючи лінеаризовані процеси. Оновлення можна відкликати[39][40] й використовувати дельта-кодування аби знизити обсяг завантажуваних даних.[41][42][43]
Видавці можуть випускати та оновлювати різні версії програмного забезпечення паралельно з використанням каналів. Кожен канал має відповідний трек та ризик, які визначають версію та стабільність програмного забезпечення, яке випускають на даному каналі. Під час встановлення додатку, Snap автоматично обирає канал latest/stable
, який автоматично оновлюватиме до нового основного випуску програмного забезпечення коли воно стає доступним. Видавець може створювати додаткові канали аби надавати можливість користувачам користуватися певними основними випусками своїх додатків. Наприклад, канал 2.0/stable
дозволяє користувачам продовжувати користуватися версією 2.0, і отримувати лише незначні оновлення без ризику втрати сумісності з попередніми версіями. Коли видавець випускає нову основну версію в новому каналі, користувачі можуть вручну оновитися до наступної обраної версії.[44][45][46][17]
Користувачі можуть встановлювати графік, частоту та своєчасність автоматичних оновлень. Наприклад, така команда перевірятиме на оновлення в останню п'ятницю з 23:00 до 01:00.
$ sudo snap set system refresh.timer=fri5,23:00-01:00
Користувачі також можуть призупинити автоматичні оновлення на певний або невизначений термін.[47][48][49] Оновлення автоматично призупиняються на лімітованому підключенні.[50][51]
Snapcraft — інструмент, який дозволяє розробникам пакувати програмне забезпечення у форматі Snap.[53] Він може запускатися на будь-якому дистрибутиві Linux, який має підтримку Snap, macOS[54] та Microsoft Windows.[55] Snapcraft створює пакунки у віртуальній машині використовуючи Multipass,[56] аби результат пакування був однаковий, незалежно від того, на якому дистрибутиві або операційній системі його було створено.[57] Snapcraft підтримує багато інструментів розробки та мов програмування, наприклад Go, Java, JavaScript, Python, C/C++ та Rust. Також він дозволяє імпортування метаданих додатка з різних ресурсів, таких як AppStream, git, текстові скрпти та файли setup.py
.[54][58]
Snap початково підтримував лише дистрибутив Ubuntu Core, який виористовує лише Snap'и, але в червні 2016 р. його було портовано на різноманітні дистрибутиви Linux як один з форматів універсальних пакунків Linux.[59] Snap вимагає Systemd, який доступний у більшості, але не всіх дистрибутивах Linux. Інші Unix-подібні системи (наприклад, FreeBSD) не підтримуються.[60] ChromeOS не має прямої підтримки Snap, а лише через дистрибутиви Linux з підтримкою Snap, наприклад Gallium OS.[61]
Ubuntu та офіційні деривативи постачаються з попередньо встановленим Snap, як і дистрибутиви на основі Ubuntu, такі як KDE Neon, Solus, та Zorin OS.[62] Тоді як інші офіційни деривативи Ubuntu, такі як Kubuntu, Xubuntu, та Ubuntu MATE також постачали альтернативний формат пакунків Flatpak, Canonical заборонить використовувати інші формати починаючи з Ubuntu 23.04, що означає те, що альтернативні пакунки користувач встановлюватиме самостійно.[63]
Велика кількість визначних компаній з розробки комп'ютерного програмного забезпечення публікують його в Snap Store, наприклад Google,[64] JetBrains,[65] KDE,[66] Microsoft (для лінукс-версій програмного забезпечення, наприклад .NET Core 3.1,[67] Visual Studio Code, Skype,[68] і PowerShell), Mozilla[69] та Spotify.[70] Snaps також застосовуються для середовищ Інтернету речей, від продуктів споживацького класу[71] до корпоративних порталів керування пристроями[72] та мереж супутникового зв'язку.[73][74] Насамкінець, Snap часто використовують розробники серверних додатків, таких як InfluxDB,[75] Kata Containers,[76] Nextcloud[77] і Travis CI.[78]
Snap отримав змішані відгуки від спільноти розробників. На рекламному сайті Snap'у, Heroku хвалили можливість автоматичного оновлення Snap'ів оскільки це добре підходить для їхньої політики частих оновлень. Microsoft відмічає простоту користування Snap, осікльки пакувальник базується на YAML, а також незалежність від типу дистрибутива. JetBrains сказали, що Крамниця Snap дає більше популярності їхнім інструментам.[79]
Інші критикували закриту модель Крамниці Snap. Клемент Лефебр (засновник та лідер проєкту Linux Mint[80][81]) написав, що Snap є упередженим та має конфлікт інтересів. Серед обґрунтувань було те, що Snap адмініструється компанією Canonical і прив'язаний до їхньої крамниці, а також що Snap працює краще на Ubuntu, ніж на інших дистрибутивах.[82] Згодом він оголосив, що встановлення Snap буде блокуватися APT на Linux Mint,[83][84] хоча існуватиме інструкція, як обійти це обмеження.[85]
В найновіших версіях Ubuntu, Canonical замінила деякі пакунки виключно на Snap, серед них браузери Chromium та Firefox[86].[87][8] Заміна для браузера Firefox була критично сприйнята користувачами через проблеми з продуктивністю у Snap-версії, особливо під час першого запуску.[86]
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.