Распространение программ в виде пакетов сообщение

Обновлено: 19.05.2024

Архив номеров / 2017 / Выпуск №7-8 (176-177) / Распространение ПО в Linux: контейнеры или пакеты?

Распространение ПО в Linux:
контейнеры или пакеты?

Процедура распространения и установки приложений для Linux посредством пакетов с прекомпилированными программами традиционно отличала эту систему от альтернатив. Внесет ли контейнерная виртуализация серьезные изменения вэтот механизм?

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

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

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

Установив себе несколько подобных программ, можно обнаружить в разных директориях системы копии одних и тех же библиотек и других компонентов, которые при этом входят и в состав самого дистрибутива. Попытки решить эту проблему за счет стандартизации (в частности, в рамках Linux Standard Base) особым успехом не увенчались – на практике привести сотни дистрибутивов к некоторому общему знаменателю оказалось практически не реально.

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

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

Установка в обход пакетных менеджеров

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

Наиболее прямолинейный способ развернуть приложение без участия менеджера пакетов – это сделать для него отдельную программу установки. Можно обойтись написанием собственных скриптов установки (это вполне приемлемо, если установка сводится к копированию файлов в нужные места системы), а можно воспользоваться и чем-то готовым – например, более десяти лет назад небезызвестный инструментарий InstallShield предлагал версию под Linux [1]. Назвать этот подход популярным на сегодняшний день нельзя – даже коммерческие разработчики предпочитают готовить пакеты в формате RPM и Deb.

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

Одной из наиболее старых и в то же время активных и популярных реализаций этого сценария является AppImage, появившаяся в 2004 году под именем klik. Формат распространения приложений в AppImage подразумевает упаковку всех нужных файлов в ISO-образ и добавление к этому образу небольшой среды исполнения, которая при запуске программы в формате AppImage смонтирует образ ISO и запустит непосредственно приложение. Такой путь не требует каких-либо изменений в файлах ОС и позволяет использовать AppImage обычным пользователям без привилегий root.

Для домашнего использования отсутствие централизованного управления вряд ли критично, но вот для системного администратора, обслуживающего парк машин, подобная активность пользователей по самостоятельному управлению ПОможет обернуться кошмаром. Если же администратор сам захочет устанавливать на подшефные машины программы в формате AppImage или схожих, то ему придется самостоятельно заботиться об их доставке и обновлении с помощью дополнительных средств – например, систем управления конфигурацией наподобие Puppet или Ansible.

Наконец, инструменты типа AppImage сконцентрированы на процессе доставки приложения пользователю и практически никак не затрагивают вопросы безопасности. Время от времени появляются предложения наподобие запуска приложений Listaller в отдельных песочницах, но до готовых к использованию реализаций дело доходит редко. И именно дополнительная изоляция приложений друг от друга и от ОС – это то радикальное улучшение, которое может предложить контейнерная виртуализация.

  • Для учеников 1-11 классов и дошкольников
  • Бесплатные сертификаты учителям и участникам

Описание презентации по отдельным слайдам:

Способы распространения программ Коммерческое ПО (commercial ware): «коробоч.

Способы распространения программ Бесплатное ПО:условно-бесплатные, ознакомите.

Способы распространения программ
Бесплатное ПО:
условно-бесплатные, ознакомительные (shareware, или evaluation) версии программ, например, с ограниченным календарным временем использования;

пробные (trailware) версии, как правило, с ограниченным числом запуска программ;

условно-платные (donation ware) версии, предполагающие небольшие добровольные денежные взносы;

рекламно-оплаченные (ad-ware) версии с уже оплаченными рекламными вставками;

свободные (freeware) версии программ.

Ещё термины:Проприета́рное программное обеспечение (англ., proprietary softwa.

Ещё термины:
Проприета́рное программное обеспечение (англ., proprietary software; proprietary — частное, патентованное, в составе собственности) - ПО, являющееся частной собственностью авторов или правообладателей и не удовлетворяющее критериям свободного ПО (наличия открытого программного кода недостаточно).

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

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

Рассматриваемое понятие не связано с понятием коммерческого программного обеспечения.

Ещё термины:Открытое программное обеспечение (англ., open source software) —.

Ещё термины:
Открытое программное обеспечение (англ., open source software) — программное обеспечение с открытым исходным кодом. Исходный код таких программ доступен для просмотра, изучения и изменения, что позволяет пользователю принять участие в доработке самой открытой программы, использовать код для создания новых программ и исправления в них ошибок — через заимствование исходного кода (если это позволяет лицензия), или через изучение использованных алгоритмов, структур данных, технологий, методик и интерфейсов (поскольку исходный код может существенно дополнять документацию, а при отсутствии таковой сам служит документацией).

Ещё термины:Spyware (шпионское программное обеспечение) — программное обеспеч.

Ещё термины:
Spyware (шпионское программное обеспечение) — программное обеспечение, осуществляющее деятельность по сбору информации о конфигурации компьютера, деятельности пользователя и любой другой конфиденциальной информации без согласия самого пользователя.

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

В дальнейшем, вся собранная таким образом информация отправляется разработчику шпионского программного обеспечения.

Ещё термины:Service Pack (сокращенно, SP) - пакет обновления, т.е. набор обно.

Ещё термины:
Service Pack (сокращенно, SP) - пакет обновления, т.е. набор обновлений, исправлений и/или улучшений компьютерной программы, поставляемый в виде единого установочного пакета. Пакеты обновления обычно нумеруются, и кратко указываются как SP1, SP2, SP3 и т.д. Это указывает на то, что они могут содержать помимо исправлений ошибок новые возможности для программ, как например, в случае с SP2 для Windows XP.
Пакет обновления может быть "разностным", т.е. содержащим только те обновления, которых не было в предыдущих пакетах обновления, или наоборот, "суммарным", т.е. включать в себя содержимое всех предыдущих обновлений. В случае с продуктами корпорации Microsoft разностные обновления обычно называются "выпусками обновления" (service release).

Ещё термины:Плаги́н (англ., plug-in) — независимо компилируемый программный м.

Запла́тка, или па́тч (англ., patch) — отдельно поставляемая программа, используемая для устранения проблем в программном обеспечении или изменения его функционала. Сюда входит исправление ошибок, изменение внешнего вида, улучшение эргономичности или производительности программ.

Обратите внимание на:ПРАВИТЕЛЬСТВО РОССИЙСКОЙ ФЕДЕРАЦИИ РАСПОРЯЖЕНИЕ от 17 де.

Обратите внимание на:
ПРАВИТЕЛЬСТВО РОССИЙСКОЙ ФЕДЕРАЦИИ
РАСПОРЯЖЕНИЕ
от 17 декабря 2010 г. N 2299-р

1. Утвердить прилагаемый план перехода федеральных органов исполнительной власти и федеральных бюджетных учреждений на использование свободного программного обеспечения на 2011 - 2015 годы.
2. Федеральным органам исполнительной власти обеспечить выполнение мероприятий в соответствии с планом, утвержденным настоящим распоряжением, в пределах установленной Правительством Российской Федерации предельной численности их работников и бюджетных ассигнований, предусмотренных им в федеральном бюджете на выполнение полномочий в установленной сфере деятельности.

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

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

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

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

Прикладное программное обеспечение

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

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

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

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

Мультимедиа. Приложения, предназначенные для работы со звуковыми и видеофайлами. К ним относятся всевозможные плееры, программы для записи файлов на оптические носители, аудио/видео редакторы и программы для монтажа, конверторы и кодировщики между различными форматами и другие.

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

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

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

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

Системное программное обеспечение

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

Самой главной системной программой можно с уверенностью назвать операционную систему. Именно она является главным посредником между компьютерной начинкой и всеми остальными приложениями.

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

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

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

Виды распространения и коммерческий статус программ

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

Бесплатные программы (freeware).

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

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

Бесплатные программы с рекламой (adware).

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

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

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

Так же, вы можете столкнуться с тем, что после установки приложения у вас изменится стартовая страница в браузере. То есть при запуске обозревателя у вас первым делом будет открываться страница с рекламой. Хотя и это легко поправимо.

Не смотря на всю привлекательность такого вида программ, относитесь к ним с осторожностью, так как рекламные модули могут не только направлять вас на вредоносные сайты, но красть ваши конфиденциальные данные.

Условно-бесплатные программы (shareware и trial).

Наверное, это самый популярный способ распространения коммерческих программных продуктов.

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

Так же возможны ситуации, когда приложение продолжает сохранять полную работоспособность, но при этом время от времени будет назойливо напоминать вам, что пора бы заплатить. Например, так происходит в популярных архиваторе WinRar и файловом менеджере TotalCommander.

Коммерческие программы.

Наверное, единственными приложениями, за которые вам придется выкладывать деньги сразу, являются компьютерные игры. Хотя многие из них все же имеют бесплатные демонстрационные версии.

Комплекты для обновления (upgrade).

Большинство успешных коммерческих программных проектов развивается и совершенствуется не один год, из-за чего приложение или пакет приложений может иметь множество различных версий. Покупая какую-либо программу, вы приобретаете права на использование только ее текущей версии на момент покупки и все обновления для нее. Если же вы захотите впоследствии использовать более новую версию приложения, придется платить заново.

Правда, при этом, выкладывать деньги за полную версию программы совершенно не обязательно. В большинстве случаев можно приобрести так называемый комплект для обновления, который устанавливается поверх старой версии и стоит на 30-50% меньше.

Формы распространения программ

Напоследок, давайте рассмотрим, в каких формах обычно разработчики распространяют свое программное обеспечение.

Коробочные версии.

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

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

ОЕМ-версии.

Slim-версии.

Данная форма распространения программ является чисто российским ноу-хау. Из-за низкого спроса на красочные, но при этом дорогие коробочные версии, многие разработчики стали выпускать свои продукты в максимально аскетичном оформлении – компакт-диск, упакованный в пластиковую коробку с цветной обложкой. Как правило, в таком виде распространяются недорогие программы для дома, наборы утилит и компьютерные игры.

Электронные версии.

На сегодняшний день эта самая популярная и выгодная форма приобретения программных продуктов. Вы скачиваете с сайта разработчика в любой момент дистрибутив нужного приложения и устанавливаете его себе на компьютер.

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

Еще одним неоспоримым преимуществом покупки программ в электронном виде является цена. Она в любом случае будет ниже, чем у коробочной или даже slim-версии.

Так же учтите, что на просторах интернета существует множество огромных электронных магазинов софта, ассортимент которых, не идет ни в какой сравнение с обычным компьютерным супермаркетом.

Заключение

Начинающим и неискушенным пользователям, первое время, довольно сложно ориентироваться и тем более находить нужные и полезные приложения среди того многообразия, которое предлагают авторы и разработчики программного обеспечения. Что бы облегчить вам поиск нужного программного продукта дадим несколько советов.

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

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

И помните, что загрузка любого программного обеспечения именно с веб-ресурсов производителей или авторов ПО, не только гарантирует подлинность скаченного материала, но и его безопасность.

Эта глава посвящена вопросу о том, как проявлять уважение к конечному пользователю своей программы. Если у вас конечного пользователя нет или вы не хотите казаться вежливым, можете пропустить ее.

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

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

Один из самых замечательных имеющихся инструментов — программа

— не единственный инструмент документирования для Ruby: его предшественником является программа RDTOOL. Но во многих отношениях

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

Тем самым вы можете получить более или менее полезный HTML-файл из исходного текста, не содержащего никакой внутренней документации. Если раньше не пробовали, попробуйте сейчас.

Но это еще не все.

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

Если просто вызвать

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

В листинге 17.1 приведен простой (почти ничего не содержащий) исходный файл. Все определенные в нем методы пусты. Но

Листинг 17.1. Простой исходный файл


Рис. 17.1. Выходной файл, формируемый программой RDoc по исходному тексту в листинге 17.1

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

Кроме того, когда программа RDoc распознает URL, она помещает в выходной файл гиперссылку. По умолчанию текст гиперссылки совпадает с самим URL, но это можно изменить. Если перед URL поместить в фигурных скобках какой-нибудь описательный текст, то он и станет содержимым ссылки. Если текст состоит из одного слова, фигурные скобки можно опустить.

Листинг 17.2. Пример разметки для RDoc


Рис. 17.2. Результат работы RDoc для примера из листинга 17.2

В листинге 17.2 приведено несколько правил разбора документов, принятых в

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

Внутри блока комментариев, начинающегося со знака

(а следующая такая строка вновь включает копирование). Ведь не все комментарии должны быть частью пользовательской документации.

Отметим еще, что если используются маркеры

проигнорирует весь блок целиком. Это сделано во избежание конфликтов с более старыми инструментами, в которых такие блоки активно использовались.

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

Одним из самых важных является тег

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

Имеется также модификатор

с прямо противоположным смыслом. Он включает документацию для фрагментов, которые иначе не были бы документированы.

Если вы хотите дать осмысленные имена параметрам

Некоторые теги используются только внутри блока комментариев, например:

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

К счастью, в Ruby все это не так болезненно, как в некоторых других языках и средах. Вы обязательно должны знать о библиотеке

даже в gem-пакет (упрощая задачу перепакетирования, например для создания Linux-дистрибутива). Решать вам.

Половина дела будет сделана, если вы скопируете все файлы в нужные места. Вы должны организовать свой архив простым и разумным образом (создав каталоги с предопределенными именами).

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

Пустые каталоги можно опускать. Ниже описано назначение каждого каталога:

— имя расширения (на том же уровне могут располагаться и другие расширения); в каталоге каждого расширения должен находиться либо файл

В общем случае эти файлы никак не обрабатываются, а просто копируются в нужное место. Но для специализированной настройки предусмотрены места подключения к каждому этапу процесса.

Три основных этапа — это

вызываемые пользователем именно в таком порядке (на последнем шаге могут потребоваться полномочия root или, по крайней мере, выполнение

Для подключения к этапу вы просто помещаете в нужный каталог написанную на Ruby программу с известным именем. Например, если необходимо перед обработкой сделать что-то нестандартное с файлом

Имя файла формируется следующим образом: префикс

есть понятия каталога исходных файлов, или исходного каталога (source directory) и каталога объектных файлов, или объектного каталога (object directory). Как правило, вы должны читать из исходного каталога и записывать в текущий каталог.

На верхнем уровне может находиться файл

— определяет конфигурационный параметр, являющийся путем; задаются имя и значение по умолчанию. При вызове с флагом --help эта информация печатается;

Дополнительную информацию по этим API можно найти в актуальной онлайновой документации.

Идея и название системы RubyGems принадлежат Райану Ливенгуду (Ryan Leavengood), но текущая реализация зародилась на ночной вечеринке, состоявшейся после Международной конференции по Ruby 2003 года в Остине, штат Техас. Первый вариант кода написали Чэд Фаулер (Chad Fowler), Джим Вайрих (Jim Weirich), Дэвид Алан Блэк (David Alan Black), Рич Килмер (Rich Kilmer) и Пол Брэннен (Paul Brannan). С тех пор к ним присоединились и другие; особо стоит отметить Эрика Ходеля (Eric Hodel) и Райана Дэвиса (Ryan Davis).

В настоящее время RubyGems, наверное, самая распространенная система создания пакетов, хотя до сих пор не включена в дистрибутив. Я полагаю, что после устранения нескольких мелких огрехов она станет настоящим стандартом для Ruby.

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

• простота установки и удаления;

• поддержка нескольких версий;

• механизм запроса и поиска пакетов.

Для построения gem-пакета нужно начать с создания предопределенного дерева каталогов (примерно такого же, как для

). На верхнем уровне неплохо поместить файл README, в который включаются информация об авторе и способе связи с ним, авторские права, лицензионное соглашение, перечень известных ошибок и т.д. Если вы напишете этот файл в формате

Для построения gem-пакета необходимо создать его спецификацию (gemspec). Это один из тех случаев, когда стирается грань между кодом и данными. Спецификация - это просто исполняемый файл на языке Ruby:

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

Имея файл спецификации, можно создать gem-пакет двумя способами. Во-первых, можно просто выполнить файл (в конце концов, это ведь обычная программа на Ruby). Тогда в текущем каталоге будет создан пакет с указанным именем. Альтернативно можно воспользоваться командой

Созданный gem-пакет можно распространять через Web или любым другим способом. Я настоятельно рекомендую для управления проектом пользоваться сайтом RubyForge. Если загруженный на него архив содержит файл спецификации, то пакет будет создан автоматически. В следующем разделе мы поговорим о сайте RubyForge и архиве приложений Ruby (RAA).

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

Впрочем, следует отметить, что классификация не всегда полна и в ряде случаев не ортогональна. Если точной подрубрики для вашего проекта еще нет, пойдите на компромисс или создайте новую подрубрику (но осторожно).

RubyForge поддерживает списки рассылки и другие подобные сервисы. Если в вашем проекте заинтересовано много людей, будь то пользователи или разработчики, то такие механизмы помогут им контактировать друг с другом.

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

У сайта RubyForge есть приятная особенность: если загруженный пакет содержит спецификацию gem-пакета, этот пакет будет создан и предложен для скачивания автоматически. Вот так и должно работать все в этом мире!

Для доступа к своему проекту на RubyForge, как правило, достаточно воспользоваться программой

и скопировать файлы в точно определенные места. Для многих операций, скажем управления списками рассылки, имеется Web-интерфейс.

В этой главе мы изучили основы документирования проектов с помощью инструмента

Наконец, мы бегло рассмотрели сайт RubyForge и архив приложений Ruby (RAA), которые позволяют оповещать о созданном программном обеспечении и распространять его. В следующей главе мы снова переключим передачу и поговорим об интересной и сложной предметной области: программировании для сетей и, в частности, Web.

Читайте также: