div.main {margin-left: 20pt; margin-right: 20pt} Пристальный взгляд на
Linux
За все время, что я веду рубрику, уже несколько раз я писал
о достоинствах и недостатках Linux. Правда, описание было немногословным и не
давало наиболее полного представления об этой операционной системе. Собрав всю
доступную информацию на эту тему, я представляю вам обзорную статью
"Пристальный взгляд на Linux". Ответов на вопрос "А что же такое
Linux?" можно найти множество. Очень многие считают, что Linux — это только
ядро. Но одно только ядро бесполезно для пользователя. Ядро, несомненно,
основа операционной системы Linux, но пользователю все время приходится
работать с прикладными программами. Эти программы не менее важны, чем ядро.
Поэтому Linux — это совокупность ядра и основных прикладных программ, которые
обычно бывают установлены на каждом компьютере с этой операционной системой.
Объединение ядра и прикладных программ в единое целое проявляется и в названии
системы: GNU/Linux. GNU — это проект по созданию комплекса программ, подобного
тому, что обычно сопровождает Unix-подобную систему. GNU/Linux был сделан
по образу и подобию Unix — целого класса операционных систем, имеющих общий
корень. Для любого человека, ранее пользовавшегося другой Unix-подобной
системой, Linux не покажется чем-то особенным. Но Unix сильно отличается от
Windows, MacOS и даже MS-DOS, при создании второй версии которой
разработчиками было очень много позаимствовано из Unix (например, древовидная
структура каталогов, перенаправление ввода-вывода и т.д.). Таким образом, все,
что говорится о Linux, по большей части применимо к любой из операционных
систем Unix. Зачастую сторонники Linux при разговоре о преимуществах Linux
перечисляют недостатки Windows. Это неизбежно, поскольку все познается в
сравнении, а большинство пользователей компьютеров сейчас знакомы только с
Windows. Итак, что же нам дает Linux?
Командная строка. В
MS-DOS и Windows командная строка неудобна в использовании, что внушает
отвращение к ней пользователям, а язык командных файлов сравнительно беден. В
Unix пользовательский интерфейс командной строки приближен к совершенству, в
комплекте с системой идет множество полезных утилит, которые можно
использовать с командной строки, а скрипты позволяют автоматизировать
множество задач. Работа с командной строки намного эффективнее, чем работа на
мышке. Несомненно, нужно помнить команды, ключи и другие параметры команд, но
основные команды очень быстро запоминаются, а по другим можно заглянуть в
справочник. Многим на самом деле нужно всего несколько команд. А для тех
пользователей, которые не хотят или не могут запомнить команды, системный
администратор может настроить Linux так, чтобы все нужные им программы
запускались автоматически. Работа в командной строке не сложнее графического
интерфейса Windows, просто она другая. Может быть, она менее наглядна, но
профессионалам она позволяет работать намного более эффективно. Даже
графический интерфейс Unix — X Window System (Иксы) не предполагает отказа от
командной строки и никогда ей не противопоставлялся, как в Windows. Многие
графические приложения могут управляться с командной строки, сочетая
преимущества обоих методов. Под Linux существуют и программы-оболочки вроде
Far, DOS Navigator — Midnight Commander например, но все же надо понимать, что
это программы разных категорий. Для некоторых приложений (например, для
программы электронной почты) графика не является обязательной, и это снижает
их требования к системе. Командная строка повышает эффективность работы
профессиональных пользователей, но ее использование не является
обязательным.
Понятность системы. Linux кажется "черным
ящиком" только поначалу. С опытом приходит понимание системы. Профессионалам
часто бывает достаточно одного взгляда на ранее не встречавшуюся им проблему,
чтобы успешно разрешить ее. Это происходит оттого, что известны принципы
работы системы, ее "генеральная линия". Можно ткнуть пальцем в любой файл в
любом каталоге и, при желании, узнать, зачем он нужен и почему находится
именно в этом каталоге. По крайней мере, как правило, бывает сразу понятно, к
какой программе этот файл относится. Это понимание дает возможность
избавляться от ненужных файлов без боязни, что это сделает систему или
какое-либо приложение неработоспособным. Можно оставить только необходимые для
какого-то конкретного приложения файлы и запускать Linux с одной дискеты или
использовать эту систему во встраиваемых приложениях. Linux предоставляет
развитые возможности для диагностики проблем, такие как лог-файлы, утилита
strace и встроенные во многие программы средства отладки. Эти же средства
позволяют составить представление о том, как работает та или иная программа,
даже если нет желания или возможности изучать ее исходные
тексты. Систематизация файлов тоже помогает разбираться в файловой системе.
Например, все программы, которые предназначены для запуска пользователем,
находятся в каталоге bin (и sbin), все конфигурационные файлы — в etc, а
библиотеки — в lib. Все настройки программ находятся в простых текстовых
файлах, которые можно редактировать любым текстовым редактором. Формат
настроечных файлов, как правило, описан в документации или в самом
конфигурационном файле при помощи комментариев. Почти всегда можно оставить
свои комментарии на заметку. Стандартный текстовый формат конфигурационных и
системных файлов упрощает процедуры резервного копирования и клонирования
системы. Linux снижает затраты на администрирование системы за счет своей
предсказуемости, развитых средств диагностики и конфигурации при помощи
текстовых файлов.
Открытость исходных текстов системы. Linux
создавался добровольцами, которые модифицировали систему под свои нужды.
Открытость исходных текстов — ключевой момент в этом процессе. Лицензия GPL
позволяет не только просматривать исходные тексты ядра и всех программ, но и
модифицировать их и даже распространять модифицированные версии. С такой
лицензией исчезает зависимость пользователей от разработчиков ПО. Если группа
разработчиков какого-либо проекта бросит разработку, то их дело может
продолжить другая заинтересованная группа. Кажется, что большинству
пользователей исходники системы и ни к чему, поскольку они не умеют
программировать, но очень часто немножко поправить программу можно и без
этого. А для фирмы иногда бывает удобно нанять программиста или сделать заказ
другой фирме для того, чтобы они дополнили используемые ими программы
необходимыми возможностями. Это наверняка обойдется дешевле, чем разрабатывать
ПО с нуля. Также имеется возможность выбора фирмы, предоставляющей поддержку.
Когда она не нужна (если, скажем, есть свои специалисты), то за нее можно не
платить, а если нужна — есть выбор среди нескольких конкурирующих фирм.
Лицензия Linux защищает интересы конечных пользователей, а не производителя
программного обеспечения. Часто именно лицензия является решающим аргументом в
пользу Linux.
Бесплатность и легальность. Конечно, в Беларуси
и России все программное обеспечение бесплатное, но иногда легальность
использования программного обеспечения имеет значение.
Удобство
программирования. Продуманный интерфейс прикладных программ с ядром и
библиотеками играет очень важную роль при создании приложений. Он ускоряет
разработку приложений, уменьшает их размер при той же функциональности и
повышает качество. API Linux совместим с POSIX (Portable Operating System
Interface) — стандартом для Unix-систем. Это воплощение опыта развития Unix,
многих лет работы. Он проверен временем и используется во множестве систем.
Этот интерфейс стабилен, он не изменится неожиданно кардинальным образом.
Программы, написанные под Linux, как правило, достаточно легко переносятся в
любую среду, которая поддерживает POSIX. Linux включает в себя компилятор C
и C++, Perl. Все это поставляется с исходниками. Linux в основном написан на
языке С, который является одной из самых удачных разработок за всю историю
компьютерной отрасли. GNU C, по мнению многих программистов, является одним из
лучших среди компиляторов C. Если какая-то часть программы может быть
полезна для других программ, то ее стараются выделить в библиотеку. Множество
таких библиотек распространяется через Интернет под лицензией GPL. Лицензия
позволяет программистам использовать код, написанный другими
программистами. Простота интерфейсов Linux ведет к улучшению качества
программного обеспечения и к снижению затрат на его
создание.
Удаленное управление. Linux имеет очень развитые
средства удаленного управления. Причем управлять машиной под управлением Linux
можно с любой другой системы, где есть программа эмулятор терминала (в
отличие, например, от Windows NT/2000). Если машина подключена в Интернет, то
управлять ею можно практически с любой другой машины, также подключенной в
Интернет, быстрое подключение не требуется. Удаленное управление рабочими
станциями сокращает затраты на администрирование сети, поскольку системному
администратору не нужно даже вставать со стула для того, чтобы, например,
поставить какое-либо программное обеспечение на все рабочие станции с Linux.
Графическая среда поддерживает отображение графики на другой машине и даже
запуск разных приложений с разных систем с отображением их на одном экране.
При этом приложения сохраняют возможность взаимодействовать между собой
(например, имеют общий буфер обмена).
Многопользовательская
работа. Unix и Linux были изначально ориентированы на то, что одним
компьютером могут пользоваться одновременно несколько человек. Но даже если
компьютером обычно пользуется только один человек, такой подход все равно
помогает разделить пользовательские настройки от системных, т.е. тех, которые
относятся ко всем пользователям и к системе в целом. Такое разделение
положительно сказывается на устойчивости и безопасности системы. Приложения
изначально пишутся с учетом того, что ими может пользоваться несколько
пользователей сразу и, как правило, не требуют прав записи в системные
каталоги. Все настройки они сохраняют в собственном, так называемом "домашнем"
каталоге пользователя. Каждый пользователь может настроить систему в
соответствии со своими предпочтениями, и это не вызовет проблем у других
пользователей. Обычно работа ведется под пользователем, у которого нет прав
испортить что-то за пределами своего каталога, а настройка системы
производится под суперпользователем (root) по мере необходимости.
Многопользовательский режим позволяет производить настройку системы, не
прерывая работы пользователей. Работа в системе под пользователем с
ограниченными правами позволяет предотвратить повреждение системы при
неаккуратных действиях пользователя, а отсутствие доступа на запись к
системным каталогам не приносит
неудобств.
Стабильность. Возможность обновления системных
библиотек, загрузки и выгрузки драйверов устройств, обновление практически
любых программ на ходу позволяют месяцами обходиться без перезагрузки системы,
а следовательно и без прерывания функционирования сервисов и работы
пользователей. Перезагрузка Linux требуется только в случае upgrade машины или
обновления ядра. В Linux, как и во всем созданном людьми, иногда
проявляются ошибки, но они крайне редко приводят с серьезному сбою системы и
благодаря доступности исходных текстов довольно быстро исправляются. Это же
относится и к проблемам безопасности, которые часто исправляются в течение
нескольких часов после их обнаружения.
Гибкая файловая
система. Файловая система Linux предусматривает такие средства, как
точки монтирования, символьные и жесткие ссылки. Это позволяет эффективно
распределять место на диске и решать проблемы, когда какая-либо программа
требует файл в определенном каталоге, а он на самом деле в системе находится в
другом месте. Но у Linux, как и у любого другого созданного людьми
артефакта, не могут быть одни только достоинства, есть и недостатки: —
Система все еще достаточно сложна для непрофессиональных пользователей, хотя
это и стараются исправить. Этот недостаток не может быть решен за счет
создания средств конфигурирования системы с графическим или web-интерфейсом,
поскольку разработчики прикладных программ в большинстве не заинтересованы в
таких конфигураторах. А разработчики этих средств конфигурирования не могут
успеть за развитием других частей системы. Добавление элементов управления в
программу-конфигуратор обходится несравнимо дороже, чем добавление пары
строчек в текстовый файл. Создание документации может только частично сгладить
проблему, так как прочтение очень большого объема документации отнимает много
времени. Да и разработчики свободного ПО не очень рвутся документировать свои
программы. Их можно понять, они ведь программисты, а не писатели технической
документации. Возможно создание простых в установке дистрибутивов с
приемлемыми для большинства пользователей настройками "по умолчанию", но на
всех не угодишь. Убивать мощь Linux ради простоты конфигурирования
недопустимо! — Разработка драйверов устройств для Linux пока несколько
отстает от Windows. Она затрудняется тем, что драйверы под Linux пишутся
самими пользователями оборудования, вместо фирм-производителей, хотя последние
уже берутся за это. Поддерживаются самые популярные устройства. Для написания
драйвера под Linux от производителей требуется открыть детали интерфейса с их
оборудованием (а не внутреннего устройства). Многие производители считают, что
это может привести к разглашению их новшеств и технологий и нанести ущерб их
бизнесу. Разработка бинарных (без исходных текстов) драйверов для Linux
затруднена, поскольку модули ядра, в виде которых обычно распространяются
драйверы, не предназначены для переносимости между разными версиями Linux, а
новые версии выходят очень часто. — Разработчики популярного коммерческого
ПО пока не слишком торопятся портировать свои приложения под Linux. Они
ожидают момента, когда Linux наберет "критическую массу", т.е. пока расходы на
портирование не станут меньше доходов от продажи продукта пользователям Linux.
Но в то же время многие пользователи не спешат переходить на Linux, поскольку
под ним нет привычного им программного обеспечения. Но, во-первых, Linux
быстро набирает "массу", а во-вторых, в конце концов конкуренция на рынке ПО
делает свое дело: производители ПО опасаются, что пользователи могут, не
дожидаясь завершения портирования их продукта под Linux, перейти на продукт
конкурирующей фирмы. — Linux разрабатывается интернациональной командой, и
их языком общения является английский. Вся документация также создается на
этом языке. Только небольшая часть этой документации переведена на русский
язык, что создает трудности для пользователей, не читающих по-английски.
Система сложна, чтобы в ней можно было разобраться без документации, а найти
что-то на русском языке на тему бывает несколько затруднительно. — Различия
между дистрибутивами Linux создают трудности при поддержке. Стандартизация
необходима, но дистрибутивы различаются и будут различаться программами
установки, процедурами установки ПО. К тому же производители ПО нередко
тестируют свои продукты только на одном дистрибутиве Linux — на самом
распространенном. Дистрибутивы, конечно, все совместимы между собой (это все
Linux), но иногда бывают трудности, связанные с тем, что различаются версии
библиотек, ядра, процедура начальной загрузки, а иногда даже пути к каким-либо
ключевым файлам. Все эти проблемы решаемые, но лучше бы их не было. Вот
такой вот пристальный взгляд на Linux.
По материалам
Сети
|