Для чего нужен дистрибутив программы. Что такое дистрибутив и для чего он нужен

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

Как уже говорилось ранее, Access не позволяет сделать исполняемый файл, способный работать без Access. Но в то же время, Microsoft предлагает для решения проблемы воспользоваться пакетом Microsoft Office Developer , в состав которого входит и лицензия на распространение программы Microsoft Access runtime . Остановлюсь на этом подробнее.

Программа Microsoft Access runtime - это версия Access, которая позволяет пользователям выполнять, но не модифицировать приложение Access. Устанавливать Microsoft Access runtime вместо полной версии есть смысл только в том случае, когда нужна лицензионная чистота, а у клиента, у которого исполняется Ваша база, нет лицензии на Access. В этом случае придется покупать ODE (Оffice Developer Edition). Тогда вместе с его покупкой Вы получаете некоторые дополнительные инструменты и самое главное ПРАВО устанавливать клиентам вместе с разработанной вами базой еще и Run-time версии Аccess. В этом случае к клиенту не будет притензий по поводу незаконного использования Аccess. Иначе каждому клиенту необходимо купить лицензию MS AАccess.

В пакет ODE входит "создатель дистрибутивов" который включает в диистибутив Вашу MDB и Run-time версию. Все библиотеки необходимые для создания Run-time уже есть в полной версии Аccess (даже без ODE). Но тут есть одно НО (это для тех, кого беспокоит лицензионная "читота"):

Если Вы его не купите официально, то у клиентов все равно не будет права использовать даже Run-time версию.

Может возникнуть такая мысль: А что, если узнать какие файлы нужны Access для работы и включить их в установочный дистрибутив? Можно, но это не решает проблемы с лицензией. К тому же придется создавать достаточно сложную программу установки с проверкой имеющихся компонентов и установкой/регистрацией отсутсвующих. Причем в последнем случае можно при неумелых действиях даже разрушить систему.

Вообще, если рассматривать реальные ситуации с продажей приложений на Access, то лишь немногие разработчики (речь идет о России) действительно покупают лицензионные пакеты. Как правило это те, для кого "при определенном уровне развития бизнеса вопрос покупать - не покупать теряет свою актуальность" - или говоря проще, кто может себе позволить купить лицензионный пакет за 600$ - 1000$. Интересно потом выслушивать их чертыхания на форумах по поводу работы таких программ. Насколько я понял там те же самые "косяки", что и в пиратских версиях. Поэтому призывать Вас использовать только бесплатные или пиратские версии Office для Ваших программ я не буду, но и рекомендовать пользоваться лицензионным тоже не стал бы (см. выше).

Интересно, что полную версию Access можно запустить в runtime - режиме, задав в командной строке ключ /runtime. Например, создайте на рабочем столе ярлык, кликнете по нему правой кнопкой мыши, в появившемся диалоговом окне в поле объект напишите примерно так: (это для Office 2000 - XP, а для 2003 нужно будет исправить вместо Office10 - Office11)

"C:\Program Files\Microsoft Office\Office10\MSACCESS.EXE" "D: \Базы\Моя База.mdb"/runtime

а в поле «Рабочая папка»:

Теперь запустим приложение через этот ярлык. Откроется окно проекта Access, но ярлыка Access, а так же стандартных панелей инструментов уже там не будет. Это и есть runtime - режим.

Для начинающих разработчиков распространение приложений Access через пакет Microsoft Office Developer вряд ли приемлемо. Ведь он стоит денег, и не малых. Мы рассмотрим другой способ, при помощи бесплатного инсталлятора Inno Setup . Есть конечно и другие как платные, например InstallShield , так и бесплатные инсталляторы. Различаются они по удобству работы, размеру создаваемого дитсрибутива.

Inno Setup - свободно распространяемый инсталлятор для программ Windows. Английские версии появились ещё в 1997, теперь Inno Setup переводится на несколько языков, а инсталляторы может создавать более чем на 20 языках. Inno Setup превосходит многие коммерческие инсталляторы по возможностям, стабильности и размеру создаваемых файлов.

