ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи > Чужие Статьи
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Установка ПО в системе FreeBSD
  #1  
Старый 26.08.2008, 18:33
Аватар для PandoraBox
PandoraBox
Постоянный
Регистрация: 06.05.2007
Сообщений: 393
Провел на форуме:
1510937

Репутация: 398
Отправить сообщение для PandoraBox с помощью ICQ
По умолчанию Установка ПО в системе 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: На http://www.freshports.org/, и.... (о чудо!) на http://www.freebsd.org/

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

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

Код:
portsnap fetch 
portsnap update
На старых версиях (FreeBSD 4.X и FreeBSD 5.X до версии 5.5) можно воспользоваться cvsup (или csup - аналог cvsup, который полностью переписан с Modula-3 на C) или поставить из портов portsnap

cvsup:
Код:
/usr/ports/net/cvsup-without-gui
csup:
/usr/ports/net/csup
Обновление выглядит так:

Код:
cvsup -g -L 2 /usr/share/examples/cvsup/ports-supfile 
csup -g -L 2 /usr/share/examples/cvsup/ports-supfile
предварительно указав в файле ports-supfile хост, с которого будет скачиваться обновленно дерево портов.

portsnap:
Код:
/usr/ports/sysutils/portsnap

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

Поставить ее можно из портов:

Код:
cd /usr/ports/ports-mgmt/portupgrade
make install clean
Q: Как проверить установленное ПО на уязвимость?
A: Очень просто: установив и запустив программу portaudit.

Код:
cd /usr/ports/security/portaudit 
make install clean
или:

Код:
cd /usr/ports/ports-mgmt/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.
Q: Не всегда ведь в портах используются по умолчанию те опции, которые нужны. Как правильно их изменять? Если по умолчанию не установлены необходимые опции, их можно указать при сборке, например

Код:
make -DWITHOUT_IPV6=YES WITH_STATIC_SUPPORT
или установив переменные окружения

Код:
tcsh: setenv WITHOUT_IPV6 YES 
bash: export WITHOUT_IPV6=YES
или - прописав в файле /etc/make.conf

Код:
.if ${.CURDIR:N*/ports/<категория>/<название>} == "" 
WITHOUT_IPV6=YES 
<...> 
<другие опции> 
.endif
Q: Как изменить опции сборки (те что выбираются в синем окне)?
A: В директории порта выполните:

Код:
make rmconfig
make config

Q: Как правильно накладывать патчи?
A: Для грамотного наложения патча нужно выполнить следующие действия:

Код:
cd /usr/ports/some/prog 
fetch http://host.org/patch 
mv patch files/patch-some.patch 
make build
При таком подходе больше не придется каждый раз руками накладывать данный патч, система сделает все сама.

Q: Можно ли заставить portsnap работать через proxy?
A: Можно. portsnap это скрипт, который использует fetch. Достаточно установить в шелле переменные окружения HTTP_PROXY и FTP_PROXY (man 3 fetch).

Для tcsh:
Код:
          setenv HTTP_PROXY http://user:pass@192.168.0.1:3128
          setenv FTP_PROXY ftp://user:pass@192.168.0.1:3128
Для bash:
Код:
          export HTTP_PROXY=http://user:pass@192.168.0.1:3128
          export FTP_PROXY=ftp://user:pass@192.168.0.1:3128
Кроме того, в специфических случаях скрипт portsnap можно отредактировать под свои нужды.

Q: Где прописать в системе откуда ей стоит брать порты?
A: Всё в том же /etc/make.conf

Код:
MASTER_SITE_OVERRIDE=http://ftp7.ua.freebsd.org/pub/FreeBSD/ports/distfiles/ \ 
http://ftp2.ua.freebsd.org/pub/FreeBSD/ports/distfiles/

Q: Свежая версия порта не работает/работает не так как я хочу. как мне откатится назад?
A: воспользуйтесь утилитой /usr/ports/ports-mgmt/portdowngrade При запуске - требуется указать путь к репозиторию и имя порта с категорией, например:

Код:
# portdowngrade -s:pserver:anoncvs@anoncvs.at.FreeBSD.org:/home/ncvs net-mgmt/zabbix-agent$
утилита выведет вам историю ревизий порта, где вы сможете выбрать нужную вам версию:

Код:
=================================================================================================================
number         date         portversion  comment
    1  2007/12/17 18:27:53  1.4.4        - Update to 1.4.4 (bugfix-only)
    2  2007/12/13 08:36:15  1.4.3_1      - Add support for IPv6
    3  2007/12/12 23:02:06  1.4.3        Update to 1.4.3
    4  2007/08/27 18:35:50  1.4.2        - Update to 1.4.2
    5  2007/06/30 06:49:18  1.4.1        - Update to 1.4.1
    6  2007/06/22 15:10:34  1.4          - Move zabbix from UID 112 to 122 to avoid conflict with dcc
    <...>
после чего, необходимо сделать для данного порта portupgrade:

Код:
portupgrade -f zabbix-agent
Вот и все. Подробности в man portdowngrade

Q: Как мне "заморозить" порт (или категорию портов) чтобы он не обновлялся при обновлении всего дерева портов?

A: Перейдите с использования portsnap (если используется portsnap) на csup и используйте refuse файлы. refuse файл содержит шаблон, описывающий файлы, не требущие обновления. например:

Код:
ports/java/jboss4
объяснит csup, что не нужно обновлять jboss4

refuse файлы модно класть в каталог /foo/sup, где foo - каталог описанный директивой base supfile (опция -b при запуске csup), например для base=/usr:

Код:
/usr/sup/refuse
/usr/sup/ports-all/refuse
/usr/sup/src-all/refuse


(c) .sysfaq.ru
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FreeBSD 7; PCMCIA procedure *nix 16 17.07.2008 14:32
Новые сравнения производительности FreeBSD и Linux zythar Мировые новости 5 08.03.2008 23:27
Вышла операционная система FreeBSD 6.3 Mr. P.S. Мировые новости 1 19.01.2008 00:30
Шлюз в интернет на FreeBSD - Быстрая установка netf0x Soft - *nix 3 07.08.2007 20:08



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