Использование бесплатного программного обеспечения в коммерческих версиях UNIX

В статье объясняется, как программист может повысить свою продуктивность и эффективно использовать бесплатное программное обеспечение, которое в настоящее время доступно для платформы UNIX®. Инструментальные средства GCC (GNU gcc и компиляторы gcc-c++), Emacs и даже основные утилиты, такие как BASH и файловые утилиты (ls, find и т.д.) начали свою жизнь как альтернативное бесплатное ПО для UNIX. В статье рассмотрены разработка некоторых из этих инструментальных средств, удобство и простота их использования, лицензирование, возможные проблемы. Показано, как лучше всего установить и интегрировать это бесплатное программное обеспечение в коммерческую версию операционной системы UNIX.

Дэвид Дугалл, консультант, независимый писатель

Дэвид Дугалл получил степень магистра вычислительной техники в университете Brigham Young (BYU) в 2001 г. Он работал системным администратором UNIX в течение шести лет в Колледже промышленности и технологии в BYU.



17.07.2008

Введение

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

GNU и GPL

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

Проект GNU, возглавляемый Ричардом Сталлманом, был начат в 1984 в надежде разработать свободную UNIX-подобную операционную систему. В то время исходный текст для почти всех утилит UNIX был недоступен из-за ограничений, которые налагали авторские права на UNIX. Сталлман оставил свою работу в Массачуссетском технологическом институте и начал писать программное обеспечение.

Сталлман намеревался сделать весь свой код свободным - free, от слова свобода (freedom), а не от слова бесплатный (free). Даже в начале дистрибутивы его кода не были бесплатными (как и многие дистрибутивы Linux сегодня), но как только покупался код, его можно было свободно использовать, менять и распространять. Это один из основных принципов лицензирования GNU GPL (GNU General Public License).

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

Можно найти большое количество лицензий для свободного ПО, поддерживающих широкий диапазон продуктов от Free and Open Source Software (FOSS) - от проектов, поддерживающих GNU, таких как GCC (GNU gcc и компиляторы gcc-c++) и Emacs до не-GNU проектов, таких как MySQL, Mozilla, Apache и больших приложений и сред, таких как Gnome, KDE, и OpenOffice.

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

Коммерческие версии против бесплатных вариантов

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

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

Рассмотрим два примера: tar и find. В общем, это одинаковые команды. И коммерческая, и GNU-версия tar cобирают архивный файл из нескольких файлов. Обе версии команды find ищут в каталогах файлы с определенными характеристиками. Однако у GNU-версий обеих команд гораздо больше параметров.

Преимущества GNU-версии

Например, GNU-версия tar может автоматически сжать выходной файл с помощью различных алгоритмов сжатия, используя параметры командной строки вместо добавления отдельного этапа для сжатия. Для этого она использует параметры -z, -Z, -j или очень гибкий параметр -use-compress-programm. Другая особенность GNU-версии tar состоит в том, что она может работать с длинными именами файла, с которыми большинство коммерческих версий tar не может работать даже при том, что в большинство коммерческих версий UNIX была включена способность поддерживать длинные имена файла в файловой системе.

Если рассмотреть GNU-версию find, у нее есть дополнительная опция, ограничивающая глубину поиска в дереве каталогов - параметр -maxdepth. Эта опция полезна, если требуется проанализировать один или два каталога, а не все дерево каталогов. У GNU-версии find также есть параметр -regex. Эта опция учитывает полные регулярные выражения, которые будут использоваться при поиске соответствующих имен файлов, а не только при простом соответствии шаблону (wildcard), поддерживаемом коммерческими версиями find.

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

Инсталляция инструментов GNU

Главная выгода от инсталляции инструментов GNU - это независимость от платформы. Это позволит стандартизировать tar-файлы, используя формат GNU и параметры GNU среди различных версий UNIX.

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

  • структуры каталогов, созданные и используемые при инсталляции;
  • соглашения по модернизации приложений;
  • влияние на переменную PATH;
  • выбор предпочтения между стандартными инструментами и GNU-версиями.

Создание структуры каталогов

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

Большинство приложений предполагает определенную структуру каталогов, где будут находиться файлы поддержки. Например, Emacs можно установить в каталог /usr/local/bin, но его файлы поддержки и шаблоны будут установлены в каталог /usr/local/share. Другие приложения требуют каталоги sbin, var и lib. Независимо от того, в какой основной каталог устанавливается приложение, оно все равно создает и использует другие каталоги. Как говорилось ранее, выбирать каталоги / или /usr не следует, так как можно переписать системные файлы.

Некоторые инструменты позволяют задать префикс в названии приложения, чтобы отличить их от коммерческого инструмента. Стандартный пример - tar. Можно установить версию GNU tar с gtar в качестве названия команды. Так можно инсталлировать инструмент в стандартный каталог, не переписав важных системных инструментов, однако используя любую из двух версий в зависимости от конкретных задач.

