Pull to refresh

BSD vs Linux. Что такое «Базовая Система»?

Reading time4 min
Views6.6K
Original author: Matthew D. Fuller
Концепция «базовой системы» — это то, что создаёт большинство проблем для людей, привыкших к методологии Linux. Что вполне понятно, ведь в мире Linux такого понятия даже не существует.С самого начала Linux был просто ядром. И без вечных дискуссий по поводу того, что входит в понятие «операционная система», можно сказать, что ядро само по себе не очень полезно. Вам необходима вся пользовательская оболочка для того, чтобы заставить его работать. Linux — это конгломерат; здесь ядро, там ls, с другой стороны ps, vim, perl, gzip, tar и ещё куча всего.В Linux никогда не было какого-либо разделения на «базовую систему» и «дополнительные утилиты». Вся система — это «дополнительные утилиты». MySQL ничем не отличается от ls, от KDE, whois, dc, GnuCash… Каждый бит системы — это тот или иной пакет дополнений.Напротив, в BSD всегда была централизованная модель разработки. Всегда присутствовала общность, которая «отвечает» за систему. BSD не использует GNU ls или GNU libc, она использует BSD ls и BSD libc, являющиеся прямыми потомками тех ls и libc, которые распространялись вместе с BSD от CSRG. Они никогда не разрабатывались или собирались независимо. Вы не сможете «пойти скачать BSD libc» где-нибудь, потому как в мире BSD libc сама по себе бессмысленна. ls сама по себе бессмысленна. Ядро само по себе бессмысленно. Система — это единое целое, а не собранные в кучу маленькие кусочки.Далее, X не является частью базовой системы FreeBSD. Это пакет дополнений. Так как X — это не часть базовой системы, то приложения X, такие как xterm, KDE, Gnome, Mozilla, gaim, xmms и т.д. очевидно также не могут быть частью базовой системы. Это приложения, которые рассматриваются по-другому. Основное отличие в том, где они разработаны.NetBSD и OpenBSD имеют в своей базе X, из-за способа её интеграции с драйвером консоли. Обе они используют сильно модифицированные версии, поэтому хранить их в виде отдельных пакетов нецелесообразно.Вся базовая система разрабатывается совместно. Чтобы быть точным, есть части базовой системы, такие как sendmail, BIND, tcpdump, ssh и т.д., которые на самом деле являются самостоятельными пакетами и разрабатываются отдельно. Есть некоторые приложения GNU такие, как groff, gcc, gzip, которые знакомы всем пользователям Linux. Но к ним особое отношение, они импортируются в дерево, а затем формируются в соответствии с остальной частью системы. На самом деле, многие из них используются как BSD-only; BIND и sendmail изначально были разработаны в Беркли как часть BSD, и только позже стали доступны как отдельные приложения. Моя FreeBSD уверяет, что работает с gcc версии 3.2.2. Технически, это не совсем gcc 3.2.2; это компилятор FreeBSD, основанный на gcc 3.2.2. Версия tcpdump, которая стоит в системе, технически не является версией 3.7.2, это FreeBSD tcpdump, основанный на tcpdump 3.7.2.В большинстве случаев, конечно, версия пакета в FreeBSD практически неотличима от вендорной. Обычно вносятся несколько изменений, касающихся компиляции (Makefiles и прочее), для чистоты сборки в соответствии с остальной системой, и иной раз несколько важных патчей для правильной компиляции и выполнения. Некоторые изменения шире, некоторые — громоздки. Но их собирают вместе и заставляют работать вместе. Гарантируется, что все составляющие базовой системы BSD по дизайну соответствуют друг другу.Первопричина внедрения в базовую систему пакета, разрабатываемого третьей стороной, обычно состоит в том, что пакет удовлетворяет базовым требованиям и легче всего использовать его в ней по умолчанию. На сегодня FreeBSD использует ssh сервер и клиент OpenSSH, которые интегрированы в базовую систему, потому что на данный момент метод прямого защищённого доступа — базовый для любой системы, и его внедрение было практической необходимостью. gcc и binutils входят в базовую систему, потому что… ну, они необходимы для построения базовой системы. X, Gnome, PostgreSQL, Apache и прочее не входят в базовую систему и, наверное, никогда не войдут, потому что они не требуются для того, чтобы поднять и запустить систему, не будут использоваться на многих системах, не требуют такой тесной интеграции,… да еще много причин.Важно подчеркнуть эту сторону «базовой системы», потому как, я полагаю, в ней заключается самое заметное отличие методологий разработки BSD и Linux. Дистрибьютор Linux может сложить вместе все куски и протестировать их на взаимное соответствие до релиза. Некоторые пакеты могут быть модифицированы. Но это совершенно отличается от интенсивной интеграции в BSD. В частности, тем, что многие компоненты базовой системы берутся не «откуда-то оттуда», а уже прожили жизнь как часть системы.Некоторые дистрибутивы Linux (Debian и Gentoo, насколько я понимаю, наиболее заметные в этой группе) намного ближе к связке base/ports, чем остальные. У них есть некая черта между тем, что необходимо для запуска системы, и всеми остальными пакетами, которые вы бы могли захотеть установить в системе. Чем это отличается от базовой системы BSD? Тем, что большинство пакетов всё равно разрабатывается и поддерживается на стороне, и потом просто собирается в дистрибутив Linux. Нет, например, такой вещи, как «Gentoo tftp» — это сторонний пакет. Хотя многие пакеты в BSD сторонние, почти вся «базовая система» никогда не была «откуда-то оттуда» — она всегда была BSD.Базовую систему иногда клеймят «минималистской» или «скудной», имея в виду то, что она разрабатывается с единственным желанием сделать её настолько маленькой и сжатой, насколько это возможно. Но дело не совсем в этом. Конечно, мы хотим её видеть такой, но она разрабатывается таким образом, потому как предназначена быть именно тем, чем является по названию — базой системы. Никогда в моей жизни я не запускал BSD только с тем, что есть в базе, и наверное, никогда не запущу. Я не знаю никого, кто бы это делал. База нужна для того, чтобы предоставить необходимые для работы в системе инструменты и позволить вам обновляться и устанавливать приложения. Затем вы просто устанавливаете всё, что вам необходимо в соответствии с предназначением системы.Мне сказали, что всё вышесказанное более правдиво для FreeBSD, чем для NetBSD или OpenBSD, которые во многих отношениях имеют более широкие критерии для включения в базовую систему. Как всегда, вам следует обратиться к документации систем, чтобы точно знать, что куда включается.

1. BSD vs Linux. Вступление.
2. BSD vs Linux. Действующие лица.
Tags:
Hubs:
+54
Comments73

Articles