Основные характеристики:

  • программа может сравнивать информацию о версии файла
  • перемещать используемые файлы
  • регистрировать DLL/OCX/FNT/TLB и типовые библиотеки
  • инсталировать шрифты
  • проверяет, активны ли определенные программы
  • создание ярлыков быстрого доступа (например, через старт-меню или на рабочем столе)
  • осуществление записи в ini-файлы
  • встроенная машина для написания скриптов на языке Pascal
  • поддерживает многоязыковую инсталяцию
  • инсталяция и деинсталяция по умолчанию
  • весь код доступен (Borland Delphi 2.0-5.0)
  • защита пароля для setup
  • в случае отмены во время исполнения, все действия будут приведены в исходное состояние
  • поддерживает все 32-х битные версии Windows (95, 98, 2000, 2003, XP, Me, NT 4.0)
  • создает создание одного файла exe, что значительно облегчает процесс инсталяции Вашей программы
  • стандартный интерфейс Windows 2000/XP
  • ориентирован на пользователя (например, полный, минимальный, пользовательский вариант)
  • все инструменты для деинсталяции
  • инсталирование файлов: встроенная поддержка "deflate", bzip2, 7-zip LZMA файлы сжатия

Так же начиная с версии 2.0.6 Inno Setup включает в себя полную поддержку для MBCS. В более ранние версии последнее свойство не входит. А вот Web-инсталяцию не поддерживает.

Особенность создания инсталлятора в Inno Setup - это то, что инсталляторы создаются при помощи скриптов - простых текстовых файлов ASCII, напоминающих.INI файлы. Скрипты редактировать легче, чем, например, работать с интерфейсом Installshield. Скрипты имеют расширение ".iss" (inno setup script). В нём указываются все параметры инсталлятора, и при установке, программа ассоциирует себя с этими файлами. Скрипт разделен на секции, имена которых пишутся в квадратных скобках . Внутри секций существуют ключевые слова и указания, которые компилятор может читать и выполнять.

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

; -- Sample1.iss --
; Demonstrates copying 3 files and creating an icon.

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

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

Рассмотрим в кратце основные секции:

Секция

Значение

сoдержит указания по поведению инсталяционной рутины, а также, как это должно выглядеть. Ключевые слова AppName, AppVerName и DefaultDirName являются обязательными. Все остальные - по необходимости
Здесь содержатся файлы для setup
ярлыки (иконки)
Соотношение компонентов к типу инсталяционной рутины
разрешает создать новые пустые папки
делает записи в INI- файлы
первое действое при инсталяции, cистаксис соответствует секции
разрешает специфические изменения в тексте
делает запись в регист
выполняет другие программы после того как данные успешно были исталированы, но еще до того как будет закрыто диалоговое окно
разрешает дополнитекльные действия в setup
устанавливает тип setup-а
последняя операция при деинсталяции. Таким образом папки и/или файлы будут удалены
первая операция при деинсталяции. Систаксис соответствует секции
содержит информацию о языке. как правило, не используется

Inno Setup работает внутри скрипта с различными предопределеными константами, которые, как правило, содержат пути (path). Способ написания: {имя} . Некоторые константы, такие как {app} и {group} могут/должны быть предопределены пользователем. Тот, кто сам желает определить константы, должен обратиться к припроцессеру Алекса Якимова (Alex Yackimoff).

Вот основные константы Inno Setup:

константа

пример

{win} путь в директорию/папку Windows C:\Windows
{sys} путь в системную папку Windows, в частности папку System32 C:\Windows\System или C:\Windows\System32
{app} путь к собственной аппликации (программе)
{pf} путь к программной папке C:\Programme
{cf} путь к общим данным C:\Programme\Gemeinsame Dateien
{dao} cоответствует{cf}\Microsoft Shared\DAO C:\Programme\Gemeinsame Dateien\Microsoft Shared\DAO
{src} путь к папке инсталявионной рутины, в момент выполнения setup R:\
{group} группа программ для стартового меню

Итак, рассмотрим задачи, которые нужно решить (определим только минимальные). Наш инсталлятор должен сделать следующее:

Распаковать файлы в нужные места
Создать папку в каталоге программы (папка «Коп» - для хранения резервных копий базы)
Создать меню запуска приложения в Пуск - Все программы, а так же иконку на рабочем столе

Это необходимый минимум. Но, разумеется, это далеко не все возможности Inno Setup. Ведь не зря его используют многие разработчики. Но в данной статье я ограничусь только этим, желающие глубже изучить возможности программы могут обратиться к справочной системе. В Интернет есть множество ссылок как на программу, так и на переводы справки. Например, Inno Setup 5.1.6. и справку к нему Вы можете скачать здесь… Английский сайт программы http://www.innosetup.com

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


AppName=Моя программа
AppVerName=Моя программа. Версия 1.0.
AppPublisher=MyProgram, Inc.
AppPublisherURL=http://MyMySoft.ru/
AppSupportURL=http://MyMySoft.ru/
AppUpdatesURL=http://MyMySoft.ru/
DefaultDirName={pf}\MyProgram
DisableDirPage=no
DefaultGroupName=Моя программа
DisableProgramGroupPage=yes
LicenseFile=D:\Setup\license.txt
InfoAfterFile=D:\Setup\readme.txt
AlwaysCreateUninstallIcon=yes


Name: "desktopicon"; Description: "Создать ярлык на &Рабочем столе"; GroupDescription: "Дополнительные ярлыки:"


Source: "D:\Setup\Сервер.mdb"; DestDir: "{app}"; DestName: "Сервер.mdb";
Source: "D:\Setup\license.txt"; DestDir: "{app}";
Source: "D:\Setup\readme.txt"; DestDir: "{app}";
Source: "D:\Setup\Log.JPG"; DestDir: "{app}";
Source: "D:\Setup\Log.ico"; DestDir: "{app}";
Source: "D:\Setup\База.mdb"; DestDir: "{app}";


Filename: "{app}\MyProg.url"; Section: "InternetShortcut"; Key: "URL"; String: "http://MyMySoft.ru/"


Name: "{app}\Коп"


Name: "{group}\Моя программа"; Filename: "{app}\База.mdb" ;WorkingDir: "{app}";IconFilename:{app}\Log.ico
Name: "{group}\Сайт программы"; Filename: "{app}\MyProg.url"
Name: "{userdesktop}\Моя программа"; Filename: "{app}\База.mdb" ;WorkingDir: "{app}"; IconFilename:{app}\Log.ico;Tasks: desktopicon

Пример, как это все работает, Вы можете скачать ниже.

  • Обратиться в "Интерфейс" за дополнительной информацией/по вопросу приобретения продуктов

Файлы для загрузки

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

Так, что такое дистрибутив?

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

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

Да и вообще, зачем все эти сложности с дистрибутивами и кучей файлов?

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

И кстати говоря, дистрибутив и сама программа — это разные вещи.

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

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

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

Например, дистрибутив браузера Google Chrome весит почти 1 Мб и все остальные файлы скачиваются из интернета, а потом устанавливаются.

Еще пример. Существующие операционные системы, различные программы, типа Фотошоп или 3D Max имеют большое количество файлов – все это называется дистрибутивом. В этих папках со множеством файлов обычно присутствует файл Install.exe или Setup.exe , запускающий установщик дистрибутива.

Как запустить дистрибутив?

Как я уже говорил выше, дистрибутив имеет файл под названием Install.exe или Setup.exe. Запускаете его, и установка начнется.

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

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

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

Дистрибутив - это компьютерный термин, с которым постоянно сталкиваются пользователи, самостоятельно устанавливающие программы на свои компьютеры (от англ. Distribution - распределение, распространение).

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

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

Самораспаковывающийся архив - это файл с расширением.ехе, который помимо собственно архивных данных содержит еще и утилиту распаковки.

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

  1. Скопировать файл архива на жесткий диск.
  2. Щелкнуть его мышью (один или два раза - в зависимости от настроек интерфейса) и дождаться завершения распаковки.

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

Впрочем, архив с дистрибутивом может быть и не самораспаковывающимся. Зачастую файлы программы упаковываются в «обычный» архивный файл одного из популярных форматов: .гаг, .zip или.cab. У такого варианта есть один (но довольно существенный) недостаток: на компьютере потенциального пользователя предварительно должна быть установлена программа-архиватор, способная распаковать файл дистрибутива.

Если же для работы с программой требуется инсталляция, в состав дистрибутива обязательно входит исполняемый (.ехе) файл, в имени которого присутствует слово Setup (термин Setup в «программистском» английском имеет то же значение, что и термин Installation, и нередко используется в Качестве синонима последнего).

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

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

Наличие у Setup-файла значка того или иного типа зависит от инструмента, с помощью которого этот файл создавался. На сегодняшний день наиболее популярными среди этих инструментов являются три: InstaUShield (в различных редакциях) компании InstaUShield, Windows Installer компании Wise Solutions и Inno Setup (разработчик - Jordan Russell). Разумеется, разработчик программы вправе использовать для Setup-файла любой значок. Однако особого стремления к разнообразию в этом отношении у авторов программ не наблюдается.

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

В таких дистрибутивах Setup-файл выполняет лишь функции «установщика» и не содержит собственно файлов приложения.

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

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

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

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

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

Компьютерные программы бывают:

  • требующие установки;
  • портативные (которые установки не требуют).

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

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

Дистрибутив программы — можно скачивать, перемещать из папки в папку на компьютере, передавать через Интернет, предназначен для установки программы.

Установленная программа — в отличие от дистрибутива программы работает, то есть совершает то, для чего программа предназначена, но перемещать ее с места на место, или передавать через Интернет нельзя — она на новом месте работать перестанет.

Подготовка к установке компьютерной программы

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

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

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

  • Системные требования : какая операционная система у компьютера, какая оперативная память, сколько свободного места на диске. Найти эти параметры на своем компьютере Вы можете, если нажмете правой клавишей на папке Мой компьютер, а затем выберете Свойства. Второй вариант: заходите через кнопку Пуск на Панель управления, затем выбираете Свойства.
  • Другие необходимые сведения : позволяет ли разрешение экрана отображать графику (в основном касается игр, но иногда является причиной, по которой не работают и рабочие программы), есть ли устройство для чтения компакт-дисков (если программа записана на диске), имеется ли программа архиватор (если дистрибутив находится в архиве), если ее у Вас нет — необходимо поставить.

Если Вы компьютерную программу купили, то на коробке Вы увидите:

  • минимальные системные требования к компьютеру (программа будет работать, но не совсем в полную силу, на пределе возможностей компьютера);
  • рекомендуемые системные требования к компьютеру (программа будет работать в полную силу).

Где взять компьютерную программу?

Дистрибутив программы можно:

  • купить в магазине;
  • взять у друзей (на флешке или диске);
  • скачать в Интернете (у друзей или на сайтах).

Не забудьте скачанный дистрибутив программы проверить на отсутствие вирусов.

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

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

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

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

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

История возникновения дистрибутивов

Linux - ядро

В 1991 году Линус Торвальдс, финский студент, чрезвычайно увлёкся идеей написать совместимое с UNIX ядро (см рис 1) операционной системы для своего персонального компьютера с процессором ставшей очень широко распространённой архитектуры Intel 80386. Прототипом для будущего ядра стала операционная система MINIX: совместимая с UNIX операционная система для персональных компьютеров которая загружалась с дискет и умещалась в очень ограниченной в те времена памяти персонального компьютера. MINIX был создан Эндрю Таненбаумом в качестве учебной операционной системы, демонстрирующей архитектуру и возможности UNIX, но непригодной для полноценной работы с точки зрения программиста. Именно полноценное ядро для своего ПК и хотел сделать Линус Торвальдс. Название своему ядру он дал freax, но позже оно было изменено хозяином ftp сервера на Linux - гибрид имени создателя и слова UNIX.

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