Инсталляция в отдельные каталоги и переименование инструментов - это два варианта установки дублирующихся инструментов без перезаписи важных системных утилит. У обоих методов есть преимущества. Эти варианты можно даже объединять, чтобы получить управляемость отдельного размещения с легким доступом к инструментам по разным названиям. Если установить инструменты в стандартные каталоги, то не потребуется вносить изменения в переменную PATH. Однако при установке инструментов с разными названиями возможно некоторое усложнение освоения этих инструментов, так как пользователям надо будет изучить несколько названий команды.

Если инсталляция инструментов производится в отдельный каталог, то нужно решить, будет ли эта структура каталогов общей среди нескольких приложений (такой /usr/local или такой /usr/contrib), или будет ли отдельная структура каталогов для каждого приложения (такой /opt/perl или такой /opt/find). Во многих случаях желательно использовать различные каталоги для различных версий тех же самых приложений. Хранение приложений в отдельных каталогах может сделать модернизацию и сопровождение легче, так как все файлы определенного инструмента находятся в одном каталоге.

Обеспечение ссылок на дополнительные каталоги

Можно добавить все дополнительные каталоги к переменной PATH, или использовать стандартные каталоги и обеспечить ссылки на дополнительные каталоги. Таким способом различия будут скрыты от конечного пользователя. Управлять пакетами также просто. Например, можно установить Samba в /opt/samba-3.0.21a и затем создать символьную ссылку /opt/samba на /opt/samba-3.0.21a. Тогда в каталогах /usr/local/bin и /usr/local/sbin можно создать ссылки на /opt/samba/bin/smbclient, /opt/samba/sbin/smbd и т.д., как показано в листинге 1.

Листинг 1. Содержимое каталога, показывающее возможные символьные ссылки для приложений
#ls -l /opt
lrwxrwxrwx    1 root root    5 Jan 19 14:34 samba -> samba-3.0.21a
drwxr-xr-x    9 root root  216 Aug 17 16:12 samba-3.0.14a
drwxr-xr-x    9 root root  216 Jan 19 14:30 samba-3.0.21a
lrwxrwxrwx    1 root root    7 Aug 23  2004 mozilla -> mozilla-1.7.2
drwxr-xr-x   10 root root 1696 Feb 11  2004 mozilla-1.4
drwxr-xr-x   11 root root 1352 Aug 23  2004 mozilla-1.7.2

#ls -l /usr/local/bin/smb*
lrwxrwxrwx    1 root root   24 Aug 16 16:02 smbclient -> /opt/samba/bin/smbclient
lrwxrwxrwx    1 root root   24 Aug 16 16:03 smbpasswd -> /opt/samba/bin/smbpasswd
lrwxrwxrwx    1 root root   21 Aug 16 16:02 smbtar -> /opt/samba/bin/smbtar

Вначале этот подход кажется сложным из-за большого числа уровней, но процесс создания ссылки может быть автоматизирован сценарием, так как ссылки меняются не очень часто. Выгода этого метода в том, что когда приложение должно быть модернизировано, например, необходимо установить новую версию Samba, ее можно установить в новый каталог, такой как /opt/samba-3.0.22. Тогда все, что потребуется сделать, это изменить ссылку /opt/samba, чтобы она указывала на этот новый каталог. Это также позволяет сохранить старые версии в случае, если возникнет серьезный сбой и потребуется перейти на старую версию. Перейти на более старую версию, используя общий каталог, крайне сложно.

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

Наконец, некоторые пользователи, которые хотят интегрировать инструментальные средства FOSS в собственную среду, могут и не быть администраторами. Часто они не знают, как действовать, потому что инсталляция стремится установить программу в общий каталог системы. Решение идентично упомянутой выше процедуре, только нужно использовать структуру каталогов внутри домашнего каталога пользователя, который можно менять. Можно создать папку с новой структурой каталогов /lib, /bin, /sbin и установить приложения в них. Если добавить эти каталоги к переменной $PATH, то не будет никаких отличий от случая, когда системный администратор инсталлирует программы в общие папки.


Распространение в виде двоичных файлов

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

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

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

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

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

Если отсутствуют какие-либо уникальные требования, двоичные дистрибутивы ,вероятно, будут лучшим вариантом.


Резюме

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

Ресурсы

Научиться

Получить продукты и технологии

  • IBM trial software: ознакомительные версии программного обеспечения для разработчиков, которые можно загрузить прямо со страницы сообщества developerWorks.(EN)

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


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

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



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

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=AIX и UNIX
ArticleID=321685
ArticleTitle=Использование бесплатного программного обеспечения в коммерческих версиях UNIX
publish-date=07172008