3 марта 2009 г. Linux FreeBSD

FreeBSD. Порты, пакеты и обновление ПО

freshports-s

Вместе с FreeBSD в составе базового комплекта системы поставляется богатый набор системный утилит. Однако, очень скоро возникает необходимость в установке дополнительных приложений сторонних разработчиков.

FreeBSD даёт две взаимодополняющих технологии для установки программного обеспечения сторонних разработчиков в вашу систему:

  • Коллекция Портов FreeBSD
  • Бинарные пакеты с программным обеспечением

Любая из этих систем может быть использована для установки самых последних версий ваших любимых приложений с локальных носителей или прямо из сети.

На вопрос "Что такое порты и пакеты?" вам поможет статья BSD vs Linux. Что такое «Порт»?. А мы поговорим о том, как работать с этой всей системой.

Пакеты

Установка пакета

pkg_add -r название_пакета

где "-r" означает "remote", т.е. будет качаться с интернета.

Список установленных пакетов

pkg_info

или информация о пакете

pkg_info название_пакета

Удаление пакета

pkg_delete название_пакета

Версия пакета

pkg_version название_пакета

Поиск ПО

Чтобы проверить установлено ли какое-либо ПО, можно использовать:

pkg_info | grep название_пакета

еще рекомендую сайт www.freshports.org для поиска пакетов и портов!

Порты

Установка

make install
make install clean

Установка с автоматическим принятием умолчательных конфигов для портов:

make -DBATCH install clean

Переустановка

make reinstall

Удаление

make deinstall

Очистка от промежуточных сборок

make clean

Очистка от скачанных файлов

make distclean

Предустановочная настройка (иначе установка будет производится по сохраненной при предыдущей сборке конфигурации)

make config

Поиск порта по ключу

make search key=КЛЮЧ

Поиск порта по названию

make search name=ИМЯ

Показать список зависимостей порта

make all-depends-list

Пример,

cd /usr/ports/www/apache22/
make config
make install clean

Это основные комманды, более подробно на официальной странице руководства по FreeBSD. Либо смотрите файл /usr/ports/Mk/bsd.port.mk

После установки ПО

Рекомендую выполнять "rehash", для того, чтобы не писать полный путь "/path/to/program", а юзать сразу "program":

# rehash

Обновления дерева портов

Утилита portsnap включена в состав базового дистрибутива с FreeBSD 6.0, для более ранних версий необходима установка (/usr/ports/sysutils/portsnap/).

При первом обновлении необходимо выполнить следующие команды:

portsnap fetch && portsnap extract

При последующих обновлениях

portsnap fetch update

Пример,

cd /usr/ports/
portsnap fetch && portsnap extract

Более подробно тут.

Обновление порта

Утилиту portupgrade надо сначала установить!

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

Обновление

portupgrade название_программы

Если вы хотите обновить только определённое приложение, но не полностью базу данных, используйте portupgrade pkgname, с флагом -r, если portupgrade должен отработать все пакеты, которые зависят от указанного, и использовать флаг -R для отработки всех пакетов, которые требуют указанные пакеты.

Для установки какого-либо порта (с фиксингом проблем с зависимостями и т.д.) нужно выполнить с флагом "-N":

portupgrade -N название_программы

Более подробно о portupgrade тут и тут.

P.S. Я использую систему портов, что и вам советую.

Комментарии

Спасибо, то что нужно. Как раз сервер новый ставил на фяхе. Задолбался тарболы качать и компилировать вручную.

Рад что пригодилось! Спасибо за каммент! :)

Ничего в этом не понимаю, но зачот

Позволю себе пару уточнений по поводу портов:
1) make clean не удаляет скачанные файлы, это делает make distclean
2) без make config настройка будет производиться не по дефолтам, а по сохраненной при предыдущей сборке конфигурации

Уже давно portupgrade перенесли из sysutils в ports-mgmt:
/usr/ports/ports-mgmt/portupgrade

Neolot, ну да, однако всеравно ссылается со старого места...

Eugen, полностью согласен касаемо 2-го пункта, поправлю в посте. А по поводу 1-го пункта, вы тоже правы, однако как я и сказал clean чистит от "промежуточных сборок".

Спасибо за ценные поправки!

напишите, что для portupgrade зависимостью является ruby. Это многих остановит =) есть простейшая альтернатива монстру portupgrade и называается portmaster

А вот я вам про одну вкусную вещичку расскажу.
Допустим, ты с помощью portupgrade апгрейдишь некую программу.
Программа построена, стерлась старая версия, начала ставиться новая.
А тут ап - неудача. Не удается поставить.
Оказывается, прежде чем стирать старую версию программы, portupgrade делает временный пакет. Если манипуляции с новой версией закончатся крахом, то из этого пакета будет автоматически восстановлена старая, рабочая версия.
Для меня это очень важно т.к. на наших серваках уйма софта. И серваков много. Проблем хватает. И за то что у меня одна из проблем решается автоматически, я не жалею, что немножко места на диске занимает ruby. Это совсем не страшно.

Mox, почитал прошлогодние отзывы по portmaster, много негатива.
И как сказал mvalery, немного памяти для руби не так страшно!

Спасибо за хорошою статейку
Мне она очень помогла как новечку

Андрей, искренне рад что помогла

Спасибо, щас всё чистинько поставлю )))

Эд, а при обновлении портов, можно как то исключить часть портов? Ну например я совсем не пользуюсь иксами, так же порты аудио,гамес и тому подобные... Может быть их как то можно исключить?)

Ну а чем они тебе мешают? Я думаю ты например не пользуешся альтернативными ядрами, но и не удаляеь их ведб :) Они тебе не мешают почемуто... Я просто не вижу смысла, но ты можешь банально удалить каталог :)

ну насколько я понял, то снэпшот строиться из того какие у меня порты стоят?
Да и вчера когда делал обновление портов, то основное время ушло на эти папки :)

Ты по обновления дерева портов или про обновления установленных портов? А то я тебя что-то уж не понимаю...

обновления дерева портов

Поправил, сенк

у меня фреебсд 7.0 утанавливает ПО уже 4 часа ето нормально???

Смотря какое ПО, вполне может быть что нормально. А характеристики машины можете сообщить? Какое ПО ставите?

Intel core duo 2.5 i 2.5 1gb ram inet 15mb на входе 2 на выходе! вообщем обновляю в первый раз! походу все ПО которое есть ! я скачал все пакеты задал постснап чтоб установил все установленое ПО! но спустя 6 час. он так и неустановил! я ресетнул! и Хсы уже незапускаются! я что то нетак делаю?

Как обновляли то? Покажите последовательность инструкций.
Думаю вы прервали обновление, что очень плохо. Графическая часть системы массивна и долго обновляется, это впорядке вещей (иксы, среда рабочего стола и т.д.)...
Что такое постснап? Вы имели ввиду портснап? Он не обновляет установленое ПО, он обновляет дерево портов

portugrade -a -u и он долго все устанавливает ! перед етим portsnap fetch update! думаю мне просто нехватило терпения=)

извиняюсь portupgrate!

Спасибо. Очень удобно изложена информация

блин раньше находил а сейчас немогу вспомнить название проги
короче альтернативный openssh сервак от германских разработчиков с высоким scalability, производительностью и пулями и уменьшеным потреблением памяти

хотя вот нашел lsh-server

хотя он дырявый .. не пойдет

Оставьте свой комментарий

Markdown