Важнейшую роль в развитии Linux сыграли глобальные компьютерные сети Usenet и Internet. На самых ранних стадиях Линус Торвальдс обсуждал свою работу и возникающие трудности с другими разработчиками в телеконференции comp.os.minix в сети Usenet, посвящённой операционной системе MINIX. Ключевым решением Линуса стала публикация исходных текстов ещё малоработоспособной первой версии ядра под свободной лицензией GNU GPL. Благодаря этому и получавшей всё большее распространение сети Internet очень многие получили возможность самостоятельно компилировать и тестировать это ядро, участвовать в обсуждении и исправлении ошибок, а также присылать исправления и дополнения к исходным текстам Линуса. Теперь над ядром работал уже не один человек, разработка пошла быстрее и эффективнее.

В 1992 году версия ядра Linux достигла 0.95, а в 1994 году вышла версия 1.0, что свидетельствовало о том, что разработчики, наконец, сочли, что ядро в целом закончено и все ошибки (теоретически) исправлены. В настоящее время разработка ядра Linux - дело уже гораздо большего сообщества, чем во времена до версии 1.0. Изменилась и роль самого Линуса Торвальдса: теперь он не главный разработчик, а наиболее авторитетный член сообщества, по традиции оценивающий качество исходных текстов, которые должны быть включены в ядро, и дающий своё добро на их включение. Тем не менее, общая модель свободной разработки сообществом сохраняется.

Однако как нельзя сделать операционную систему без ядра, так и ядро будет бесполезно без утилит, которые использовали бы его возможности. Благодаря проекту GNU Линус Торвальдс сразу получил возможность использовать с Linux свободные утилиты: bash, компилятор gcc, tar, gzip и многие другие уже известные и широко используемые приложения, которые могли работать с его UNIX-совместимым ядром. Так Linux сразу попал в хорошее окружение и в сочетании с утилитами GNU представлял собой очень интересную среду для разработчиков программного обеспечения даже на самой ранней стадии своего развития. Принципиальным шагом вперёд было именно то, что из ядра Linux и утилит и приложений GNU впервые стало возможно сделать полностью свободную операционную систему, то есть работать с компьютером и, более того, разрабатывать новое программное обеспечение, пользуясь только свободным программным обеспечением. Идеал полностью некоммерческой разработки, сформулированный Столлманом, теперь мог быть воплощён в жизнь. Вскоре появлялись теоретические возможности воплощения идеала, но это не означало его немедленной практической реализации. Совместимость Linux и утилит GNU была обусловлена тем, что и то, и другое писалось с ориентацией на одни и те же стандарты и практику. Однако в рамках этой практики (то есть при наличии множества различных UNIX-систем) оставался большой простор для несовместимости и различных решений. Поэтому на начальном этапе разработки ядра каждое заработавшее на Linux приложение GNU было для Линуса очередным достижением. Первыми стали bash и gcc. Таким образом, сочетание GNU и Linux давало возможность создать свободную операционную систему, но само по себе ещё не составляло такой системы, потому что Linux и различные утилиты GNU оставались разрозненными программными продуктами, написанными разными людьми, не всегда принимавшими в расчёт то, что делали другие. Основным же свойством любой системы является согласованность её компонентов.

Возникновение дистрибутивов

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

Когда задача получить компьютер с постоянно работающей на нём системой Linux стала востребованной и довольно распространённой, разработчики в хельсинкском и техасском университетах создают собственные наборы дискет, с которых скомпилированное ядро и основные утилиты можно записать на жёсткий диск, после чего загружать операционную систему прямо с него. Эти наборы дискет стали первыми прототипами современных дистрибутивов Linux -комплектов программного обеспечения, на основе которых можно получить работающую операционную систему на своём компьютере. Нужно отметить, что в дистрибутив Linux с самого начала входили программные продукты GNU. На самом деле, всякий раз, когда говорится «операционная система Linux», подразумевается «ядро Linux и утилиты GNU». Фонд свободного ПО рекомендует называть это операционной системой Linux.

