FreeBSD. Порты, пакеты и обновление ПО
Вместе с 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
хотя он дырявый .. не пойдет
Оставьте свой комментарий