Делаем систему полезной FreeBSD

В таких операционных системах, как Microsoft Windows и Red Hat Linux, базовая установка подразумевает инсталляцию всех компонентов, которые когда-либо могут понадобиться пользователю. В системах BSD это не так: компоненты устанавливаются разрозненно, и в этом есть свое преимущество. Например, в системах Windows в основном системном каталоге размещаются тысячи объектов, причем большая часть из них – это разделяемые библиотеки. Когда бы система ни запускалась, большая часть этих библиотек загружается в системную память. Я не знаю, для чего предназначена каждая библиотека, но уверен, что никогда не буду использовать многие из них. Единственные программы, которые я применяю, – SSH и Firefox. Все остальные программы только поглощают оперативную память. Да, именно так Microsoft разрабатывает операционные системы – пользователям надо дать все, что только имеется, то есть все от первой до последней мелочи. При установке Red Hat Linux инсталлируется программное обеспечение примерно того же объема, но оно хотя бы не загружается в память автоматически при загрузке системы, и пользователь может удалить ненужные ему программы.

При установке BSD инсталлируется столько программ, сколько требуется для запуска системы, плюс дополнительные утилиты, традиционно включаемые в состав систем UNIX. Программа установки предлагает выбор: инсталлировать дополнительные программы и исходный код – или нет. Однако даже полная система BSD занимает намного меньше дискового пространства, чем Windows или Red Hat Linux. По сравнению с Windows при полной установке FreeBSD инсталлируется намного меньше компонентов. Система Windows, поддерживающая только пакеты SSH и Firefox, была бы намного меньше и проще – совсем как FreeBSD.

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

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

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

Сборка программного обеспечения – сложный процесс, поскольку исходный код нужно особым образом обработать, чтобы созданные исполняемые файлы были работоспособными – и работали бы правильно! Программисты могли бы включать в свои программы подробные инструкции по установке, например: Теперь наберите аг cru . Iibs/lib20_zlib_ plugin.a istream-zlib.о zlib-plugin.о, но это был бы явный садизм с их стороны. Администраторы UNIX сами склонны к садизму, но они категорически против насилия, когда оно направлено против них, – если что-то может быть автоматизировано, то оно будет автоматизировано.

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

Каждый Makefile включает в себя различные целевые объекты (targets), или наборы исполняемых инструкций. Например, команда make install ищет в Makefile целевой объект (процедуру) с именем install. Если такая процедура найдена, она выполняется. Имя целевого объекта обычно говорит о процедуре, которая выполняется этим объектом. Так, совершенно очевидно, что команда make install производит установку программного обеспечения. В файле Makefile можно найти целевые объекты для установки, настройки и удаления программного продукта. Программа make(l) может выполнять огромное количество функций, в том числе таких, о которых создатели даже не предполагали. Но в этом и прелесть UNIX!

Исходный код и программное обеспечение

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

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

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

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

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

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

Для упрощения процесса сборки программ в системе FreeBSD была создана коллекция «портов».

Источник: ЛукасМ. FreeBSD. Подробное руководство, 2-е издание. – Пер. с англ. – СПб.: Символ- Плюс, 2009. – 864 е., ил.

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий