Авторские статьи

Source Based FreeBSD против Package Based Linux


Source Based FreeBSD vs Package Based Linux.
Хочется описать своё мнение об администрировании операционных систем FreeBSD и Linux. Тема холиварная ...

Философия установки программ в FreeBSD.

Бинарные пакеты.
На этапе установки FreeBSD через sysinstall для ускорения процесса установки - программное обеспечение ставится в готовом бинарном виде из файлов tgz, называемые пакетами. С помощью pkg_add, pkg_delete, pkg_update можно добавлять, удалять, обновлять установленные пакеты и в дальнейшем.

Плюсом пакетов и утилит pkg_* является удовлетворение зависимостей пакетов.
Минусом пакетов во FreeBSD является отсутствие подписи автора пакета, то есть если пакет tgz получен не с официального сайта, то вы сможете проверить только целостность пакета с помощью контрольных сумм и не более того.

Порты FreeBSD. Компиляция из исходников.
Порт программы в FreeBSD - это набор сценариев и исправлений, расположенный обычно в /usr/ports/ и содержащий специальный Makefile, позволяющий устанавливать программное обеспечение командой make install. Коллекция портов - это возможность устанавливать программное обеспечение из исходников, но по правилам и исправлениям операционной системы FreeBSD. У каждого порта есть сопровождающий его человек, которого называют maintainer и он следит, чтобы порт компилировался и устанавливался корректно и что последняя версия программного продукта доступна как порт.

Найти нужный порт можно командами
cd /usr/ports && make search name="что_нужно" | more
или
cd /usr/ports && make search key="что_нужно" | more
Найдя нужное программное обеспечение, следует перейти в данный каталог и скомандовать
make install clean

За кулисами произойдёт следующее:
1) make запустит последовательность make-целей, каждая из которых зависит от предыдущих.

2) make install вызывает неявно до себя цели
fetch - загружает tar-архив с сайтов указанных в переменной MASTER_SITES файла Makefile этого порта и помещает в /usr/ports/distfiles.
checksum - проверяет контрольную сумму.
extract - распаковывает tar-архив в рабочий подкаталог порта.
patch - вносит в исходный код все исправления из подкаталога files/.
configure - запускает сценарий конфигурирования.
build - компилирует программный продукт.

Плюсы портов:
1) зависимости обрабатываются автоматически.

2) в систему скомпилированный порт добавляется как пакет и можно применять утилиты pkg_* или комбинировать.

Минусы портов:
1) в ранних версиях FreeBSD коллекцию портов нужно было обновлять/синхронизировать с помощью сторонних сервисов типа CVS, который создавались не для этого. В современных релизах FreeBSD есть официальная "обновлялка" коллекции портов - portsnap.

2) ОБНОВЛЯТЬ установленное программное обеспечение из портов стандартными средствами FreeBSD НЕВОЗМОЖНО! Вы должны удалить программу с помощью pkg_delete или make deinstall и установить новую версию с помощью make install. Для обновления требуется хорошая, но не официальная утилита portupgrade, которая тянет тяжёлые зависимости языка Ruby. Используя portupgrade для обновления и portupgrade -N для установки из портов, вы получаете возможность легко обновлять софт из портов, но необходимо знать и помнить, что после обновления коллекции портов с помощью portsnap update НЕОБХОДИМО создать базу командой portsdb -uU. Обновление установленного программного обеспечения во FreeBSD не является частью системы и утилиты занятые установкой/удалением не занимаются обновлением - это fail.

3) коллекция портов хороша, но не совершенна и тяжёлые программы с множеством зависимостей могут "не собраться" и выдать "*** Error code 1" или что-то подобное. Можно попробовать make clean all и если не поможет, то придётся писать сопровождающему письмо с логом компиляции.

4) Коллекция портов не может бесконечно быть новее самой системы и вам рано или поздно сообщат, что версия системы "слишком ранняя". Придётся обновлять ваш релиз системы или пользоваться комплектом обновления (UpgradeKit).

Философия установки программ в Package Based Linux на примере Debian/Ubuntu.

Пакетные системы. Package Based Linux.
Пакетные системы - это семейство RedHat (CentOS, Fedora, ...), семейство SUSE, семейство Debian (Ubuntu, Mint, ...), Mandriva и другие основанные на них.

В перечисленных дистрибутивах есть понятия:
1) пакета программы (что-то типа архива программы + скрипты внутри что делать с программой).

2) репозиторий - это хранилище софта, это может быть сервер или диск или другой носитель с пакетами программ

3) "установщик программ" - программа, которая устанавливает по вашему требованию пакеты программ из репозитория.
В вашей системе есть "установщик программ", который имеет добавляемый список репозиториев с софтом, "установщик программ" скачивает с репозитория список имеющегося у него софта и предлагает вам возможность установить понравившуюся программу.

4) если установленная мною программа обновится и ее новая версия будет доступна в репозитории, то мой "установщик программ" предложит мне ее обновить, чтобы залатать дыры и поддерживать систему в актуальном состоянии.

Плюсы пакетной системы:
1) репозитории содержат криптографические ключи и все пакеты подписаны. Установив ключ репозитория, можно быть уверенным в подлинности пакета.

2) нет долгого процесса компиляции пакета и проще и легче процесс обновления программ и самой системы.

3) пакетная система не взаимоисключает исходный код и компиляцию. Можете использовать исходный код из репозитория и скомпилировать бинарный пакет под свой процессор и установить штатными средствами пакетной системы.

4) если программа и, соответственно, её код не доступен в репозиториях, но есть на сайте автора программы, то можно из авторского исходного кода создать пакет с помощью sudo auto-apt update && auto-apt -y run ./configure

5) если нет пакета для вашего дистрибутива Linux, с большой долей вероятности можно найти для других дистрибутивов и конвертировать в ваш родной формат утилитой alien.

Минусы пакетной системы:
1) бинарные пакеты собраны не вами и требуется доверие к ним. Если репозиторий не официальный, то ваше доверие НЕ должно быть бездумным.

2) в пакете программы не используют все возможности вашего процессора, так как программы и библиотеки собираются, чтобы работать на широком спектре процессоров.

Выводы:
Мне ближе стал Linux, чем FreeBSD, хотя с FreeBSD я начинал и она "первая любовь". Операционную систему FreeBSD до сих использую и поэтому и появилась эта статья, но когда на дворе 21 век понимаешь ... что FreeBSD не умея самой официально обновлять софт из портов и устанавливая по умолчанию локаль KOI8-R, а не UTF-8 - это просто провал.

Многие молодые админы не умеют правильно "готовить" FreeBSD и использовать порты, поэтому часто можно видеть старые не обновлённые релизы FreeBSD, ведь обновить мир и софт во FreeBSD намного сложнее, чем в Linux. А такая ситуация чревата проблемами с безопасностью.

Часто можно видеть установленный софт из непонятно-откуда-скачанного сайта вместо официально рекомендуемых портов и такое программное обеспечение уже нормально штатно не обновить и ... опять проблемы.
Всё вышеописанное является моим частным мнением ...

Похожие материалы:
Почему я не люблю Source Based?

Дата последней правки: 2023-12-28 15:04:23

RSS vasilisc.com   


Разделы

Главная
Новости
Ворох бумаг
Видео Linux
Игры в Linux
Безопасность
Статьи об Astra Linux
Статьи о FreeBSD
Статьи об Ubuntu
Статьи о Snappy
Статьи об Ubuntu Phone
Статьи о Kubuntu
Статьи о Xubuntu
Статьи о Lubuntu
Статьи об Open Source
Карта сайта