Rambler's Top100
Статьи
Алексей НОВОДВОРСКИЙ  14 июня 2016

Сизифов труд, или Зачем свободному ПО репозитарий

Эта тема явно недооценена потенциальными потребителями СПО. 

Алексей Новодворский, генеральный директор, «Базальт СПО»

Между тем она имеет первостепенное значение для взвешенного выбора операционной системы заказчиком, для продвижения на рынок разработчиком ПО своего продукта, для создателей отечественных процессоров и аппаратных платформ, для производителей вычислительной техники, для государства как основного заказчика импортозамещения в сфере ИТ. Я говорю о репозитории.

Что такое репозиторий

Репозиторий свободного программного обеспечения – сложный инфраструктурный продукт, обеспечивающий жизненный цикл различных дистрибутивных решений*, в том числе их разработку, сборку пакетов и комплектов, тестирование, обновление и документирование.

С точки зрения пользователя репозиторий — это хранилище пакетов программ, с помощью которого он регулярно обновляет настроенную систему, а также устанавливает дополнительное прикладное и системное ПО. И все это — с сохранением целостности системы. Последнее обстоятельство, а также применение единого механизма для управления любыми программными компонентами резко упрощают администрирование и использование компьютерных систем.

Разработчик же видит репозиторий иначе. Для него это целостная инфраструктура разработки и тестирования операционных систем, включающая помимо системного ПО любые программы пользовательского и серверного назначения («репозиторий пакетов»).

Основная задача репозитория — интеграция разных пакетов программ в единую систему. Объектом хранения в репозиториях выступают пакеты программ, где каждое наименование ПО (будь то ядро операционной системы, служебная библиотека, текстовый редактор, сервер для обслуживания электронных сообщений или медиапроигрыватель) представлено в виде отдельного пакета.

Репозиторий — выход из «ада зависимостей»

Появление концепции репозитория и создание всего комплекса поддерживающих технологий — итог долгой эволюции, большое достижение и преимущество мира свободного ПО.

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

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

С целью облегчения разработки систем и повышения уровня повторного использования программного кода компоненты стали разбивать на множество небольших функциональных модулей, каждый их которых выполнял несколько функций. При этом работоспособность каждого модуля в определенной степени стала зависеть от других модулей, так как при вызове он, в свою очередь, обращался к внешним функциям и процедурам. Появилось понятие зависимости — связи одного программного модуля с другим. Изменения в одном модуле требовали соответствующего изменения в тех модулях, с которыми данный модуль связывала зависимость. Со временем усложнение этих зависимостей привело к тому, что конфликт зависимостей стал обычным делом, и единственным надежным выходом из него стала полная переустановка и повторная настойка операционной системы.

Но и процесс установки программного обеспечения сторонних производителей также существенно усложнился. За то время, пока создавались прикладные программы, производители операционных систем успевали внести обновления в системные файлы и для успешного исполнения устанавливаемого ПО приходилось перезаписывать некоторые системные библиотеки, что в свою очередь, приводило к неработоспособности отдельных компонентов, или операционной системы в целом. Возникла проблема «ада зависимостей» (Dependency hell).

Впервые с проблемой «ада зависимостей» серьезно столкнулись разработчики свободного программного обеспечения для операционной системы GNU/Linux, и они же нашли решение, позволяющее постоянно обеспечивать целостность системы.

На начальных этапах развития в операционной системе GNU/Linux применялся традиционный для unix-подобных систем способ установки программного обеспечения. Учитывая, что исходные тексты программ были доступны, прикладное ПО собиралось на каждой машине, что в значительной степени смягчало проблему конфликта зависимостей. Однако этот способ распространения ПО требовал высокого уровня подготовки пользователей. Практически каждому персональному компьютеру нужен был квалифицированный системный администратор, что существенно снижало широту применения подобных решений.

