Введение в FreeBSD для пользователей Linux
FreeBSD, Linux | Комментировать запись
FreeBSD – свободная и открытая Unix-подобная операционная система и популярная серверная платформа. Хотя FreeBSD и другие BSD-системы имеют много общего с такими системами, как Linux, между ними есть много важных отличий.
Данная статья вкратце ознакомит вас с основными общими чертами и различиями между системами FreeBSD и Linux.
Примечание: Статья сосредоточена на FreeBSD, но многие из перечисленных ниже пунктов касаются и других BSD-систем.
Что общего между FreeBSD и Linux?
Для начала нужно выяснить, чем эти системы похожи друг на друга.
Лицензирование систем отличается (мы обсудим это позже), однако оба этих семейства систем являются свободными и открытыми. Пользователи могут просматривать и изменять исходный код по своему усмотрению, а разработка выполняется в открытом доступе.
FreeBSD и дистрибутивы Linux являются Unix-подобными по своей природе. FreeBSD имеет много общего с системами Unix предыдущих поколений, а система Linux была создана с нуля как открытая альтернатива Unix.
Также оба семейства в основном совместимы с POSIX. Общие функции и дизайн систем стандартизированы и используют аналогичные шаблоны. Иерархия файловой системы строится одинаково, основным методом взаимодействия с обеими системами является среда оболочки, API-интерфейсы программирования имеют сходные функции.
Поэтому дистрибутивы FreeBSD и Linux могут совместно использовать многие инструменты и приложения. В некоторых случаях отличаются версии или варианты программ, но приложения между этими системами мигрировать легче, чем в не-Unix-подобную систему.
Теперь пора разобраться, чем же отличаются FreeBSD и Linux.
Различия в лицензировании
Одно из самых фундаментальных различий между системами FreeBSD и Linux – вопрос лицензирования.
Ядро Linux, приложения на основе GNU и многие программные продукты из мира Linux лицензируются по GPL (или GNU General Public License). Эта лицензия часто называется свободной (copyleft). По сути, это форма лицензирования, которая позволяет свободно просматривать, распространять и изменять исходный код при условии, что любые производные продукты будут поддерживать эту же лицензию.
Читайте также: Свободное и открытое программное обеспечение: в чем разница?
FreeBSD (включая ядро и все инструменты, созданные разработчиками FreeBSD) распространяет свое программное обеспечение под лицензией BSD. Этот тип лицензироавния более либеральный, чем GPL, поскольку он не требует, чтобы производный продукт поддерживал условия этой лицензии. Это означает, что любой человек или организация может использовать, распространять или модифицировать программу без необходимости делать вклад в ее развитие или открывать исходный код. Единственное требование заключается в том, что в исходный код или документацию производной программы (в зависимости от метода выпуска) должны быть включены авторские права, копия лицензии BSD и отказ от обязательств. Сама лицензия очень короткая, ее можно найти здесь.
Преимущества каждого из этих типов лицензирования почти полностью зависят от философии и потребностей пользователя. Лицензии GPL ратуют за совместное использование кода и открытую экосистему. Закрытое программное обеспечение не должно основываться на программах с лицензией GPL. А лицензионное программное обеспечение BSD можно свободно включать в закрытые приложения. Это делает лицензирование BSD более привлекательным для многих компаний и частных лиц, надеющихся монетизировать свое программное обеспечение – оно позволяет продать программное обеспечение и сохранить исходный код закрытым.
Понимание лицензирования систем FreeBSD и Linux поможет вам лучше разобраться с их философией.
История развития FreeBSD
Еще одно важное различие между системами FreeBSD и Linux – это история каждой системы. Наряду с различиями в лицензировании, о которых говорилось выше, история оказала, пожалуй, самое большое влияние на философию каждой из систем.
Linux – это ядро, разработанное Линусом Торвальдсом как средство замены ограничительной системы MINIX, которую он использовал в Хельсинском университете. В сочетании с другими компонентами, многие из которых поступают из набора GNU, операционная система на ядре Linux имеет много уникальных свойств Unix, несмотря на то, что она не была непосредственным ответвлением системы Unix. Поскольку Linux была запущена с нуля, не наследует дизайн и некоторые из устаревших соображений, она может значительно отличаться от систем с более тесными связями с Unix.
FreeBSD имеет множество прямых связей с Unix. BSD (или Berkeley Software Distribution) – это дистрибутив Unix, созданный в Калифорнийском университете в Беркли, который расширил набор функциональных возможностей AT&T Unix и имел приемлемые условия лицензирования. Позже было принято решение попытаться заменить исходную операционную систему AT&T, используя альтернативы с открытым исходным кодом, чтобы пользователям не требовалось получать лицензию AT&T для работы с BSD. В конце концов, все компоненты оригинальной системы AT&T были переписаны под лицензией BSD и перенесены в архитектуру i386 как 386BSD. Система FreeBSD стала форком этой базы с целью улучшить и модернизировать проделанную работу и в конечном итоге была перебазирована в неполный релиз под названием BSD-Lite для решения вопросов лицензирования.
Благодаря длительному и многоэтапному процессу ответвления FreeBSD стала свободной от лицензий, но поддерживала тесные связи с ее прошлым. Разработчики системы по-прежнему реализовали многие функции способами, принятыми в Unix, возможно, потому, что FreeBSD всегда разрабатывалась в качестве клона Unix с открытой лицензией. Это повлияло на дальнейшее развитие и повлекло за собой последствия, речь о которых пойдет ниже.
Базовая операционная система и дополнительное программное обеспечение
Ключевым отличием между дистрибутивами FreeBSD и Linux в плане разработки и проектирования системы является область самой системы. Команда FreeBSD разрабатывает ядро и базовую операционную систему как единое целое, в то время как Linux технически относится только к ядру, а остальные компоненты поступают из разных источников.
Это различие может показаться незначительным, но на самом деле это сильно влияет на взаимодействие и управление системой. В Linux дистрибутив может объединить пакеты, гарантируя, что они хорошо взаимодействуют друг с другом. Однако большинство компонентов будут поступать из широкого круга источников, а разработчики дистрибутива только формируют из них наборы, которые правильно функционируют в системе.
В этом смысле основные компоненты не сильно отличаются от дополнительных пакетов, доступных в репозиториях дистрибутива. Средства управления пакетами дистрибутива используются для отслеживания и управления этими компонентами точно так же, как и дополнительными пакетами. Дистрибутив может поддерживать разные репозитории в зависимости от того, кто отвечает за определенные пакеты.
А FreeBSD поддерживает всю основную операционную систему. Ядро и набор программ, многие из которых созданы самими разработчиками FreeBSD, поддерживаются как единое целое. Тут не так просто поменять компоненты, которые являются частью основного набора, потому что он в некотором смысле неделим. Это позволяет команде FreeBSD очень четко управлять основной операционной системой, обеспечивая тесную интеграцию и большую предсказуемость.
Программное обеспечение, входящее в основную операционную систему, считается полностью отделенным от дополнительных компонентов. FreeBSD предлагает большую коллекцию дополнительного программного обеспечения, как это делают дистрибутивы Linux, но их управление происходит отдельно. Основная система обновляется независимо как отдельный блок, а дополнительное программное обеспечение может обновляться индивидуально.
Формирование релизов
Большинство релизов Linux являются результатом сбора программного обеспечения из разных источников (и, при необходимости, его изменения). Составители дистрибутива решают, какие компоненты должны быть включены в установку, какие – в поддерживаемые репозитории и т. д. После совместного тестирования компонентов создается релиз.
В предыдущем разделе вы узнали, что:
- Большая часть операционной системы FreeBSD разрабатывается командой FreeBSD.
- Базовая операционная система FreeBSD – основной выход.
- Базовое программное обеспечение FreeBSD считается единым и неделимым набором.
Эти качества FreeBSD приводят к тому, что при релизе программного обеспечения используется не такой подход, как в большинстве дистрибутивов Linux. Поскольку FreeBSD организует все на уровне операционной системы, все базовые компоненты поддерживаются в одном репозитории исходного кода. Это имеет несколько важных последствий.
Прежде всего, поскольку все эти инструменты разработаны вместе в одном репозитории, релиз создается путем простой ревизии одной из веток репозитория. Подобным образом выходит большинство программ, поскольку из организованной базы кода выбирается стабильная точка.
Базовая операционная система находится под активным контролем версий, а это означает, что пользователи могут отслеживать разные ветки или уровни стабильности. Пользователям не нужно ждать, пока разработчики санкционируют изменения, чтобы получить обновления.
Это чем-то похоже на то, как пользователи отслеживают репозитории разных уровней стабильности в некоторых дистрибутивах Linux. Только в Linux вы отслеживаете репозиторий пакетов, а в FreeBSD вы можете отслеживать целую ветку централизованного репозитория исходного кода.
Различия в программном обеспечении и системном дизайне
Оставшиеся различия связаны с самим программным обеспечением и общими качествами системы.
Установка поддерживаемых пакетов и исходного кода
Одним из ключевых различий между FreeBSD и большинством дистрибутивов Linux с точки зрения пользователя является наличие и поддержка программного обеспечения как в виде пакетов, так и в виде исходного кода.
Хотя большинство дистрибутивов Linux предоставляют только предварительно скомпилированные бинарные пакеты программного обеспечения, FreeBSD содержит как готовые пакеты, так и систему сборки для компиляции и установки из исходного кода. Это позволяет выбирать между предварительно скомпилированными пакетами с разумными значениями по умолчанию и возможностью отладить программное обеспечение во время процесса компиляции, создавая его самостоятельно. FreeBSD делает это через систему портов.
Система портов FreeBSD – это коллекция программного обеспечения, которое умеет собирать FreeBSD. Организованная иерархия, представляющая это программное обеспечение, доступна в каталоге /usr/ports, где пользователи могут развернуть каталоги для каждого приложения. Эти каталоги содержат несколько файлов, в которых указывается, где можно найти исходные файлы, а также инструкции для компилятора о том, как отладить исходный код для корректной работы с FreeBSD.
Пакетные версии программного обеспечения фактически производятся из системы портов, что делает FreeBSD дистрибутивом на основе исходного кода с доступными пакетами для удобства. Ваша система может состоять как из скомпилированного, так и из предварительно упакованного программного обеспечения. Система управления программным обеспечением может адекватно обрабатывать комбинацию этих методов установки.
Стандартное ПО vs пользовательское ПО
Одним из аспектов, который может показаться пользователям Linux немного странным, является тот факт, что FreeBSD обычно предоставляет программное обеспечение upstream по возможности без изменений.
Многие дистрибутивы Linux вносят изменения в программное обеспечение, чтобы упростить подключение к другим компонентам и попытаться упростить управление. Хорошими примерами этой тенденции являются перестройка общих иерархий конфигурации веб-сервера.
Многие пользователи считают эти изменения полезными, но у этого подхода есть и недостатки. Одна из проблем заключается в том, что этот подход навязывает пользователям решение вне зависимости от их сред. Это также делает программное обеспечение более непредсказуемым для пользователей, пришедших с других платформ, поскольку оно отклоняется от существующих соглашений.
Разработчики FreeBSD часто модифицируют программное обеспечение с помощью патчей, но эти изменения, как правило, более консервативны, чем некоторые варианты пакетов дистрибутивов Linux. В целом, в экосистеме FreeBSD выполняются только те модификации программного обеспечения, которые необходимы для правильной сборки и работы в среде FreeBSD, а также создания хорошей настройки по умолчанию. Конфигурационные файлы, которые помещаются в файловую систему, обычно не сильно отредактированы, поэтому вам может потребоваться дополнительная настройка, чтобы заставить компоненты взаимодействовать друг с другом.
Общие инструменты FreeBSD
Еще одним аспектом системы FreeBSD, который может запутать пользователей Linux, является наличие знакомых инструментов Linux, которые в FreeBSD работают несколько иначе, чем в Linux.
Команда FreeBSD поддерживает собственную версию большого количества обычных инструментов. Многие из инструментов в Linux-системах можно найти в пакетах GNU, а FreeBSD часто использует свои собственные варианты программ для своей операционной системы.
Для этого есть несколько причин. Поскольку команда FreeBSD отвечает за разработку и поддержание основной операционной системы, контроль разработки этих приложений и размещение их под лицензией BSD является необходимым и полезным моментом. Некоторые из этих инструментов также имеют тесную функциональную связь с инструментами BSD и Unix, на основе которых они были созданы, в отличие от пакетов GNU, который в целом не имеет тенденции к обратной совместимости.
Эти различия часто проявляются в вариантах и синтаксисе команд. Определенные команды работают на машинах Linux, но они могут не работать на сервере FreeBSD. Важно всегда проверять справку команд, чтобы ознакомиться с вариантами для FreeBSD.
Стандартная оболочка
Следующее отличие, которое может вызвать путаницу, связано с предыдущим и заключается в том, что FreeBSD не использует bash по умолчанию. Вместо этого FreeBSD использует tcsh.
Эта оболочка является улучшенной версией csh – оболочки C, разработанной для BSD. Оболочка bash является компонентом GNU, а потому она не может быть оболочкой по умолчанию в FreeBSD. Хотя обе оболочки обычно работают аналогично в командной строке, в tcsh не выполняются сценарии. Базовая оболочка Bourne sh более надежная и позволяет избежать некоторых ошибок, связанных с сценариями tcsh и csh.
Конечно, можно также очень просто настроить bash как оболочку FreeBSD.
Структура файловой системы
Ранее несколько раз упоминалось то, что FreeBSD делится на базовую операционную систему и дополнительные компоненты или порты, которые можно установить.
Это влияет на то, как FreeBSD организует компоненты в файловой структуре. В Linux исполняемые файлы обычно находятся в каталогах /bin, /sbin, /usr/sbin или /usr/bin в зависимости от их назначения и того, насколько важны их основные функции. FreeBSD распознает эти различия, но также накладывает еще один уровень разделения между компонентами базовой системы и компонентами, установленными из портов. Программное обеспечение базовой системы находится в одном из вышеперечисленных каталогов. Любые программы, установленные через порт или пакет, помещаются в /usr/local/bin или /usr/local/sbin.
Каталог /usr/local содержит структуру каталогов, которая в основном отражает структуру каталогов / или /usr. Это основной каталог для программного обеспечения, установленного через систему портов. Почти вся конфигурация портов выполняется через файлы, расположенные в каталоге /usr/local/etc, в то время как базовая конфигурация системы хранится в /etc (как обычно). Это позволяет легко распознать, является ли приложение частью базовой системы, и помогает поддерживать файловую систему в чистоте.
Заключение
FreeBSD и Linux имеют много общего и еще больше различий. Обе системы имеют свои преимущества.
FreeBSD следует воспринимать как отдельную операционную систему и не пытаться подогнать ее под восприятие Linux.
Читайте также:
- Начало работы с FreeBSD 10.1
- Управление пакетами в FreeBSD 10.1
- Рекомендации по настройке сервера FreeBSD 10.1