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 и если не поможет, то придётся писать maintainer’у письмо с логом компиляции.
4) Коллекция портов не может бесконечно быть новее самой системы и вам рано или поздно сообщат, что версия системы «слишком ранняя». Придётся обновлять ваш релиз системы или пользоваться комплектом обновления (UpgradeKit).

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

Пакетные системы. Package Based Linux.

Пакетные системы — это семейство RedHat (CentOS, Fedora, …), семейство SUSE, семейство Debian (Ubuntu, Mint, …), Mandriva и другие основанные на них.
В перечисленных дистрибутивах есть понятия:

1) пакета программы (что-то типа архива программы + скрипты внутри что делать с программой).
2) репозитарий — это хранилище софта, это может быть сервер или диск или другой носитель с пакетами программ
3) «установщик программ» — программа, которая устанавливает по вашему требованию пакеты программ из репозитория.
В вашей системе есть «установщик программ», который имеет добавляемый список репозиториев с софтом, «установщи