Требовалось перейти к распространению ПО в бинарном виде. Иными словами, программное обеспечение собиралось на компьютере разработчика и затем могло быть многократно установлено на других компьютерах, причем достаточно просто. Вот здесь и возникла проблема «ада зависимостей», существенно усугубляющаяся тем, что unix-подобные системы традиционно содержат очень большее количество мелких программных модулей. Отсутствие единого центра разработки, наличие множества независимых решений также осложняло и без того непростую ситуацию.

Первыми решение нашли разработчики дистрибутива Debian, унифицировавшие механизм добавления и удаления программного обеспечения в операционную систему. Ими была предложена концепция программного пакета и система управления пакетами (менеджер пакетов) dpkg. В последующем компания Red Hat создала свой менеджер пакетов RPM, имеющий сегодня широкое распространение (особенно в корпоративной среде). Так появились репозитории.

Процесс разработки репозитория непрерывен и цикличен. Новые пакеты попадают в его ежедневно меняющееся «нестабильное» хранилище. После выполнения задач актуализации и обеспечения заданной функциональности этой части репозитория, а также всестороннего тестирования, руководители разработки фиксируют его состояние, создавая срез (бранч), на основе которого далее создаются и обновляются различные по функциональности и оформлению стабильные поддерживаемые программные продукты. При этом «нестабильное» хранилище пакетов продолжает развиваться на пути к новым стабильным бранчам.

Этот «бесконечный» непрерывный процесс напоминает труд Сизифа, который, как известно, после достижения своей цели, начинал свою работу заново. Философское осмысление «Сизифова труда» предложил в своем эссе «Миф о Сизифе» Альбер Камю. Именно в этом смысле назван проект Sisyphus, начало которому в 2000 году положили разработчики из России, Украины, Беларуси и других стран.

Сизиф, российский репозиторий и импортозамещение

Создание нового  проекта, в данном случае инфраструктурного, всегда обусловлено желанием разработчиков реализовать свои имеющиеся разработки, воплотить в жизнь новые идеи и принципы и, наконец, обеспечить независимость принятия решений о принципиальных направлениях разработки. Разработчики Sisyphus сделали акцент на строгом контроле зависимостей, обеспечении безопасности сборки и работы в системе, хорошей интернационализации и локализации. Все разработки проекта полностью открыты и свободны. При этом несколько сотен участников проекта тесно взаимодействуют с международным сообществом, участвуя и в крупнейших разработках СПО.

Сегодня репозиторий проекта насчитывает свыше 17 тысяч исходных пакетов программ, им созданы десятки дистрибутивных решений, предназначенных для дома, учебных и медицинских учреждений, органов власти и местного самоуправления, крупных промышленных предприятий. В настоящее время сформирован новый стабильный бранч – «Восьмая платформа», на основе которой завершается подготовка целого ряда дистрибутивных решений разной направленности.

Независимость принятия решений в рамках проекта от каких-либо зарубежных организаций позволяет обеспечивать функциональность, необходимую для отечественных пользователей и разработчиков. Большое внимание уделяется совместимости с различными российскими разработками, отрытыми и закрытыми, в том числе в области защиты информации, а также выполнению требований российского законодательства и регуляторов. Кроме того, в рамках программы импортозамещения обеспечивается совместимость и миграция инфраструктурных систем — в том числе на основе Microsoft Active Directory и Exchange. Другое важнейшее направление, где Sisyphus имеет очевидные существенные преимущества перед зарубежными репозиториями, — это интеграция новых аппаратных платформ, в первую очередь отечественных, таких как «Эльбрус» и «Байкал».

Проект Sisyphus открыт для новых участников, — программистов, документаторов, а также фирм — разработчиков комплексных решений и производителей программного обеспечения. На него могут ориентироваться и компании-разработчики российских дистрибутивов ОС Linux.

Алексей Новодворский, генеральный директор, «Базальт СПО»

В статье использованы материалы проекта Sisyphus

____________________________________________________

* Дистрибутивное решение — это ориентированная на конкретную область применения конкретная версия операционной системы (на основе ядра Linux) или специализированной сборки ПО для каких-либо цифровых устройств. 

Заметили неточность или опечатку в тексте? Выделите её мышкой и нажмите: Ctrl + Enter. Спасибо!