Показать сообщение отдельно
Старый 25.01.2008, 13:07   #122
kingureu
Неактивный пользователь
 
Регистрация: 23.01.2008
Сообщений: 5
Репутация: 7
По умолчанию ВАЖНО: FAQ: Установка ПО в операционной системе FreeBSD

Установка ПО в операциононй системе FreeBSD.
или Почему надо ставить программы из портов, а не руками

Q: Почему вы советуете все ставить из вортов, может действительно проще из исходников где все включено и компилируется с необходимыми опциями?

A: Потому, что порты - это стандартный способ установки ПО в системе. Это значит, что программы, справочная документация, разделяемые библиотеки и файлы заголовков ставятся именно туда, куда надо, и потому нет необходимости в дальнейшем заниматься долгими поисками.
Более того, система аудита FreeBSD работает только с ПО, установленным из портов, а значит, что устанавливая из исходников, Вы будете сами отвечаьт за безопасность системы и сами искать сообщения о критических уязвимостях программ и их новых версиях.

Q: Ведь действительно проще ставить из исходников где все включено и компилируется с необходимыми опциями?

A: На самом деле - не проще, а сложнее. Потому, что система портов сама находит зависимости и автоматически ставит необходимое ПО. В случае установки вручную, придется самостоятельно ставить необходимые библиотеки, которые, в свою очередь, зависят от других библиотек, которые тоже зависят от библиотек, которые.....
И это - полбеды. Беда приходит тогда, когда надо обновить какой-либо пакет; например, при обнаружении какой-либо уязвимости или при смене версии.
Представьте себе, что возникла необходимость обновить libfreetype. Если у нас установлен PHP5 с поддержкой gd, нам (возможно) придется пересобрать libfreetype, libgd и php-gd. И все это вручную, с вспоминанием опций, с которыми собирали все это в прошлый раз, с предварительной чисткой системы от старой версии и т.д.
Но если мы собирали из портов, все решается ровно одной командой: portupgrade freetype-1.2.3. Все остальное система сделает сама.


Q: Но я сам ставил из исходников - все работало и не надо было заморачиваться.

A: Да, работало. Но сколько времени потребовалось, чтобы все это поставить, разобраться в зависимостях и заставить работать так, как надо?
Для установки того же Apache + PHP5 + MySQL + Gd вручную, надо:
- собрать библотеки gd, jpeg, png, freetype
- собрать и установить mysql
- собрать и установить apache
- собрать PHP5.
При этом надо помнить про пути установки, флаги оптимизации, дополнительные зависимости, писать вручную скрипты автозапуска....

А при установке из портов все делвется ровно в две команды:
cd /usr/ports/databases/php5-extensions
make install clean


Q: Где читать про то, что нужно поставить из портов для нормальной работы какого-либо пакета чтобы потом не тыкаться в ошибки?

A:Система портов сделана так, что она автоматически находит все зависимости. Поэтому не надо беспокоиться, что система что-то "забудет" поставить. Будет установлено только то, что нужно для работы.

Например, надо поставиь поддержку mysql для PHP5, но мы не знаем, в каком порте искать. Делаем:
Код:

cd /usr/ports
make search name=php5 | grep mysql
Получаем ответ:
Port: php5-mysql-5.1.2_1
Path: /usr/ports/databases/php5-mysql
Info: The mysql shared extension for php

Можно воспользоваться утилитой portsearch
/usr/ports/Tools/scripts/portsearch -n mysql -d php5


Q: А вот при использовании исходников и чтении документации в них проблем - минимум.

A: Неправда. Проблем больше. Потому, что надо помнить, что и куда было установлено, какой версии и для чего именно. При этом, через полгода вы все равно забудете про то, что и куда ставили.

Q: А как на счет оптимизации?

A: Если вам действительно нужна скорость, ставьте ТОЛЬКО из портов. Как правило, порты имеют дополнительные флаги для сборки оптимизированного кода в зависимости от конкретной архитектуры. Так, mysql и openssl на x86 / amd64 собираются с широким использованием кода, написанного на ассемблере.

Q: Где искать порты?

A: На [Для просмотра ссылок требуется регистрация. Зарегистрироваться...], и.... (о чудо!) на [Для просмотра ссылок требуется регистрация. Зарегистрироваться...]

Q: Как обновлять дерево портов?
A: На FreeBSD версии 5.5 и 6.X - при помощи программы portsnap, которая является частью базовой системы.
В первый раз она скачает достаточно много, порядка 35 мегабайт, но потом будет обновлять только измененные порты, а это совсем небольшой трафик.
Первый запуск:
Код:

portsnap fetch
portsnap extract
portsnap update

Последующие запуски:
Код:

portsnap fetch
portsnap update


На старых версиях можно воспользоваться cvsup или поставить из портов portsnap
cvsup:
/usr/ports/net/cvsup-without-gui
Обновление выглядит так:
cvsup -g -L 2 /usr/share/examples/cvsup/ports-supfile
предвартельно указав в файле ports-supfile хост, с которого будет скачиваться обновленно дерево портов.

portsnap
/usr/ports/sysutils/portsnap

Q: Как обновлять установленные порты?
A: Порты следует обновлять программой portupgrade
Поставить ее модно из портов:
Код:

cd /usr/ports/sysutils/portupgrade
make install clean


Q: Как проверить установленное ПО на уязвимость?
A: Очень просто: установив и запустив программу portaudit.
Код:

cd /usr/ports/sysutils/portaudit
make install clean


Вся процедура аудита очень проста: portaudit -Fda
Код:

auditfile.tbz 100% of 33 kB 40 kBps
New database installed.
Database created: вторник, 28 февраля 2006 г. 17:10:12 (MSK)
0 problem(s) in your installed packages found.

Последний раз редактировалось kingureu; 25.01.2008 в 15:46..
kingureu вне форума
 
Ответить с цитированием Вверх
Эти 6 пользователя(ей) сказали cпасибо за это полезное сообщение:
 
Время генерации страницы 0.08069 секунды с 9 запросами