Linux дистрибутивы
iOS
- Обычно приложения устанавливаются из “магазина”
- Установка приложения не из магазина очень сильно ограничена
Что есть “приложение” из магазина?
- Никто даже не помнит расширения этих фалов
У приложения есть разработчик. Распространение - на плечах Apple.
Android
- Существует Play Market для установки приложений
- Существует YandexStore, Amazon, китайцы
- Установка приложения не из магазина ограничена только тем, что обновления надо ставить вручную
- На телефоне есть встроенный менеджер приложений, из которого вы можете удалить “любое” приложение, полученное из внешних источников.
Что есть “приложение”?
- Архив apk, содержащий в себе исполняемый код и ресурсы.
- ОС заботится о том, чтобы код и ресурсы были расположены в защищённом от других приложений хранилище.
-“-
Windows 10
- Есть концепция магазина, в котором ничего нет и ничего оттуда не работает. :wink:
- Есть автообновление, и можно заплатить денег.
- Есть ограничения по типу приложений, которые могут быть опубликованы.
- Нужно для экспансии под ARM.
- Гарантии по безопасности есть? Нет.
- Есть интернет. Откуда можно скачать кучу приложений под ОС.
- По умолчанию никаких обновлений нет.
- Если это только не Firefox, Google Chrome, Steam, …
- Вирутальным ограничением является “подпись разработчика”, которую показывает ОС при запуске установочного пакета от имени администратора.
- По умолчанию никаких обновлений нет.
- Есть steam, который предоставляет единственные приложения, ради которых стоит ставить Windows.
Приложение - исполняемый файл, который работает под управлением данной ОС. Распространение приложения - отдельная тематика.
Распространение сейчас делается компанией Valve.
GNU/Linux
Приложение в GNU/Linux - классический исполняемый файл.
У нас существует множество “дистрибутивов”. Distibute - verb, распространять. Дистрибутив - распространение определённого набора ПО.
Компоненты “мира”
- Ядро ОС, Linux.
- Набор “стандартных системных приложений”, POSIX. Существует несколько реализаций, разрабатывают разные люди.
- Различные системные приложения.
- Различные прикладные приложения.
Напоминаю, что большинство этих компонент доступны “бесплатно”. И не просто бесплатно, а в виде исходных кодов.
В середине 90х
- не было интернета.
- была распространена модель “посылки” ПО в дистрибутивах: можно найти Windows 95 на 10 дискетах.
Была цель: сделать дистрибутив GNU/Linux. Стоит отметить следующие дистрибутивы:
- RedHat, RHEL - комерческий продукт. Вы платите за “качество” сборки.
- Debian, 9
- Slackware, этот не включает )
Наследие “интернет”-эпохи.
- Gentoo
- Arch Linux
Чем эти “дистрибутивы” отличаются друг от друга.
Из чего состоят “дистрибутивы”?
- Они явно состоят из “компонентов”, которые перечислены выше.
- “Компоненты” поставляются в виде “пакетов”, package.
- В простом случае package - это архив, содержащий в себе всё необходимое для того, чтобы бинарная версия приложения работала в рамках общего окружения дистрибутива.
- “пакет” для ядра - бинарный файл ядра Linux, способный запускаться на определённой архитектуре процессора.
- “пакет” для приложения - бинарый файл, способный выполняться соответствующим ядром ОС + ресурсы.
- Понятно, что помимо пакетов, содержащих исполняемые файлы есть также и пакеты, которые содержат доп. ресурсы:
- Документация
- Переводы
- Расширенные наборы ресурсов
- Библиотеки, которые нужны для других приложений.
- Нам нужна система, которая позволит указывать зависимости между пакетами:
- Документация явно требует установки самого приложения.
- Все пакеты, содержащие библиотеки, должы быть установлены до пакета приложения, которое зависит от этих библиотек.
- Нужна некоторая система, которая позволит решать данную задачу. Она, собственно, называется менеджером пакетов.
В результате дистрибутив - это набор некоторых бинарных пакетов, содержащих исполняемые файлы, совместимые друг с другом, имеющие зависимости друг от друга, а также система управления данными пакетами.
Хоть исходной информацией для каждого дистрибутива являются одинаковые файлы - исходные коды соответствующих приложений, собрать из них бинарные файлы можно по-разному:
- названия бинарных файлов (особенно актуально для библиотек)
- можно использовать различные компиляторы (GCC, GNU C Compiler, CLang, LLVM, Low Level Vitrual Machine)
- можно использовать разные версии как приложений, так и компиляторов, так и ядра, так и системных библиотек……
В результате рождатеся проблема: на чём можно писать своё приложение:
- Разработчик выбирает 1 дистрибутив для тестирования ПО
- Разработчик выбирает “стандарты”
- Разработчик пытается поддержать большиство платформ (экономичеки выгодны)
В результате:
- Бесплатное ПО разрабатывается зачастую под 1 платформу
- Платное ПО поддерживает ряд выбранных платформ
Как получается, что есть много дистрибутивов (В России как минимум 2 стабильно существующих платных дистрибутива).
А кто же делает эти самые дистрибутивы?
- Платная разработка, RedHat, Suse (SLES), ALT Linux, Canonical (Ubuntu)
- Разработка силами сообщества. Обычно участнику сообщества денег не платят, хотя в некоторых случаях они могут получать деньги от фондов.
Есть “стандартная” роль человека, отвественного за создание и поддержание пакета в должном виде. Этот человек “работает” на стороне дистрибутива. Такой человек называется maintainer.
В результате разработчику приложения НЕ ОБЯЗАТЕЛЬНО поддерживать все дистрибутивы, ментейнеры самостоятельно адаптируют процесс сборки пакета под конкретный дистрибутив.
Труд по сборке пакета заключается в том, чтобы настроить сборочную среду, а не самостоятельно вручную собирать пакет.
Как выглядит процесс формирования дистрибутива
- Разработчик постоянно работает над улучшением своего приложения
- Новые фичи
- Исправление багов
- Внесение новых багов
- Мейнтейнер хочет предоставлять стабильную версию ПО, в которой минимальное количество ошибок.
- “Пользователь” не знает чего он хочет.
- Самое свежее.
- Самое стабильное, но достаточно свежее.
Классические дистрибутивы ориентируются на классического системного администратора, который хочет настроить систему 1 раз, а потом она бы работала, да денег не просила. За стабильность люди платят деньги: RedHat, SuSe, Canonical… Стабильные версии выходят обычно 1 раз в 2-3 года. Debian.
“линуксоиды” хотят всегда экспериментировать над собой и окружающими, поэтому им нужны сверкающие шарики, всё новое и т.д. Плюсы этих людей: они являются добровольными тестировщиками и находят большинство багов как можно раньше. В результате ПО стабилизируется и его можно предоставлять платным клиентам. RedHat: Fedora (каждые 1/2 года), SuSe: Open SuSe, Arch (выходит ежедневно), Gentoo (Выходит ежедневно), Debian Testing (выходит почти ежедневно).
Стоит отметить, что есть 2 модели формирования дистрибутивов
- “заморозка”. В рамках 1 версии дистрибутива версии приложений не меняются (значительно). В обновления влкючатся только исправления багов, исправление ошибок в безопасности.
- “постоянный выпуск”, rolling release. Вы пытаетесь использовать самое свежее ПО. При этом всё-равно пытаетесь его немного стабилизировать. Лоигка такого выпуска состоит в следующем: мы надеемся на то, что скорость добавления новых фич и решения багов будет больше сокрости добавления новых багов. В этом случае понижается степень ответственности на ментейнеров - они просто переадресуют проблемы разработчику. Arch.
Формирование выпусков в Debian GNU/Linux
Основые дистрибутивы Debian.
Кто-нибудь смотрел Toy Story?
Каждый дистрибутив Debian носит имя персонажа из Toy Story.
- Sid. Эта игрушка в мультике постоянно разваливалась. Unstable. В данный репозиторий попадают все новые версии пакетов для первичного тестирования на совместимость с другими пакетами. Данный дистрибутив НЕ ПРЕДНАЗНАЧЕН для использования конечными пользователями.
- Testing. Имя данного дистрибутива “постоянно” меняется. Этот дистритрибутив используется для заморозки следующего стабильного выпуска. Сначала сюда попадают самые свежии версии из Sid (когда было показано, что они совместимы и работают). Тут более широкая общественность проверяет на наличие проблем в системе. Проблемы заносятся в специальный трекер. В определённый момент сюда разрешается добавлять только версии ПО с исправлениями.