(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Инструменты ОС Linux для разработчиков приложений для ОС Windows. Часть 1. Общие положения и терминология

Источник: ibmcom

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

Введение

В ходе многочисленных занятий и тренингов, проводимых автором для профессиональных разработчиков ПО, стало заметно, что большую сложность в освоении представляет сама платформа (Windows, Linux), а не конкретные языки программирования (С, С++, Python) или библиотеки (Boost, Qt) для данной платформы. Поскольку значительная часть разработчиков начинала с написания приложений для операционной системы Windows, именно выполнение определённых действий в ОС Linux вызывает затруднения у программистов, впервые переходящих на эту платформу. И чтобы облегчить процесс "обживания" в новой среде, следует чётко выделить ключевые отличия работы в этих двух системах.

Стоит ли вообще разработчику ПО затрачивать усилия на освоение платформы Linux? Вне всяких сомнений, так как для этого существует достаточно веских оснований. Во-первых, профессиональное владение Linux значительно повышает востребованность на рынке труда, особенно в последние несколько лет, когда спрос на Linux-разработку возрос. Во-вторых, лёгкость ориентирования в программных инструментах Linux создаёт ту же ясность и относительно всех UNIX-подобных операционных систем, тем самым включая в "пространство приложения сил" и системы Solaris, FreeBSD, NetBSD и, в какой-то степени, MacOS. Наконец, некоторые программные действия в UNIX-подобных операционных системах выполняются логичнее и понятнее, чем в Windows. Именно поэтому обучение программированию во многих университетах мира ведётся в UNIX-среде. А уже осмысленные в UNIX-среде принципы расширяют понимание общих вопросов программирования и помогают перенести полученный опыт и на платформу Windows.

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

Терминология и общие принципы

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

Операционная система Linux принадлежит к семейству систем, называемых UNIX-подобными или POSIX-совместимыми.

Название POSIX (Portable Operating System Interface - мобильный (т.е. переносимый) интерфейс операционной системы), было предложено основателем Фонда свободного программного обеспечения (FSF) Ричард Столмэн.

POSIX - это набор из нескольких стандартов, которые периодически обновляются и расширяются. На сегодня POSIX является зарегистрированной торговой маркой комитета IEEE, поэтому официальные тексты стандартов можно приобрести только на коммерческой основе. Но есть и другой источник, который текстуально практически совпадает со стандартами POSIX: The Open Group Base Specifications Issue 7 (см. раздел "Ресурсы"). Если не придерживаться строгой формалистики, то можно считать, что несколько различных стандартов POSIX описывают две стороны таких систем:

  1. базовый набор и формат консольных команд, вызываемых с терминала для выполнения различных действий в системе (стандарт POSIX 2);
  2. прототипы функциональных вызовов (API) для выполнения системных и библиотечных вызовов из программного кода (стандарты POSIX 1, POSIX 1.b, POSIX 1.с, POSIX 1.j, UNIX 98 и другие);

Все POSIX-совместимые операционные системы имеют целый ряд общих признаков (помимо 2-ух пунктов, перечисленных выше):

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

К классу POSIX-совместимых систем принадлежит множество принципиально различающихся ОС: Linux, все ветви BSD (FreeBSD, NetBSD, OpenBSD), Sun/Oracle Solaris, QNX, Minix 3, Mac OS (с некоторыми оговорками) и т.д. Проще будет перечислить системы, непринадлежащие к семейству POSIX - это, например, все системы семейства MS Windows, Plan 9, Inferno, Blue Botle, .... Не все из POSIX операционных систем являются свободными и/или открытыми. Но постепенная миграция, в той или иной степени, в область open source становится общей тенденцией как для самих систем (свободное лицензирование Solaris, Minix 3, открытие программных кодов QNX), так и для огромного множества программных проектов для этих систем.

Какие преимущества обеспечивает совместимость со стандартами POSIX для ОС? Полный список преимуществ получился бы очень длинным, поэтому мы упомянем только самые значительные факторы:

  • простота переноса (портирования) программных проектов из одной такой ОС в другую - часто для этого достаточно выполнения ряда формальных действий, иногда требуется и некоторая изобретательность, но почти всегда это работа трудоёмкостью в несколько часов;
  • лёгкость, с которой программист "пересаживается" из одной такой системы в другую: период адаптации в совершенно незнакомой ОС может составлять всего несколько дней, не требуя практически никакого дополнительного обучения.

Linux в ряду POSIX

Сегодня ОС Linux - самая известная и распространённая POSIX-совместимая система. Весь программный код того, что в обиходе называется операционной системой Linux поступает из нескольких источников:

  • код ядра операционной системы Linux, который был создан, развивается и контролируется группой разработчиков под руководством Линуса Торвальдса;
  • код программных утилит, который во многом развивается сообществом GNU, и, в частности, под эгидой организации FSF (Free Software Foundation), основанной Ричардом Столменом;
  • прямые (или "по мотивам") заимствования из кода других открытых POSIX совместимых операционных систем, например, сетевой стек TCP/IP практически во всех таких системах заимствуется из NetBSD, (такие взаимные заимствования вполне легитимны в рамках лицензий свободных систем);
  • огромное множество самостоятельных целевых проектов, развиваемых группами независимых авторов или целыми сообществами, сложившимися вокруг крупных открытых проектов (Apache, Mozilla, Open Office,).

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

Характерной особенностью практически всех POSIX систем является то, что они не являются графическими (GUI) операционными системами (в отличие от ОС Windows). POSIX системы являются текстовыми и рассчитаны на выполнение консольных команд. Вся графическая часть этих систем является надстройкой пользовательского уровня, т.е. самостоятельным приложением (хотя и очень большим), принципиально не отличающимся от простейшего "Hello World!". Любая POSIX система может быть запущена вообще без графического интерфейса, исключительно в текстовом режиме.

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

X Window System

Графическая система X Window System (называемая ещё для простоты системой Х11 или просто Х) была разработана в Массачусетском Технологическом Институте (MIT) в 1984 году. Нынешняя (по состоянию на начало 2009 года) версия протокола - X11 - появилась в сентябре 1987. Эта система была создана ещё до появления таких названий как "Linux" или "GNU", и ни сообщество Linux, ни сообщество GNU к развитию своей графической системы не имеют никакого отношения.

Система Х11 распространяется на условиях лицензии MIT, ещё более "свободной", нежели лицензия GPL, под которой находится подавляющее большинство программного обеспечения Linux.

Реализации Х11 для свободных POSIX-систем (в том числе и Linux) развиваются в составе нескольких независимых проектов. Вплоть до 2004 года наиболее распространённым был проект XFree86. Однако в 2004 году XFree86 поменял условия лицензии, и другой проект - X.Org Server (который является ответвлением от XFree86, но со свободной лицензией) стал де-факто стандартом для реализаций X11.

Но если бы сегодня из операционной системы Linux исключить её "внешний" по всем признакам компонент - GUI окружение X11 с его оконными менеджерами, рабочими столами и великим множеством GUI-программ, то система Linux потеряла бы большую часть своих пользователей.

Дистрибутивы Linux

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

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

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

Основные отличительные черты дистрибутивов (дистрибьюторы называют заметно больше отличительных признаков, но они вытекают из этого набора основных):

  1. используемая пакетная система (.rpm, .deb, ...);
  2. принятые правила конфигурирования (начальная загрузка и система управления сервисами, каталог /etc и т.д.);
  3. отношение к программным проектам со "спорным" лицензированием и включение их в дистрибутивы (XFree86 или Xorg, Qt или KDE, средства работы с различными мультимедийными форматами и другое);

В порядке справки перечислим только самые популярные группы дистрибутивов (оценочные цифры числа дистрибутивов в группе собраны по состоянию на май 2011г.):

  • дистрибутив Debian и производные от него. Такие дистрибутивы используют формат пакетов .deb и инсталлятор пакетов dpkg, для них существуют и средства пакетного менеджмента, например, apt-get. В этом семействе около 98 дистрибутивов, а самые распространённые дистрибутивы этого семейства (не считая самого Debian): Knoppix & Ubuntu;
  • дистрибутивы происходящие от RedHat и использующие формат пакетов .rpm и одноимённый инсталлятор rpm. Под явным влиянием пакетного менеджмента Debian здесь возникли системы пакетного менеджмента - yum (в некоторых дистрибутивах urpmi). В этом семействе около 38 дистрибутивов, в частности: Fedora, CentOS, Scientific Linux, ALT Linux - дистрибутив официально принятый в системе российского всеобщего среднего образования.
  • Slackware-подобные дистрибутивы. Эти дистрибутивы в основном применяются для серверных целей, хотя сам дистрибутив Slackware поставляется изначально сконфигурированным для десктопа. В этих дистрибутивах принято использовать "ванильное ядро" (без патчей, произвольно вносимых дистрибьюторами). Традиционно, установка пакетов в этих дистрибутивах практиковалась непосредственно из архивов исходных кодов формата .tgz (без использования пакетной системы), но позже в них стала применяться пакетная система на базе менеджера pkgtools и пакетные инсталляторы slapt-get и slackpkg. Сторонники этих дистрибутивов считают, что это "самый чистый" Linux. В этом семействе около 11 дистрибутивов.
  • Gentoo: дистрибутив, ориентированный на энтузиастов и профессионалов, с собственной системой управления пакетами Portage. Gentoo ориентируется на компилирование из исходного кода, а не на распространение бинарных пакетов. В этом семействе около 6 дистрибутивов;
  • SUSE: один из самых популярных дистрибутивов в Европе, разработанный в Нюрнберге, Германия. Клон Slackware, очень далеко отошедший от начального прототипа. Он содержит уникальную конфигурационную утилиту YaST. В последних редакциях известен как OpenSUSE.

Это только несколько ключевых игроков из широкого набора существующих дистрибутивов.

Заключение

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

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



 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 22.09.2014 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft Windows Professional 10, Электронный ключ
Microsoft 365 Business Standard (corporate)
IBM DOMINO ENTERPRISE CLIENT ACCESS LICENSE AUTHORIZED USER ANNUAL SW SUBSCRIPTION & SUPPORT RENEWAL
Microsoft Office для дома и учебы 2019 (лицензия ESD)
IBM Domino Enterprise Server Processor Value Unit (PVU) Annual SW Subscription & Support Renewal
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Delphi - проблемы и решения
Windows и Office: новости и советы
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100