Хочется описать своё мнение об администрировании операционных систем 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) "установщик программ" - программа, которая устанавливает по вашему требованию пакеты программ из репозитория.
В вашей системе есть "установщик программ", который имеет добавляемый список репозиториев с софтом, "установщик программ" скачивает с репозитория список имеющегося у него софта и предлагает вам возможность установить понравившуюся программу.
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. А такая ситуация чревата проблемами с безопасностью.
Часто можно видеть установленный софт из непонятно-откуда-скачанного сайта вместо официально рекомендуемых портов и такое программное обеспечение уже нормально штатно не обновить и ... опять проблемы.
Всё вышеописанное является моим частным мнением ...
Немає коментарів:
Дописати коментар