Однако скопировать все нужные программы на жёсткий диск ещё недостаточно, чтобы получить подходящую для нужд пользователя операционную среду (пусть даже это очень профессиональный пользователь). Поэтому первые наборы дискет можно только условно назвать дистрибутивами. Чтобы получить работающую операционную систему, требуются какие-то специальные средства установки и настройки программного обеспечения. Именно наличие таких средств и отличает современные дистрибутивы Linux. Другая важнейшая задача дистрибутива - регулярное обновление. Программное обеспечение, особенно свободное, - одна из самых быстро развивающихся областей, поэтому мало один раз установить Linux, нужно ещё регулярно его обновлять. Первым дистрибутивом в современном понимании, получившим широкое распространение, стал Slackware, созданный П. Фолькердингом. Он был широко известен пользователям Linux уже к 1994 году.

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

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

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

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

Практически одновременно с Red Hat появился проект Debian. Его задача была примерно той же - сделать целостный дистрибутив Linux и свободного программного обеспечения GNU, однако этот проект был задуман как принципиально некоммерческий, проводимый в жизнь сообществом разработчиков, нормы взаимодействия в котором полностью соответствовали бы идеалам свободного ПО. Сообщество разработчиков Debian - международное, участники которого взаимодействуют через Internet, а нормы взаимодействия между ними определяются специальными документами - полиси (англ. policy ).

Сообщество разработчиков не извлекает никакой прибыли от продажи Debian, его версии распространяются свободно, доступны в Интернет, могут распространяться и на твёрдых носителях (CD, DVD), но и в этом случае их цена редко сильно превышает стоимость носителя и наценку, окупающую затраты на издание. Первоначально разработка Debian спонсировалась Фондом свободного программного обеспечения. Адресатами дистрибутивов Debian всегда в первую очередь были профессиональные пользователи, так или иначе связанные с академической разработкой программного обеспечения, которые готовы читать документацию и собственными руками организовать нужный профиль системы, соответствующий именно их задачам. Ориентация на такую аудиторию предопределила некоторые тенденции развития Debian: в нём никогда не было обилия «простых» графических средств настройки среды, всевозможных «мастеров», однако всегда уделялось много внимания средствам последовательной и единообразной интеграции программного обеспечения в единую систему. Именно в Debian появился менеджер пакетов (APT). В настоящее время Debian - самый популярный дистрибутив Linux среди пользователей, являющихся профессионалами в области информационных технологий.

Всякий раз, когда свободное программное обеспечение оказывается востребованным, немедленно возникает множество альтернативных решений - так произошло и с дистрибутивами Linux. После 1995 года возникло (и продолжает возникать) огромное количество коммерческих компаний и свободных сообществ, которые ставят своей задачей подготовку и выпуск дистрибутивов Linux. У каждого из них - свои особенности, своя целевая аудитория, свои приоритеты. К настоящему времени на рынке дистрибутивов выделилось несколько лидеров, которые предлагают более или менее универсальные решения и наиболее широко известны и используются. Помимо уже названных Red Hat и Debian следует назвать в ряду дистрибутивов, ориентированных на рядового пользователя, немецкий SuSE и французский Mandriva (до 2005 года - Mandrake), среди адресованных специалистам - Gentoo. Но помимо «крупных» игроков на рынке дистрибутивов есть гораздо большее количество менее распространённых дистрибутивов. Теперь перед пользователем, желающим установить Linux, встаёт вопрос выбора дистрибутива. Критерии выбора - и задачи, которые предполагается решать с помощью Linux, и уровень подготовки пользователя, и технологии, и предстоящие контакты с тем сообществом, которое занимается разработкой дистрибутива.

Дистрибутив операционной системы

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

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

Программа установки позволяет также произвести первичную настройку системы.

Характеристики дистрибутивов:

политика дистрибутива

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

программа-загрузчик

инициализация аппаратной части, загрузка (обычно) урезанной версии системы, инициализация носителей

программа установки

выбор параметров установки и пакетов для установки

программа начальной конфигурации

начальное конфигурирование системы

программа управления пакетами

установка пакетов на работающую систему, обновление пакетов и т. д.

наборы пакетов

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

разработчик

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

сообщество

компетентность пользователей, взаимопомощь, обмен опытом среди пользователей

прочие характеристики

простота установки и безопасность, лёгкость настройки, длина жизни, стабильность развития дистрибутива, платность дистрибутива и т.д.