Як пакети оснащення обробляють спільні залежності?


30

Формат оснащення упаковки, нарешті, звільняє нас від пекла залежності, дозволяючи кожному пакунку мати власну копію залежностей. Мене цікавлять технічні деталі, як це робити. Як поводиться:

  • знімки залежно від версії бібліотеки, яка вже встановлена ​​за допомогою пакетів deb для поточного випуску? Чи ігнорує встановлену бібліотеку?
  • різні знімки із зазначенням тієї ж версії тієї ж бібліотеки? Чи робить це дедуплікація якось?
  • оновлення основних бібліотек, які, ймовірно, будуть використані дуже багато знімків? OpenSSL приходить до тями як величезна больова точка.

xdg-app має щось, що називається "час виконання" :

Фундаментальна концепція xdg-додатка - це час виконання / розділення додатків. Кожна програма залежить від часу виконання, який постачає основні бібліотеки, на які покладається додаток. Час виконання зазвичай ділиться багатьма програмами, але користувач може одночасно встановити кілька режимів виконання.

Схоже, що у випадку OpenSSL це буде частиною часу виконання в xdg-додатках, тому оновлення на OpenSSL повинно прозоро впливати на всі xdg-додатки, що використовують один і той же час виконання.

Відповіді:


9

Перші дві ситуації вирішуються розумно.

Однією з цікавих особливостей, про які говорилося, є підтримка дедуплікації вмісту в пакетах Snap. Знімки автоматично будуть дублюватися загальними файлами, які спільно використовуються між знімками на основі хеш-файлів їхніх файлів. Буде дедублювання на рівні файлової системи, дедуплікація при оснащенні завантажень (із підтримкою сервера) та, можливо, дедуплікація відображених бібліотек із лінкера. Дедуплікація - це велика робота, і, ймовірно, знадобиться певний час для повного впровадження, але все ж це цікава мета.

Джерело: http://www.phoronix.com/scan.php?page=news_item&px=Ubuntu-Snappy-Deduplication

Що стосується третьої ситуації, вони мають щось подібне до виконання, про яке ви згадали:

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

Джерело: http://www.ubuntu.com/cloud/snappy

Досі немає гарної документації, яка б описувала рамки, насамперед тому, що вони, здається, все ще розробляють межі того, що таке рамка. Ось уривок зі списку розсилки, який може допомогти з’ясувати речі.

Я експериментую з Frameworks, щоб по суті розширити базову систему Snappy за допомогою програмного забезпечення та сервісів, які потребують безлічі знімків, але не повинні бути включені в будь-яку оснастку через проблеми оновлення та розмір. Найкращий приклад для цього - двійковий файл openssl. Багато знімків потребують цього для створення та перевірки ключів та сертифікатів.

Інша проблема, яку я повинен вирішити за допомогою фреймворку, - це доступ до загальносистемних ресурсів, особливо до портів. Наприклад, рамка веб-сервера надає способи іншим оснащенням вводити свої веб-сервіси api та кінцеві точки через зворотний проксі в рамку, на якій працює веб-сервер.

Мені сказали в IRC, що я зловживаю концепцією рамок, але все ж ці два питання часто виникають на моєму столі.

Джерело: https://lists.ubuntu.com/archives/snappy-app-devel/2015-November/000442.html


1
Для уточнення, нічого з цього насправді не існує, правда? Це плани, і ви, мабуть, мали на меті сказати, що "буде оброблено", а не "обробляються" в першому рядку
муру

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

1
Це не хитро оброблені способи, лише нібито розумні ідеї. Наприклад, досі немає офіційної документації про те, як реально реалізується перша, лише стаття Phoronix, яка вказує на розмову, яка є мертвою посиланням btw.
bviktor

3

Я не думаю, що знімки перевіряють, які залежності вже встановлені. Він просто включає всі його залежності та час виконання (тому частково тому, що оснащення LibreOffice становить 287 Мб, а плоский пакет - близько 200 МБ).

Знімки містять майже все, що потрібно для запуску програмного забезпечення. Я не думаю, що щось поділяється між знімками.

Коли оснащення оновлюється, він завантажує лише нові залежності, а не всю оснастку.


2

Додаткове роз’яснення стосується того, як оснащення упаковки обробляє спільні залежності.

Знімки містять майже все, що потрібно для запуску програмного забезпечення. Я не думаю, що щось поділяється між знімками.

Це твердження в одній з відповідей частково відповідає дійсності, проте всі встановлені пакети оснащення, крім основного оснащення, залежать від двох пакетів, один з яких є основним оснащенням.

  1. snapd - який встановлюється за замовчуванням у 16.04 і далі, а також може бути встановлений у 14.04.

  2. core    - (оснастка core), яка автоматично завантажується та встановлюється при встановленні першого встановленого пакету оснащення

Всі пакети оснащення, крім самого core, залежать від оснащення ядра. Якщо з основним оснащенням щось не так, то деякі або всі інші знімки не працюватимуть. Проблему з оснащенням серцевини можна виправити наступними двома способами.

  1. Оновіть основну оснастку. Навіть якщо це не працює, результати виконання наступної команди нададуть додаткову інформацію, яка допоможе вирішити проблему.

    sudo snap refresh core  
    
  2. Видаліть основні оснащення та всі оснащені пакети, а потім перевстановіть їх.

    sudo snap remove core snap-package1 snap-package2  
    sudo snap install core snap-package1 snap-package2
    
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.