Действительно ли снимок является портативным через другой UNIX (пример macOS)?

Я люблю идею позади снимка и играемый с ним на VM Ubuntu.

Обзор Snapcraft

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

A. поспешный пакет для системы Ядра Ubuntu содержит все свои зависимости. Это имеет несколько преимуществ перед традиционным deb или основанной на об/мин обработкой зависимости, самое важное существо, что разработчика можно всегда уверять, что нет никаких регрессий, инициированных изменениями в системе под их приложением.

Snapcraft делает связывание этих зависимостей легким, позволяя Вам указать их как "части" в snapcraft.yaml файле. Мгновенный

Мгновенное Ядро Ubuntu является новым представлением Ubuntu с транзакционными обновлениями - минимальное изображение сервера с теми же библиотеками как сегодняшняя Ubuntu, но приложения предоставлены через более простой механизм.

Мгновенные приложения и само Ядро Ubuntu могут обновляться атомарно и откатываться в случае необходимости. Приложения также строго заключены и поигрались в песочнице для охраны данных и системы.

IoT ›Приложения сборки

На каких технологиях базируется снимок? Как архитектура и инструментарии смотрят? Снимок зависит от функций ядра Linux?

Я спрашиваю, потому что я задаюсь вопросом, смогу ли в будущем я использовать те же поспешные пакеты также на macOS?

Разъяснение, после первого комментария:

Я знаю, что macOS и Ubuntu не двоичные совместимый. Перекомпилировать необходимо. Уже существует почти любой Открытый исходный код, доступный для macOS с Домашним пивом. Разработчик мог разработать на macOS и развернуться на Ubuntu, когда снимок будет (в будущем) доступен для macOS.

10
задан 22 January 2017 в 06:14

3 ответа

Да, благодаря устойчивости Linux syscall интерфейс, это возможно.

Одно из больших обязательств Linus Torvalds перед пользователями Linux - то, что множество интерфейсов, предлагаемых ядром, является устойчивым. Многие люди не ценят значение этого, или как оспаривание ему как лидер открытого проекта достигнуть того обязательства. Рассмотрите, например, как непредсказуемые изменения в API GNOME, в отличие от этого! Когда Вы слышите о Linus, становящемся интенсивными в списке рассылки, это почти всегда, потому что некоторый разработчик к ядру решил изменить такой интерфейс, 'потому что у них была лучшая идея'. Linus говорит, что можно ввести новшества дико В ядре, но не повреждайте приложения 'пространства пользователя', которые зависят от существующего syscalls.

В результате той устойчивости для других ядер возможно предложить тот же syscalls, позволение приложений основывалось на Linux для работы тех других ядер.

Одним примером этого является проект Тритона Joyent, которые предлагают совместимый с Linux syscalls в контейнерах на SmartOS (потомок IllumOS, потомок Соляриса).

А более широко известным примером является новое подсистема Linux в Windows.

Of course, сколько из syscalls предлагается, и как ошибка для ошибки, совместимая, они, реальный вопрос. По крайней мере на данный момент нет другой среды, где все необходимые syscalls существуют, потому что те привязываются, использование являются относительно новыми и глубокими в способе, которым ядро думает о вещах, которыми это управляет.

, Но они, конечно, прибудут, вовремя, и я думаю, что снимки таким образом будут применимы в широком спектре контекстов.

то, Которое очень прохладно, исправляет приветствие :)

20
ответ дан 23 November 2019 в 04:17

В то время как я не могу найти информацию о macOS, этот OMG! Статья Ubuntu имеет интересную кавычку от Mark Shuttleworth:

Что касается выполнения Снимков в Windows 10? “It’s абсолютно plausible” Shuttleworth сказал.

“Snaps используют современные функции в ядре Linux, чтобы сделать заключение безопасности, настроить доступ к файловой системе, и т.д., и все это вовлекает использующие современные механизмы в ядро. И Канонический вывод много из [эта работа]. It’ll требуют времени для Microsoft к [добираются для сцепления в с ним].”

, Если бы "вероятно" получить его работающий в Windows, я сказал бы то же для macOS, за исключением того, что Microsoft, кажется, сотрудничает с Каноническим, который не является чем-то, что я услышал о выполнении Apple.

<час>

документация относительно Поспешная политика безопасности и игра в песочнице и Дуга запись Wiki на snapd информативны:

От Дуги Wiki:

Примечание, что поспешное ограничение создается с - опция запрещать-заключения; полное заключение полагается на AppArmor, включил ядро и связал профиль для снимка.

От политики:

Под капотом, средством запуска:

  • Настраивает различные переменные среды: [†¦]
  • , Когда аппаратные средства присвоены снимку, настраивает устройство cgroup с устройствами по умолчанию (например,/dev/null,/dev/urandom, и т.д.) и любыми устройствами, которые присвоены этому снимку
  • , Настраивает частный/tmp использование частного пространства имен монтирования на команду и монтирование, что каталог на команду на/tmp
  • Настраивает devpts новый экземпляр на команду
  • , Настраивает фильтр seccomp для команды
  • , Выполняет команду под определенным для команды профилем AppArmor под хорошим значением по умолчанию

Эта комбинация строгих профилей AppArmor (которые добиваются доступа к файлу, выполнения приложений, поддержка Linux (7), монтируются, ptrace, IPC, сигналы, крупномодульные сети), ясно определил специализированные области файловой системы, белый список syscall фильтрующий через seccomp, частный/tmp, новый экземпляр devpts и устройство cgroups предусматривает сильное заключение приложения и изоляцию.

, В то время как AppArmor и seccomp является Linux только, похоже, что заключение может быть сделано дополнительным, таким образом, мы можем проигнорировать это. Затем существует использование devpts, cgroups, и смонтируйте пространства имен. Если бы существует какое-либо блокирование, я думаю, что это было бы для тех. Я не достаточно знаком с BSDs для высказывания, каковы эквиваленты.

snapd само приложение записано в Движении, которое должно сделать его довольно межплатформенным. Действительно, некоторые файлы имеют очень интересные цели сборки :

osutil/group_other.go:

// -*- Mode: Go; indent-tabs-mode: t -*-
// +build !linux,!darwin,!freebsd

osutil/group_linux.go:

// -*- Mode: Go; indent-tabs-mode: t -*-
// +build darwin freebsd linux
// +build cgo

, Таким образом, это похоже, у кого-то есть интерес к этому.

11
ответ дан 23 November 2019 в 04:17

На сегодняшний день snap можно установить на MacOS, но нельзя использовать.

$ brew install snap
$ snap install ./some-app.snap --devmode
Interacting with snapd is not yet supported on darwin.
This command has been left available for documentation purposes only.
0
ответ дан 1 January 2021 в 14:29

Другие вопросы по тегам:

Похожие вопросы: