Разное

Pkg freebsd: freebsd/pkg: Package management tool for FreeBSD. Help at #pkgng on Freenode or [email protected]

Содержание

Управление пакетами во FreeBSD при помощи утилиты pkg

Как известно, во FreeBSD можно использовать пакеты как бинарные, так и собранные из исходных кодов при помощи портов. Устройство портов за последнее время ничем не изменилось. А вот на смену утилитам для управления бинарными пакетами pkg_add, pkg_info и прочим pkg_* в последних версиях FreeBSD пришел новый пакетный менеджер pkg (также известный как pkgng). Данная небольшая заметка рассказывает о том, как им пользоваться.

Примечание: Узнать о том, как во FreeBSD раньше происходило управление бинарными пакетами, и о том, как пользоваться портами, вы можете из заметки Установка и обновление софта во FreeBSD. Не исключаю также, что вас могут заинтересовать статьи Использование FreeBSD на десктопе, версия 2.0 и Памятка по обновлению ядра и мира FreeBSD.

Итак, при первом запуске pkg без параметров вы скорее всего увидите такое сообщение:

The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]:

Отвечаем утвердительно, и ждем, пока pkg установится.

Затем читаем справку:

Посмотреть справку по конкретной команде можно так:

Обновляем информацию о доступных пакетах:

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

Обновляем установленные пакеты:

Ищем пакет по названию:

Установка пакета/пактетов и всех его/их зависимостей:

pkg install xorg
pkg install git-lite vim-lite sudo

Удаляем пакет:

Удаляем пакеты, которые больше не нужны:

Смотрим, к какому пакету относится файл:

pkg which /usr/local/bin/git

Посмотреть полный список файлов в пакете можно так:

Загружаем базу известных уязвимостей:

Проверяем установленные пакеты на предмет наличия известных уязвимостей, с ссылками на подробные отчеты:

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

Проверяем все установленные пакеты на предмет отсутствия требуемых зависимостей:

Удаляем из кэша старые пакеты:

Смотрим статистику:

Запрещаем/разрешаем обновление конкретного пакета:

pkg lock syncthing
pkg unlock syncthing

Посмотреть список «залоченых» пакетов:

Откатиться к более старой версии пакета:

sudo pkg remove chromium
sudo pkg install /var/cache/pkg/chromium-51.0.2704.106_2.txz

В целом я хочу сказать, что управление пакетами во FreeBSD стало намного лучше, чем оно было раньше. Прям действительно есть нормальный пакетный менеджер, не только не уступающий линуксовым Yum и Apt, но в чем-то даже и превосходящих их. Например, интерфейс у pkg прост, понятен и единообразен, чего уж точно нельзя сказать об Apt. Пакеты весьма свежие. Например, когда я разбирался с pkg, с его помощью можно было установить последний на тот момент Go версии 1.5, а в Ubuntu из коробки был доступен только древнейший Go 1.2. Аналога pkg audit в мире дистрибутивов Linux мне вот так с лету и вовсе неизвестно.

Все подробности, как обычно, в man pkg. А как вам новый пакетный менеджер FreeBSD?

Метки: FreeBSD.

переход с pkg_install на pkgng

Во FreeBSD версии 9.1 и выше утилиты семейства pkg_* (такие как pkg_install, pkg_add, pkg_create, pkg_delete, pkg_info, pkg_updating и pkg_version) были заменены на один инструмент — pkgng (Package New Generationn).

При использовании старой утилиты pkg_install — система постоянно напоминает об этом:

pkg_install EOL is scheduled for 2014-09-01. Please consider migrating to pkgng
http://blogs.freebsdish.org/portmgr/2014/02/03/time-to-bid-farewell-to-the-old-pkg_-tools/
If you do not want to see this message again set NO_WARNING_PKG_INSTALL_EOL=yes in your make.conf

Откладывание обновления системы и так уже привело к нескольким проблемам, например — «/usr/ports/Mk/bsd.sites.mk», line 958: Malformed conditional, и Error: Unable to get ftp://ftp.freebsd.org/pub/FreeBSD/ports./i386/packages-9.0-release/

Перед обновлением системы с 9.0 до 9.2 — было решено всё-таки сначала обновить систему портов.

Устанавливаем утилиту pkg:

# cd /usr/ports/ports-mgmt/pkg && make install clean

Если у вас уже или ещё не работает make — можно установить пакетом:

# pkg_add -r pkg

В конце установки нам сообщат, что:

If you are upgrading from the old package format, first run:

# pkg2ng

В файл make.conf добавляем указание использовать pkgng:

# echo 'WITH_PKGNG=YES' >> /etc/make.conf

ВАЖНО: следующий шаг необратим.

Далее — запускаем конвертацию базы портов:

# pkg2ng
Converting packages from /var/db/pkg
Converting libtool-2.4.2_3...
Installing libtool-2.4.2_3... done
Converting libiconv-1.14_3...
Installing libiconv-1.14_3... done
Converting mc-4.8.12_1...
...
Installing libXaw-1.0.12_2,2... done
Analysing shared libraries, this will take a while... done

В целом — на этом переход можно считать завершённым.

Для примера — получение информации о пакете Dovecot 1.2:

# pkg info dovecot-1.2.17_1
dovecot-1.2.17_1
Name           : dovecot
Version        : 1.2.17_1
Installed on   : Tue May 27 16:49:55 EEST 2014
Origin         : mail/dovecot
Architecture   : freebsd:9:x86:32
Prefix         : /usr/local
Maintainer     : unknown
WWW            : http://www.dovecot.org/
Comment        : Secure and compact IMAP and POP3 servers
...
Description    :
Dovecot is a secure and compact IMAP server which is in the early stages
of development. It supports Maildirs and mbox formats and much of the
IMAP v4 protocol including SSL/TLS. IPv6 support is also included.
Dovecot supports authentication with OpenLDAP, PostgreSQL, MySQL, vpopmail
and PAM.

WWW: http://www.dovecot.org/

Поиск устаревших пакетов:

# pkg version | grep "<"
vim-7.4.110                        <

Или так:

# pkg version -v | grep need
vim-7.4.110                        <   needs updating (port has 7.4.307)

Тогда как ранее это выполнялось практически такой же командой:

# pkg_version -v | grep need

Можно запустить portupgrade, что бы проверить что используется pkgng:

# portupgrade -n dovecot-1.2.17_1
--->  Session started at: Tue, 27 May 2014 17:11:27 +0300
[Reading data from pkg(8) ... - 407 packages found - done]
** None has been installed or upgraded.
--->  Session ended at: Tue, 27 May 2014 17:11:27 +0300 (consumed 00:00:00)

Получить полную справку по командам:

# pkg help

Или по одной команде, например — version:

# pkg help version

Настройки pkgng хранятся в файле /usr/local/etc/pkg.conf, данные в котором записаны в формате YAML.

При первом запуске обновления локальной копии репозитория (да-да, теперь и FreeBSD работает с репозиториями) — будет получено сообщение об ошибке:

# pkg update -f
Updating repository catalogue
No valid repository found.

Копируем файл конфигурации:

# cp /usr/local/etc/pkg.conf.sample /usr/local/etc/pkg.conf

Для указания главного (или — основного) репозитория — в файл достаточно добавить строку:

# echo "PACKAGESITE: http://pkgbeta.freebsd.org/freebsd:9:x86:32/latest/" >> /usr/local/etc/pkg.conf

Хотя PACKAGESITE уже считается устаревшей опцией.

Найти URL можно зайдя на страницу http://pkgbeta.freebsd.org/ и выбрав нужную версию FreeBSD и архитектуру.

Можно создать несколько репозиториев — смотрите man pkg.conf, там в конце есть несколько примеров.

Ещё раз запускаем обновление:

# pkg update -f
pkg: PACKAGESITE in pkg.conf is deprecated. Please create a repository configuration file
Updating repository catalogue
pkg: Warning: use of http:// URL scheme with SRV records is deprecated: switch to pkg+http://
digests.txz                                                                                                                                  100% 1094KB 364.5KB/s 773.6KB/s   00:03
pkg: Warning: use of http:// URL scheme with SRV records is deprecated: switch to pkg+http://
packagesite.txz                                                                                                                              100% 5043KB 504.3KB/s   1.1MB/s   00:10
Incremental update completed, 23386 packages processed:
0 packages updated, 0 removed and 23386 added.

Ещё одна новая и весьма приятная возможность pkg — проверка установленных портов на наличие известных уязвимостей:

# pkg audit -F
pkg: PACKAGESITE in pkg.conf is deprecated. Please create a repository configuration file
vuln.xml.bz2                                                                                                                                 100%  440KB 219.8KB/s 389.7KB/s   00:02
0 problem(s) in the installed packages found.

Ссылки по теме:

http://www.maxblogs.ru
https://wiki.freebsd.org
http://www.freebsd.org
https://mebsd.com
https://lists.freebsd.org

Обновление FreeBSD от и до / Хабр

Как часто бывает, зацепив одну, на первый взгляд, маленькую тему, с желанием быстро все узнать и все настроить, приходится закапываться в дремучие дебри и читать не одну статью и/или мануал. Так и получилось у меня в этот раз. Изначально было желание просто узнать, как обновлять порты (или исходные тексты портов) чтоб при желании, устанавливать не устаревшее ПО, но пришлось закопаться немного по глубже.
Эта статья предназначена только для новичков во FreeBSD, опытные профи тут вообще ни чего нового, думаю, для себя не найдут. По этому, если вы на «ты» с этой системой, можете смело пропускать дальнейший текст.
Информации на эту тему хватает, но из 6-10 заметок и статей я взял, так скажем, лучшие наработки и опыт, и записал их в одну, с ссылками на более полные статьи, так что при желании можно получить более подробную информацию по каждому пункту.
Содержание статьи:
1) Выбор ПО для обновления исходных текстов.
2) Процесс обновления исходных текстов системы и портов.
3) Обновление системы(ядро и мир).
4) Обновление портов при помощи pkg_*, portupgrade, portdowngrade.
5) Заключение
6) Дополнительная литература.

Выбор ПО для обновления исходных текстов

Итак, при обновлении исходных текстов я выделил 2 подраздела – это исходные тексты системы и исходные тексты портов.
1) При обновлении исходных текстов системы можно воспользоваться либо CVS либо SVN репозиторием. SVN более новая разработка и предназначен заменить устаревший cvs, соответственно svn имеет более широкий функционал при работе с версиями исходных текстов. Но т.к. я FreeBSD использую в качестве шлюза и каждые несколько дней обновлять систему и дополнительные утилиты не собираюсь, было решено остановиться на старом добром cvs, т.к. svn требует установить не малое кол-во дополнительного ПО, а глобальных плюсов для моих задач я в svn не увидел. Для работы с cvs репозиторием будет использоваться утилита csup (тоже самое что и cvsup но написанная на С), входящая в стандартный состав freebsd, то есть дополнительно ставить ни чего не нужно (обновление через SVN рассмотрено в доп-ой литературе в конце статьи).
2) Обновление исходных текстов для портов возможно только из CVS репозитория, для этого можно воспользоваться либо csup либо portsnap. Portsnap является рекомендуемой системой обновления портов и она так же предустановленна в системе, ее и будем использовать.

Процесс обновления исходных текстов системы и портов.

Настройка csup для обновления исходных текстов системы.

Для настройки параметров обновления создаём файл /etc/supfile:
*default host=cvsup6.ru.FreeBSD.org

*default base=/var/db

*default prefix=/usr

*default release=cvs

*default delete use-rel-suffix

*default compress

#*default release=cvs tag=RELENG_8_1_0_RELEASE

*default release=cvs tag=RELENG_8

src-all

примеры тегов для дерева src-all:

RELENG_8 — Ветка FreeBSD 8-STABLE

RELENG_8_1 — Ветка FreeBSD 8.1 в которую идут патчи безопасности

RELENG_8_1_0_RELEASE — «Замороженный» снепшот состояния кода FreeBSD 8.1 в момент его релиза

Всё готово, запускаем обновление:
# csup -L 2 /etc/supfile
Можно добавить ключик -z (компрессия) для экономии траффика.

Если файл настройки только что создан, и эта программа раньше никогда не использовалась, то вы можете начать беспокоится а все ли пройдет удачно… Есть простой способ для пробного запуска без затрагивания ваших драгоценных файлов. Просто создайте где-нибудь пустой каталог и поместите его в качестве дополнительного аргумента командной строки:
# mkdir /var/tmp/dest

# cvsup supfile /var/tmp/dest


Указанный каталог будет использоваться в качестве места назначения всех обновлений. CVSup будет работать с файлами из /usr/src, но не станет изменять или удалять их. Вместо этого все обновления файлов будут помещены в /var/tmp/dest/usr/src. При запуске таким способом CVSup оставит также неприкосновенным каталог base. Новые версии этих файлов будут записаны в указанный каталог. Если у вас есть права на чтение каталога /usr/src, вам даже не потребуется работать под root для выполнения пробного обновления.

Обновление портов через portsnap

Для первого запуска:
$ portsnap fetch

$ portsnap extract

Для всех последующих запусков:
$ portsnap fetch

$ portsnap update

Fastest cvsup

Задача утилиты fastest_cvsup — поиск оптимального по скорости доступа сервера с CVS репозиторием.
$ cd /usr/ports/sysutils/fastest_cvsup/

$ make install clean & rehash

Применение:
$ fastest_cvsup -q -c ru

Обновление системы (ядро и мир), теория.

Предположим, что мы поставили себе свежеиспеченую FreeBSD 8.1-RELEASE, и захотели обновить ее до ветки FreeBSD 8-STABLE. Нам необходимо произвести синхронизацию тех исходных текстов которые у нас есть на диске, с репозиторием — скачать новые части.
Последовательность действий такова:
1) составляем supfile и помещаем в него директиву list. В которой указываем под каким именем должен будет сохранен checkouts файл:
src-all tag=RELENG_8_1_0_RELEASE list=RELENG_8
2) Проводим первую синхронизацию, командой (#csup -L 2 /etc/supfile), с замороженной веткой нашего релиза RELENG_8_1_0_RELEASE
3) Удаляем из нашего supfile директиву list:
src-all tag=RELENG_8
4) проводим вторую синхронизацию с веткой RELENG_8 — обновляем исходники до STABLE

Суть идеи в следующем — при работе csup она использует checkouts файлы для того чтобы сравнивать информацию о версиях файлов на локальном диске и на сервере, и проводить синхронизацию только изменившихся. Сразу после установки системы, в директории /var/db/sup никаких checkouts файлов для синхронизируемых нами коллекций еще нет. Трюк в том, чтобы сначала их создать. Так как у нас релиз 8.1 и исходники установлены от него же, то проведя первую «синхронизацию» с «замороженным» тегом этого же самого релиза RELENG_8_1_0_RELEASE мы сможем построить актуальные checkouts файлы. Первая синхронизация по сути нечего не синхронизирует, а только энумерует файлы на диске и в репозитории, да строит базу данных — checkouts файл. После первой синхронизации мы получим в директории /var/db/sup поддиректорию src-all.

В ней будет файл с именем checkouts.cvs:RELENG_8 – т.к. мы это указали в директиве list. Как только мы начнем вторую синхронизацию с сервером, то csup будет точно знать какие версии файлов надо передать, а что надо удалить. Синхронизация будет выполнена более чисто, займет меньше времени и потребует меньше трафика.

Обнолвене системы (ядро и мир), пркатика.

uname –v – узнаем текущую версию ядра
uname –r — узнаем текущую версию системы
Обновление лучше всего разбить на 2 части, сборка – компиляция исходников и дальнейшая инсталляция. Заниматься этим приходится не часто по этому, для меня, лучше всего делать все схематично, так проще отлавливать возможные косяки.

I) Сборка

1. Ядро
1) cd /usr/src/
2) rm -R /usr/obj/*
(Если при удаление выдало ошибки по поводу установленных флагов, то необходимо выполнить команду #chflags -R noschg * )
3) make clean && make clean
4) make -sj4 buildkernel KERNCONF=YOUR_KERNEL_HERE
(YOUR_KERNEL_HERE — название ядра которое лежит в папке /usr/src/sys/i386/conf. Но заметьте, вы путь не указываете, а указываете только имя файла. Советую переименовать файл, чтобы скомпилилось новое ядро, а не то что было до обновления системы)
Где j4 — компилировать в 4 потока. Рекомендуется для однопроцессорных машин, т.к. компиляция в большей степени требовательная к системе ввода-вывода, а не процессору. Для многопроцессорных это значение можно увиличить. s — уменьшает количество выводимой инфы на экран.)

2. Мир (система)

1) cd /usr/src/

2) rm -R /usr/obj/*

3) make cleandir && make cleandir – (make cleandir делать дважды рекомендует хандбук)

4) make -sj4 buildworld

II) Инсталляция

1. Ядро
1) make installkernel KERNCONF=YOUR_KERNEL_HERE
2) reboot
2. Мир (система)
Мир — это пользовательские программы – типа: grep, awk, sh, chmod и прочего. Короче всё, что не входит в ядро и модули ядра. Перед сборкой рекомендуется вернуть к стандартному виду /etc/make.conf. В случае проблем — если что-то не собирается или не инсталлится — стоит посмотреть, что там и убрать лишнее.
В процессе инсталляции мира, в идеале нужно запускать программу mergemaster. Эта программа определяет разницу между вашими конфигурационными файлами в каталоге /etc и конфигурационными файлами из дерева исходных текстов /usr/src/etc. Это является рекомендуемым способом синхронизации системных конфигурационных файлов с теми, что размещены в дереве исходных текстов.
Для пересборки мира лучше зайти в однопользовательский режим(single-user):
1) mount -u /
2) mount -a
3) rm -R /usr/obj/*
4) /usr/src/usr.sbin/mergemaster –p
Если есть отличия, то на экране появляется сообщение об этом.
Первой строкой в нем идет имя файла, который не соответствует новым требованиям, а ниже сами отличия.
Знаком «-» помечаются строки, которые утилита собирается удалить,
а «+» — которые будут добавлены.
В конце предлагаются следующие варианты:
d — удалить предлагаемый вариант и оставить старый;
i — установить предлагаемый вариант, удалив старый;
m — сравнить построчно старый и предлагаемый вариант;
v — посмотреть отличия в файлах снова.
5) cd /usr/src/
6) make installworld
7) mergemaster
8) reboot
9) cd /usr/src/
10) make delete-old

Обновление портов при помощи pkg_*, portupgrade, portdowngrade.

1) #portsnap fetch update – обновление портов.
2) # pkg_version -v | grep “need” — Вывод списка портов, которые надо обновить
3) #pkg_create -b port_name – Возможность создать пакеты для нужных портов с последющей установкой через pkg_add
4) #pkg_add -i -f port_name.tbz – Установка пакета без зависимостей. После такой установки проще всего откатится на предыдущую версию.

Использование утилиты portupgrade

Найти можно тут — /usr/ports/ports-mgmt/portupgrade
1) portupgrade -nr port_name – выводит подробную информацию о будущей установке пакета (какие файлы и зависимости обновятся)
2) portupgrade -ir port_name
Ключ -i указывает на то, чтобы при апгрейде опрашивался пользователь в случаях, когда есть выборки (yes/no).
Ключ -r указывает обновлять нижестоящую цепочку зависимостей порта.

При апдейте с помощью portupgrade важным козырем является файл настроек /usr/local/etc/pkgtools.conf, в котором содержатся параметры передаваемые порту при сборке (хэш MAKE_ARGS). Полезно отредактировать подобные настройки в этом файле под свои нужды и последующие обновления будут проходить без лишних проблем.

Также нужные параметры можно выдрать в случае переустановки порта или при переходе на какую-то новую версию, да и это полезно бывает для поддержания совместимости установок между серверами. Например, много нервов может убить разнящаяся кодировка установленного mysql при переносе какого-то сайта между серверами.

Бывают случаи, когда надо железно запретить обновления для определенного порта. Имена таких портов можно указать в хэше HOLD_PKGS в файле pkgtools.conf, например так запрещаем обновление midnight commander’a:
HOLD_PKGS = [

'mc-*',

]

Утилита portdowngrade

Позволяет откатится на предыдущую версию.
Установка:
# cd /usr/ports/ports-mgmt/portdowngrade

# make DEFAULT_CVS_SERVER="[email protected]:/home/ncvs" install clean

Использование:
#portdowngrade port_name – выводит список предыдущих версий порта и дает возможность выбрать и установить нужную версию.

Заключение

Вот такой вот получился мануал, по полному обновлению FreeBSD. Я только изучаю эту ОС по этому на открытие чего то нового не претендую, но лично мне намного удобнее пользоваться одной статьей чем 5-ю, 6-ю и т.д. для каждой отдельной утилиты, по этому мануал я составлял для себя, но может, он так же, окажется, кому то полезным!

Литература

Управление версиями в Subversion
Обновление исходных текстов: cvsup, csup, svn, portsnap
Использование csup
Примеры более тонкого управления исходными текстами
Дополнительная информация по запуску mergemaster
portdowngrade — откатываем нужный порт до любой ранее версии
portupgrade — `обновлялка` установленных портов.

Установка и обновление софта во FreeBSD

В сети есть много информации про использование портов и пакеджей FreeBSD. К сожалению, часто эта информация оказывается устаревшей. Иногда бывает, что одна статья противоречит другой. Что касается хэндбука, то, на момент написания этих строк, в нем не было ни слова про утилиту pkg_upgrade, а информация об установке приложений из портов и их обновлении находилась на расстоянии двадцати глав. В общем, мне такая ситуация не нравится, так что я решил осветить вопрос в своем блоге.

1. Из чего выбираем?

Первое, что нужно сделать относительно установки софта во FreeBSD — это забыть про «традиционный unix-метод», заключающийся в скачивании архива с исходниками, его распаковке и выполнении команд ./configure, make и make install. Может, пару лет назад в каком-нибудь Slackware еще и было принято так делать, но даже в этом дистрибутиве уже появилась система портов.

Как я уже отмечал ранее, FreeBSD предоставляет два способа установки и обновления программ — из бинарных пакетов (packages) и исходных кодов (портов, ports). У каждого подхода есть свои преимущества. С некоторой осторожностью можно использовать их совместно. Для начала рассмотрим два крайних случая — использование только пакеджей или только портов.

2. Использование пакеджей

Важно! Эта часть статьи успела потерять актуальность, во всяком случае для последних версий FreeBSD. Подробности в заметке Управление пакетами во FreeBSD при помощи утилиты pkg. Часть про порты, описанная ниже в пункте 3 по состоянию на 2016-03-15 все еще актуальна.

Бинарные пакеты представляют собой файлы определенного формата и дерево каталогов определенной структуры, упакованных в один архив. Все пакеты, за исключением нескольких особых случаев, можно скачать с ftp.freebsd.org. Поскольку внутри пакеджей хранятся бинарные исполняемые файлы, то для каждой архитектуры процессора и версии операционной системы нужны свои пакеджи. Какие пакеты мы хотим использовать, определяется переменной окружения $PACKAGESITE. Вот пример для FreeBSD 8 и архитектуры процессора i386:

# это нужно прописать в /root/.cshrc
setenv PACKAGESITE \
http://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-stable/Latest/

Как и в случае с версиями операционной системы, пакеджи бывают версий Release, Stable и Current. Stable — оптимальный вариант в плане частоты обновления и стабильности, так что с Release и Current советую вообще не связываться.

Если вы читали мою заметку про быструю установку FreeBSD, то можете помнить, как для установки пакеджей использовалась утилита pkg_add. По умолчанию она ищет пакеджи в каталоге, указанном в переменной окружения $PKG_PATH. Изменить это поведение можно с помощью ключа -r:

Программа скачает и установит Xorg, а также все программы и библиотеки, от которых он зависит. Собственно, главная фишка системы пакеджей и портов заключается в автоматическом контроле зависимостей. Не нужно искать по всей сети исходники программ/библиотек, собирать их, а затем выяснить, что тебе нужно было собрать другие версии. Одна команда — и система сделает все за тебя. Современные дистрибутивы Linux и *BSD используют только такой подход. Вот почему нужно забыть «./configure; make; make install», как страшный сон.

Посмотреть список всех установленных программ можно командой pkg_info. Как правило, список получается довольно объемный, так что используйте grep и less.

Для удаления пакеджей предназначена команда pkg_delete. Использовать ее без ключей неудобно, потому что в этом случае нужно указать полное название пакета. Например, «pkg_delete xorg-fonts-7.5» будет работать, а «pkg_delete xorg-fonts» выведет ошибку, дескать пакет не установлен. Чтобы изменить такое поведение, используйте ключи -ix:

Эта команда будет пытаться удалить все пакеты, в названии которых содержится «xorg» и перед каждым удалением потребует нашего подтверждения. Не правда ли, это удобнее, чем вручную вводить название десяти пакетов, предварительно выясняя их версии с помощью pkg_info? Также pkg_delete следит, чтобы удаление пакета не привело к нарушению зависимостей.

Теперь допустим, что нам хочется почистить систему от ненужных пакетов. Ненужный пакет — это тот, который мы не используем и от которого не зависят другие пакеты. Последнее можно проверить следующим образом:

Проблема в том, что вывод у команды довольно объёмный и искать в нем пакеты, которые можно безопасно удалить, довольно неприятно. Упростить себе работу можно, используя Perl и регулярные выражения:

pkg_info -Ra \
| perl -e ‘while(<>){$t.=$_};@t=$t=~/Information for ([^:]+):(?:\s{3}|
\s{2}Required by:\s{4})/sig;print join(«\n»,@t).»\n»;’

Чтобы постоянно не вводить весь этот ужас, советую прописать алиас («pkg_leafs» ?) в /root/.cshrc сохранить команду в .sh-скрипт (почему не csh?) и затем использовать этот скрипт вместе с grep.

Наконец, самое интересное — обновление пакетов. Лучше всего для этой цели подходит pkg_upgrade, входящий в пакет bsdadminscripts. Не удивляйтесь, что система не имеет средств для обновления программ «из коробки». Какой-нибудь веб-сервер обычно настраивается один раз, после чего работает 5-10 лет, пока железо не развалится. Если за это время в Apache не найдут критическую уязвимость (а шансы этого события не так уж велики), то никому в голову не придет обновляться.

Перед обновлением нелишним будет узнать, что собственно мы собираемся обновлять:

Того же эффекта можно добиться командой:

pkg_version -v /var/db/uma/FTPINDEX | grep needs

По умолчанию pkg_version использует индекс, расположенный в дереве портов, а совсем не факт, что это дерево у нас имеется. Поэтому путь к файлу указывается явно. Сам файл FTPINDEX обновляется либо pkg_upgrade’ом, как это показано выше, либо утилитой uma.

Обновление бинарных пакетов обычно происходит быстро, так что можно сразу обновить весь устаревший софт:

Если же вам нужно обновить только одну или несколько программ, не забывайте, что вы можете нарушить зависимости. Избежать такой неприятности можно с помощью ключей -R (обновить то, что зависит от пакета) и -r (обновить то, от чего зависит пакет):

И последнее — это поиск пакетов. Допустим, вам нужен какой-то пакет, но вы не знаете, как он называется. Есть два пути. Во-первых, можно воспользоваться файлом FTPINDEX:

cat /var/db/uma/FTPINDEX | cut -d ‘|’ -f 1 | grep -i CodeBlocks

Во-вторых, можно воспользоваться веб-поиском на freebsd.org.

3. Использование портов

Система портов позволяет устанавливать программы, компилируя их из исходных кодов. Порты обновляются намного чаще пакетов, так что с их помощью вы получите более свежий софт. Поскольку в нашем распоряжении имеются исходники, мы можем настроить приложение, включив нужные нам опции и отключив ненужные. Также можно произвести оптимизацию программы под используемый нами процессор и передать дополнительные ключи компилятору.

Платить за все это приходится в первую очередь временем установки программ. Например, даже на очень мощных компьютерах компиляция OpenOffice занимает около суток и требует сколько-то там гигабайт оперативной памяти и места на диске. Сколько точно — не помню. Для сравнения, установка OpenOffice с помощью пакетов занимает несколько минут. Однако это — крайний случай. Мелкие утилиты обычно компилируются за минуты, на софт покрупнее может уходить час или два.

Указать аргументы компилятора и тип процессора можно в файле /etc/make.conf:

CPUTYPE=core2 # тип процессора
CFLAGS?=-O3 -pipe # аргументы компилятора, см ‘man gcc’

В принципе, можно этот файл и не трогать. Но раз мы решили заюзать порты, почему бы не воспользоваться всеми их плюсами? Если вы не уверены на счет того, какой типа процессора указать, загляните в /usr/share/examples/etc/make.conf. Там перечислены все поддерживаемые типы процессоров. У меня содержимое оказалось следующим:

# Currently the following CPU types are recognized:
#   Intel x86 architecture:
#       (AMD CPUs)      opteron athlon64 athlon-mp athlon-xp athlon-4
#                       athlon-tbird athlon k8 k6-3 k6-2 k6 k5
#       (Intel CPUs)    core2 core nocona pentium4m pentium4 prescott
#                       pentium3m pentium3 pentium-m pentium2
#                       pentiumpro pentium-mmx pentium i486 i386
#       (Via CPUs)      c3 c3-2
#   Alpha/AXP architecture: ev67 ev6 pca56 ev56 ev5 ev45 ev4
#   AMD64 architecture: opteron, athlon64, nocona, prescott, core2
#   Intel ia64 architecture: itanium2, itanium

Если вы не нашли свой тип процессора, то либо вообще не указывайте его (не так уж сильно это повлияет на скорость приложений), либо проконсультируйтесь у знающих людей на каком-нибудь форуме. Если вписать что попало, велика вероятность получить неработающую программу.

Теперь — об аргументах компилятора (CFLAGS). Чем выше уровень оптимизации, тем медленнее собираются программы, но и тем быстрее они будут работать. Например, флаг -O0 вообще отключает оптимизацию (используется gcc по умолчанию), а -O3 включает все доступные способы оптимизации. Еще есть флаг -Os, предназначенный для оптимизации размера программы. Используйте его, если у вас на диске ну очень мало места. Вообще, не стоит слишком беспокоиться на счет того, что программа будет тормозить, если скомпилировать ее с ключом -O2 вместо -O3. К тому же, есть шанс (небольшой, правда) что какие-то программы не соберутся с ключом -O3.

Еще хочу отметить, что ключи, которые вы зададите в CFLAGS, влияют только на порты. Это, в частности, означает, что не нужно беспокоиться, что эксперименты с make.conf приведут к тому, что вы не сможете обновить ядро системы из исходных кодов. Так, информация к сведению.

Дерево портов хранится в каталоге /usr/ports/. Если у вас этот каталог пустой, порты можно скачать с помощью программы portsnap:

Примечание: В старых мануалах рекомендуется использовать утилиту cvsup, но это устаревший метод. Забудьте про cvsup так же, как и про «./configure; make; make install»!

Если дерево портов уже есть, не забывайте время от времени его обновлять:

Чтобы установить программу из портов, сначала нужно найти соответствующей ей каталог. Имена каталогов образуются следующим образом: /usr/ports/группа/программа/. Например, в каталоге /usr/ports/ftp/ можно найти все программы, имеющие отношение к протоколу FTP, а упомянутый ранее bsdadminscripts находятся в /usr/ports/sysutils/bsdadminscripts/.

Есть несколько способов найти нужную программу, кроме упомянутого поиска на freebsd.org. Например:

# сначала переходим в каталог с портами
cd /usr/ports
# ищем порт по названию
make search name=firefox
# ищем по ключевому слову
make search key=browser
# быстрый поиск
echo /usr/ports/*/*firefox*

Перейдя в нужный каталог, достаточно сказать

Система сама скачает и распакует исходники программы, а также всех программ и библиотек, от которых она зависит, затем соберет и установит их, после чего удалит весь мусор. А теперь представьте, что когда-то все это нужно было делать руками!

Некоторые порты имеют дополнительные настройки, которые вас попросят уточнить в процессе установки. Если вы не понимаете, что от вас хотят, соглашайтесь на настройки по умолчанию. Часто во время установки нужного вам порта также устанавливаются его зависимости. Некоторые зависимости интересуются, с какими настройками вы хотели бы их собрать. В результате приходится следить за всем процессом и время от времени отвечать на вопросы. Это не совсем удобно.

Большинство портов понимают команду:

Выполнив ее, вы настроите порт и его зависимости, после чего можно будет все это дело собрать, не отвечая ни на какие вопросы. Также есть команда, позволяющая вам принять все настройки по умолчанию:

make -DBATCH install clean

Самое интересное в портах то, что после компиляции все приложения собираются в пакеты, после чего происходит установка этих самых пакетов. Другими словами, всем хозяйством, установленным из портов, можно управлять теми же средствами, что мы использовались при работы с пакетами — pkg_info, pkg_delete и так далее!

Примечание: Собрать бинарный пакет из портов можно командой «make package». Для создания пакетов из уже установленных приложений используйте команду pkg_create. Например, команда «pkg_create -R -b xorg-fonts-7.5» создаст бинарные пакеты xorg-fonts и всех его зависимостей, а командной «pkg_create -vb ‘*’» можно сделать резервную копию всех установленных приложений. Подробности — в man-pages.

Следующим по интересности, как и следовало ожидать, идет обновление. Есть две утилиты, предназначенные для обновления программ из портов — portupgrade и portmaster. Мне portmaster кажется во всех отношениях лучше. Во-первых, для работы ему не нужно ничего, кроме самого дерева портов. В отличие от него portupgrade работает с собственной базой, которая частенько портится, в связи с чем ее приходится перестраивать. Во-вторых, portmaster, в отличие от portupgrade, не тянет за собой Ruby. Поскольку программ, использующих Ruby, довольно мало, не хочется тратить время на его сборку ради одного только portupgrade. Мы ведь помним, что каждый лишний порт — это лишнее время на его компиляцию при установке и обновлении?

В общем, я буду считать, что вы используете portmaster (/usr/ports/ports-mgmt/portmaster/). Однако если это не так, не переживайте — portupgrade имеет точно такой же интерфейс, что и portmaster. То есть, при одинаковых аргументах эти программы (как правило) делают одно и то же.

Итак, мы обновили порты с помощью portsnap и узнали, какие программы состарились, с помощью уже знакомого нам pkg_version. Кстати, эта утилита не является частью bsdadminscripts, а идет вместе с системой. Можно запускать portmaster? Нет, не можно!

Первое, что нужно сделать перед обновлением приложений из портов — это внимательно прочитать файл /usr/ports/UPDATING и выполнить все касающиеся нас инструкции. Не сомневайтесь, вы обязательно забудете это сделать, так что лучше сразу подпишитесь на ленту со всеми изменениями в этом файле. Если вы редко заглядываете в свою RSS-читалку, воспользуйтесь сервисом rss2email.ru.

Обновить программу портмастером очень просто (кстати, с его же помощью можно производить установку):

# ключ -d означает «удалять старые архивы с исходниками»
# если не указать, портмастер будет доставать вас
# множеством вопросов по этому поводу
portmaster -d vim

Сложности начинаются, когда вспоминаешь про зависимости. Самое правильное решение заключается в обновлении всех портов, зависящих от данного (приложения, от которых зависит порт, обновляются всегда):

Еще можно обновить сразу весть устаревший софт:

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

Второй способ заключается в совместном использовании портов и пакеджей, но об этом чуть ниже. Прежде, чем перейти к этой теме, хочу обратить ваше внимание на ключ -L, поддерживаемый portmaster’ом. Он позволяет получить список приложений, которые можно безопасно удалить, не нарушив зависимости. Лучше использовать его, чем связку из алиасов и регулярных выражений, упомянутую выше.

4. Совместное использование портов и пакетов

Пакеджи и порты можно использовать совместно. Если большую часть времени вы используете пакеджи, то можете время от времени устанавливать что-то из портов, потому что в портах софт всегда свежее, чем в бинарных пакетах. Главное — обновить дерево портов перед установкой. Впрочем, в этом случае с большой вероятностью могут произойти Bad Things™, в связи с чем новичкам лучше его избегать.

Если большую часть времени вы пользуетесь портами, то можете сэкономить на времени установки и обновлении приложений. Для этого нужно использовать portmaster с ключом -P:

# обновить vim, по возможности используя пакеты
portmaster -rdP vim

Если portmaster сможет найти на $PACKAGESITE пакет той же версии, что и версия порта, приложение будет установлено из пакета, а не из портов. Еще portmaster имеет ключ -PP, означающий «устанавливать приложения только из пакетов, а если достаточно свежего пакета нет, прервать работу». Правда, пользы от этого ключа мало.

Еще один вариант — создать собственный веб- или ftp-сервер с пакетами, где они будут обновляться чаще, чем на официальном сервере. То есть на сервере пакеты будут собираться из портов, после чего раздаваться клиентам. Правда, это имеет смысл только в том случае, если у вас большой компьютерный парк, на котором нужно поддерживать свежие версии ПО.

Возможно, это будет не сервер, а домашний компьютер, на котором вы будете компилировать пакеты для дальнейшей установки на свой ноутбук и рабочий компьютер. Но это при условии, что на всех трех машинах используется FreeBSD одной ветки и используются процессоры одной архитектуры (i386 или amd64).

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

5. И снова эта проблема выбора…

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

Преимущества пакетов — простота использования и быстрая установка. За это приходится платить малой гибкостью и редкими обновлениями. Порты позволяют установить самый свежий софт, настроенный для конкретной ситуации и оптимизированный под конкретную машину. Увы, установка из исходников занимает время, а также требует дополнительного места на диске и средств разработки, необходимых для компиляции приложений.

Используя связку порты+пакеты, можно немного компенсировать недостатки каждого из методов. Но комбинированный подход обладает как преимуществами двух методов, так и суммарными недостатками. Оптимальным вариантом было бы завести сервер, предназначенный для сборки пакетов под наши нужды. Но в этом случае придется выделить лишний сервер или раскошелиться на VDS. Впрочем, если у вас есть машина с десятком виртуалок, считайте, что никаких проблем у вас нет.

Совет стандартный. Используйте то, что больше подходит для вашей задачи. Для себя я решил, что на ноутбуке лучше использовать пакеджи, а на сервере — порты. Вообще-то, учитывая мощность современных компьютеров, можно смело обходиться и одними пакетами.

Дополнение: Тут товарищ visokos посоветовал утилиту pkg_cleanup. Как несложно догадаться по названию, предназначена она для удаления ненужных пакетов:

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

Дополнение: В продолжение — Памятка по обновлению ядра и мира FreeBSD.

Метки: FreeBSD.

Переход во FreeBSD на использование PKGNG ­ Дневник ­ Максим Боголепов

Существующий пакетный менеджер в FreeBSD ветки 9 и ниже был предложен Джорданом Хаббардом (Jordan Hubbard) еще в далеком 1994 году. С тех пор многое изменилось, поэтому разработчики FreeBSD, начиная с ветки 10, заменили устаревший пакетный менеджер на новый – PKGNG (package new generation). Для установки бинарных пакетов теперь предлагается использовать удаленные репозитории, например – pkg.FreeBSD.org. Из базовой системы были удалены утилиты pkg_* (такие, как: pkg_install, pkg_add, pkg_create, pkg_delete, pkg_info, pkg_updating и pkg_version).

Теперь при обновлении какого-либо порта вы можете видеть вот такое предупреждающее сообщение:

/!\ WARNING /!\
pkg_install EOL is scheduled for 2014-09-01. Please consider migrating to pkgng
http://blogs.freebsdish.org/portmgr/2014/02/03/time-to-bid-farewell-to-the-old-pkg_-tools/
If you do not want to see this message again set NO_WARNING_PKG_INSTALL_EOL=yes in your make.conf

В котором вам предлагается до сентября 2014 года перейти на новый пакетный менеджер, т.к. поддержка старого прекратится.

Переход на новый пакетный менеджер PKGNG в операционных системах FreeBSD версии 9 и ниже осуществляется следующим образом (все нижеперечисленные процедуры осуществлялись на FreeBSD 9.0-RELEASE). Сперва установим сам порт PKG:

# make -C /usr/ports/ports-mgmt/pkg install clean

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

If you are upgrading from the old package format, first run:
  # pkg2ng

Но перед началом его использования укажите опцию WITH_PKGNG=YES в своем make.conf:

# echo 'WITH_PKGNG=YES' >> /etc/make.conf

Теперь дадим команду pkg2ng, которая осуществить конвертацию существующей базы установленных портов в новую, для использования с pkgng:

# pkg2ng
Converting packages from /var/db/pkg
...
Converting nmap-6.40_2...
Installing nmap-6.40_2... done
...

Принудительно обновите базу данных установленных портов:

# pkgdb -fu
--->  Updating the pkgdb
[Reading data from pkg(8) ... - 46 packages found - done]

В принципе – переход на использование нового пакетного менеджера завершен. Для обновления установленных портов я использую portupgrade. Теперь при ее запуске можно видеть, что используется pkg:

# portupgrade -van
--->  Session started at: Mon, 24 Mar 2014 10:05:07 +0400
[Reading data from pkg(8) ... - 46 packages found - done]
** None has been installed or upgraded.
--->  Session ended at: Mon, 24 Mar 2014 10:05:24 +0400 (consumed 00:00:16)

Но при попытке обновить базу данных с удаленного репозитария выскочила ошибка:

# pkg update -f
Updating repository catalogue
No valid repository found.

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

Удалить существующий конфигурационный файл для pkg и скопировать его из того, что дан по-умолчанию:

# rm -f /usr/local/etc/pkg.conf
# cp /usr/local/etc/pkg.conf.sample /usr/local/etc/pkg.conf

Создать каталог /usr/local/etc/pkg/repos и разместить в нем конфигурационный файл FreeBSD.conf с указанием расположения удаленного репозитария (обратите внимание на кавычки, они должны быть прямыми "):

 # mkdir -p /usr/local/etc/pkg/repos
 # nano -w /usr/local/etc/pkg/repos/FreeBSD.conf

 FreeBSD: {
 url: “pkg+http://pkg.FreeBSD.org/${ABI}/latest”,
 mirror_type: “srv”,
 enabled: yes
 }

Теперь выполнение обновления базы pkg:

# pkg update -f
Updating repository catalogue
digests.txz                                              100% 1097KB   1.1MB/s   1.1MB/s   00:00
packagesite.txz                                          100% 5087KB   5.0MB/s   5.0MB/s   00:00
Incremental update completed, 23432 packages processed:
0 packages updated, 0 removed and 23432 added.

Использование pkg хорошо документировано. Полный список команд вы получите дав просто pkg:

# pkg
...
Commands supported:
        add            Registers a package and installs it on the system
        annotate       Add, modify or delete tag-value style annotations on packages
...

Получить помощь по отдельно взятой команде можно так:

# pkg help update

На момент написания статьи версия pkgng:

# pkg -v
1.2.7

Однако, вам теперь необходимо изучить применение новых опций, указываемых в вашем make.conf или при сборке портов. Конструкция типа WITH_NAME, WITHOUT_NAME канула в лету. Теперь вместо, например, WITHOUT_X11=YES необходимо указывать WITHOUT=“X11” и т.д. Более подробно тут: http://wiki.freebsd.org/Ports/Options/OptionsNG.

Некоторые полезные команды из нового менеджера пакетов:

# pkg audit -F
# pkg update -f
# pkg check -Bd
# pkg info | grep nmap
nmap-6.40_2                    Port scanning utility for large networks

Вот, пожалуй, и все. А если честно – то пора переходить на FreeBSD 10-RELEASE! 🙂

Использование PKGNG репозитория в FreeBSD 9.1 « *Unix,*Linux &Laquo; Интересные Заметки « skleroznik.in.ua

Для использования репозитория PKGNG в FreeBSD устанавливаем сперва порт ports-mgmt/pkg. После установки необходимо конвертировать существующую пакетную базу данных в формат pkgng.

# pkg2ng

Далее настраиваем доступ к репозиторию PC-BSD. Создаем файл /usr/local/etc/pkg.conf с следующим содержимым:

packagesite: ftp://ftp.pcbsd.org/pub/mirror/packages/9.1-RELEASE/i386/
 PUBKEY: /usr/local/etc/pkg-pubkey.cert
 PKG_CACHEDIR: /usr/local/tmp

Обратите внимание, что вы можете выбрать более близкое к вам зеркало, а также изменить архитектуру на amd64, если у вас не i386. Список доступных зеркал можно посмотреть здесь.

Далее скачиваем (БИТАЯ ССЫЛКА) публичный сертификат репозитория и копируем его в /usr/local/etc/pkg-pubkey.cert. Теперь система настроена на использования pkgng, теперь можно обновить вашу пакетную базу до самых последних версий pkgng репозитория используя следующую команду:

# pkg upgrade -fy

Теперь можете использовать для установки и обновления команду pkg.

У меня после команды

# pkg upgrade -fy

Появилось сообщение об ошибке:

pkg: At least one of the packages provided by the repository is not compatible with your ABI:
Your ABI: freebsd:9:x86:32
Incompatible ABIs found: freebsd:9:x86:64

Скачиваем репозиторий и распаковываем его в каталог /var/db/pkg. Теперь будем обновляться из локального кэша.

# pkg upgrade -U

The following packages will be upgraded:

Upgrading libiconv: 1.13.1_1 -> 1.14_1
Upgrading gettext: 0.18.1.1 -> 0.18.1.1_1
Reinstalling mc-light-4.1.40.p9_9
Reinstalling gdbm-1.9.1
Reinstalling perl-threaded-5.14.2_3

The installation will free 13 MB

0 B to be downloaded

Proceed with upgrading packages [y/N]: y
Checking integrity… done
Upgrading libiconv from 1.13.1_1 to 1.14_1… done
Upgrading gettext from 0.18.1.1 to 0.18.1.1_1… done
Reinstalling mc-light-4.1.40.p9_9 done
Reinstalling gdbm-1.9.1 done
Reinstalling perl-threaded-5.14.2_3Removing stale symlinks from /usr/bin…
Removing /usr/bin/perl
Removing /usr/bin/perl5
Done.
Creating various symlinks in /usr/bin…
Symlinking /usr/local/bin/perl5.14.2 to /usr/bin/perl
Symlinking /usr/local/bin/perl5.14.2 to /usr/bin/perl5
Done.
Cleaning up /etc/make.conf… Done.
Spamming /etc/make.conf… Done.
done

Устанавливаем пакет, используя локальный кэш:

# pkg install -U nginx

The following packages will be installed:

Installing pcre: 8.32
Installing nginx: 1.2.8,1

The installation will require 4 MB more space

1 MB to be downloaded

Proceed with installing packages [y/N]: y
pcre-8.32.txz 100% 1018KB 508.8KB/s 917.6KB/s 00:02
nginx-1.2.8,1.txz 100% 216KB 216.3KB/s 216.3KB/s 00:00
Checking integrity… done
Installing pcre-8.32… done
Installing nginx-1.2.8,1…===> Creating users and/or groups.
Using existing group ‘www’.
Using existing user ‘www’.
done

Посмотреть информацию о пакете можно:

# pkg info pkg

pkg-1.0.2 New generation package manager

Установка пакетов с помощью pkgng:

# pkg install packagename

Удаление пакетов c помощью pkgng:

# pkg delete packagename

Аудит установленных пакетов:

# pkg audit -F

Источник http://unixzen.ru/%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-pkgng-%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D1%8F-%D0%B2-freebsd/

Установка Freebsd 10

Сегодня хотел бы рассказать как быстро установить Freebsd 10, выполнить необходимый минимум настроек, установить apache, mysql, nginx, vsftp, phpmyadmin и разместить на всем этом хозяйстве сайт на wordpress.


Если у вас есть желание освоить Linux с нуля, не имея базовых знаний, рекомендую познакомиться с онлайн-курсом Administrator Linux.Basic в OTUS. Курс для новичков, для тех, кто хочет войти в профессию администратора Linux. Подробности по .


Эта версия статьи устарела. Читайте новый материал по установке актуальной версии Freebsd 10.2. Хотя ничего принципиально нового в установке версии 10.2 не появилось, на всякий случай лучше использовать более свежую информацию.

В принципе, задача не особо сложная, стандартная, по отдельности можно все найти в интернете. Но когда мне понадобилось быстро это сделать, я толкнулся с несколькими нюансами, о которых обязательно упомяну. Помимо этого, в 10-й версии freebsd произошли некоторые изменения, который первое время ставят в тупик. Например, больше нет sysinstall, вместо него bsdinstall. Привычные команды pkg_add или pkg_info теперь выглядят как pkg install и pkg info. Исчезло нижнее подчеркивание. Я очень удивился, когда увидел ответ на команду pkg_add:

pkg_add: Command not found.

Установка freebsd 10.1

Итак, ставить будем из минимального образа ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/ISO-IMAGES/10.1/FreeBSD-10.1-RELEASE-amd64-bootonly.iso Все необходимое после установки поставим сами. Загружаемся с FreeBSD-10.1-RELEASE-amd64-bootonly.iso

Нас встречает меню установки:

Выбираем Install. Дальше идет выбор раскладки, оставляем первое значение по-умолчанию:

Далее указываем имя сервера. Я назвал его websr.local:

Теперь предстоит выбрать состав установки. Можно ничего не выбирать, а все, что нужно, поставить потом отдельно. Но по моему опыту, дерево портов ports и исходные коды системы src чаще всего нужны, поэтому выбираем их:

После этого установщик нам сообщает, что установочных файлов на данном диске нет, их надо загрузить из интернета и следующим шагом предлагает настроить сетевой интерфейс. Сделаем это. Выбираем сетевую карту, которая смотрит в интернет. Дальше нам предлагают ввести настройки IPv4 для этого интерфейса, соглашаемся:

У меня настройки приходят по DHCP, поэтому на следующем шаге я соглашаюсь с тем, что принимаю настройки по DHCP:

Следующим шагом предлагается настроить IPv6. Нам это не нужно, отказываемся.

Далее появляется экран с настройками DNS сервера. Указываем свой:

Теперь выбираем ftp сервер, с которого будем загружать информацию. Я обычно выбираю первый, который предлагается по-умолчанию:

На следующем этапе нам нужно выбрать, как разбивать жесткий диск. Обычно это самая трудная и не понятная новичкам процедура. Мы не будем вдаваться в подробности этого процесса, выберем самый простой — автоматическая разбивка всего диска, 1-й пункт:

Указываем, что хотим использовать весь диск:

На следующем шаге оставляем все параметры по-умолчанию и выбираем Finish:

В окне с подтверждением соглашаемся с тем, что делаем, выбирая Commit.

Дальше начинается автоматический процесс разбивки диска и установки Freebsd 10. Дожидаемся его окончания, которое будет обозначено предложением задать пароль root. Делаем это:

Далее нас спрашивают, установлены ли часы системы в соответствии с гринвичем, или нет. У меня нет, время стоит в соответствии с моим часовым поясом, поэтому выбираю No:

Потом уже выбираю свою временную зону. Показывать не буду, там и так все просто и понятно. После выбора часового пояса, нужно указать, какие службы будут запущены. Нам пригодятся ssh и ntpd, выбираем их:

Затем нам предложат добавить пользователей к системе. Отказываемся, сделаем это позже по мере необходимости. На этом установка закончена. Мы оказываемся в меню установщика, где можем внести еще какие-то изменения в установку. Но нам это не нужно. Выбираем Exit и жмем Ok:

Перезагружаемся. На этом установка системы окончена. Приступаем к настройке.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Дополнительные материалы по Freebsd

Онлайн курс по Linux

Если у вас есть желание освоить операционную систему Linux, не имея подходящего опыта, рекомендую познакомиться с онлайн-курсом Administrator Linux. Basic в OTUS. Курс для новичков, адаптирован для тех, кто только начинает изучение Linux. Обучение длится 4 месяца.

Что даст вам этот курс:

  • Вы получите навыки администрирования Linux (структура Linux, основные команды, работа с файлами и ПО).
  • Вы рассмотрите следующий стек технологий: Zabbix, Prometheus, TCP/IP, nginx, Apache, MySQL, Bash, Docker, Git, nosql, grfana, ELK.
  • Умение настраивать веб-сервера, базы данных (mysql и nosql) и работа с сетью.
  • Мониторинг и логирование на базе Zabbix, Prometheus, Grafana и ELK.
  • Научитесь командной работе с помощью Git и Docker.

Смотрите подробнее программу по .



Рекомендую полезные материалы по Freebsd:
  • Установка
  • Настройка
  • Обновление
  • Шлюз
  • Прокси сервер
  • Веб сервер NGINX
  • Веб сервер Apache

Описание установки Freebsd 11 на одиночный диск, либо на софтовый raid1, сделанный средствами zfs, которые поддерживает стандартный установщик.

Базовая настройка Freebsd, которую можно выполнить после установки сервера общего назначения. Представлены некоторые рекомендации по повышению удобства пользования и безопасности.

Описание и нюансы обновления системы Freebsd с помощью утилиты freebsd-update. Показано пошагово на конкретном примере обновления.

Настройка Freebsd шлюза для обеспечения выхода в интернет. Используется ipfw и ядерный нат, dnsmasq в качестве dhcp и dns сервера. Мониторинг сетевой активности с помощью iftop.

Настройка максимально быстрого web сервера на базе Freebsd и nginx + php-fpm. Существенный прирост производительности по сравнению с классическим apache.

4.4. Использование pkg для управления двоичными пакетами

4.4. Использование pkg для двоичного пакета
Management

pkg — новое поколение
замена традиционных инструментов управления пакетами FreeBSD,
предлагает множество функций, которые позволяют работать с бинарными пакетами
быстрее и проще.

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

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

Так как pkg работает только с
бинарные пакеты, это
не заменяет такие инструменты. Эти инструменты могут быть
используется для установки программного обеспечения из обоих двоичных пакетов
и Коллекция портов, а
pkg устанавливает только двоичный файл
пакеты.

4.4.1. Начало работы с
pkg

FreeBSD включает утилиту начальной загрузки, которую можно использовать для
скачать и установить pkg
и его справочные страницы. Эта утилита предназначена для работы
с версиями FreeBSD, начиная с
10. Х .

Примечание:

Не все версии и архитектуры FreeBSD
поддержите этот процесс начальной загрузки. Текущий список находится на
https://pkg.freebsd.org/.
В остальных случаях
вместо этого должен быть установлен pkg
из Коллекции Портов или в виде двоичного пакета.

Для начальной загрузки системы запустите:

  #    / usr / sbin / pkg   

У вас должно быть рабочее подключение к Интернету для
процесс начальной загрузки, чтобы добиться успеха.

В противном случае, чтобы установить порт, выполните:

  #    cd / usr / ports / ports-mgmt / pkg  
  #    марка  
  #    сделать установку чистой   

При обновлении существующей системы, которая изначально использовала
старые инструменты pkg_ *, база данных должна быть преобразована в
новый формат, чтобы новые инструменты знали об уже
установленные пакеты. Как только pkg имеет
был установлен,
база данных пакетов должна быть преобразована из традиционного формата
в новый формат, выполнив эту команду:

  #    pkg2ng   

Примечание:

Этот шаг не требуется для новых установок, которые
еще нет стороннего программного обеспечения
установлен.

Важно:

Этот шаг необратим. Как только база данных пакетов
был преобразован в pkg
формат, традиционные инструменты pkg_ *
больше не следует использовать.

Примечание:

При преобразовании базы данных пакетов могут возникать ошибки, поскольку
содержимое конвертируется в новую версию. Как правило, эти
ошибки можно спокойно игнорировать. Однако список
программное обеспечение, которое не было успешно преобразовано
отображается после отделки pkg2ng .Эти приложения необходимо переустановить вручную.

Чтобы убедиться, что коллекция портов регистрируется
новое программное обеспечение с pkg вместо
традиционная база данных пакетов, версии FreeBSD до
10. X требуется эта строка в
/etc/make.conf :

 WITH_PKGNG = yes 

По умолчанию pkg использует
бинарные пакеты из FreeBSD
зеркала пакетов (репозиторий ).
Для получения информации о создании кастомного
репозиторий пакетов, см.
Раздел 4.6, «Сборка пакетов с
Поудриере ».

Дополнительная конфигурация пакетов
параметры описаны в pkg.conf (5).

Информация об использовании pkg is
доступно на странице руководства pkg (8) или запустив
уп. без дополнительных аргументов.

Каждый аргумент команды pkg
задокументировано на странице руководства для конкретной команды. Чтобы прочитать
страница руководства для pkg install , например,
выполните любую из этих команд:

  #    pkg help install   
  #    man pkg-install   

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

4.4.2. Ежеквартальные и новейшие ветви портов

Ветка Quarterly предоставляет пользователям
с более предсказуемым и стабильным опытом для порта и
установка пакетов и обновления. Это сделано по сути
разрешая только обновления, не относящиеся к функциям. Ежеквартальная цель филиалов
для получения исправлений безопасности (это могут быть обновления версии или
резервные копии коммитов), исправления ошибок и соответствие портов или
каркасные изменения.Квартальная ветка отрезается от ГОЛОВКИ на
начало каждого (годового) квартала в январе, апреле,
Июль и октябрь. Филиалы названы по году
(ГГГГ) и квартал (Q1-4), в котором они созданы. Например,
квартальный филиал, созданный в январе 2016 года, носит название 2016Q1.
А ветка Latest предоставляет новейшие
версии пакетов для пользователей.

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

  #    cp / etc / pkg / FreeBSD.conf /usr/local/etc/pkg/repos/FreeBSD.conf   

Отредактируйте файл
/usr/local/etc/pkg/repos/FreeBSD.conf
и измените строку ежеквартально на
последний в url:
линия.

Результат должен быть похож на следующий:

 FreeBSD: {
  url: "pkg + http: //pkg.FreeBSD.org/$ {ABI} / latest",
  mirror_type: "SRV",
  signature_type: "отпечатки пальцев",
  отпечатки пальцев: «/ usr / share / keys / pkg»,
  включен: да
} 

И, наконец, запустите эту команду для обновления с новой
(последние) метаданные репозитория.

  #    pkg update -f   

4.4.3. Получение информации об установленных пакетах

Информация о пакетах, установленных в системе
можно просмотреть, запустив pkg info который,
при запуске без каких-либо переключателей отобразит версию пакета
либо для всех установленных пакетов, либо для указанного
пакет.

Например, чтобы узнать, какая версия
pkg установлен, запуск:

  #    pkg info pkg  
пкг-1.1.4_1 

4.4.4. Установка и удаление пакетов

Для установки двоичного пакета используйте следующую команду,
где имя пакета — имя
пакет для установки:

  #    pkg install   packagename     

Эта команда использует данные репозитория, чтобы определить, какой
версию устанавливаемого программного обеспечения, и если в ней есть
удаленные зависимости. Например, чтобы установить
curl:

  #    pkg установить curl  
Обновление каталога репозитория
/ usr / local / tmp / All / curl-7.31.0_1.txz 100% из 1181 кБ 1380 кбит / с 00m01s

/usr/local/tmp/All/ca_root_nss-3.15.1_1.txz 100% из 288 кБ 1700 кбит / с 00 мин.

Обновление каталога репозитория
Будут установлены следующие 2 пакета:

        Установка ca_root_nss: 3.15.1_1
        Установка curl: 7.31.0_1

Для установки потребуется на 3 МБ больше места.

0 Б для загрузки

Продолжите установку пакетов [да / нет]:   y  
Проверка целостности ... выполнено
[1/2] Установка ca_root_nss-3.15.1_1 ... выполнено
[2/2] Установка curl-7.31.0_1 ... готово
Очистка файлов кеша ... Готово 

Новый пакет и любые дополнительные пакеты, которые были
установлен как зависимости можно увидеть в установленном
список пакетов:

  #    информация о пакете  
ca_root_nss-3.15.1_1 Комплект корневого сертификата из проекта Mozilla
curl-7.31.0_1 Неинтерактивный инструмент для получения файлов с серверов FTP, GOPHER, HTTP (S)
pkg-1.1.4_6 Менеджер пакетов нового поколения 

Пакеты, которые больше не нужны, можно удалить с помощью
pkg удалить .Например:

  #    pkg delete curl  
Следующие пакеты будут удалены:

curl-7.31.0_1

Удаление освобождает 3 МБ.

Продолжить удаление пакетов [да / нет]:   y  
[1/1] Удаление curl-7.31.0_1 ... done 

4.4.5. Обновление установленных пакетов

Установленные пакеты можно обновить до последней версии
версий, запустив:

  #    pkg upgrade   

Эта команда сравнит установленные версии с
те, которые доступны в каталоге репозитория, и обновите их
из репозитория.

4.4.6. Аудит установленных пакетов

Регулярно обнаруживаются уязвимости программного обеспечения
в сторонних приложениях. Чтобы решить эту проблему,
pkg включает встроенный аудит
механизм. Чтобы определить, есть ли известные
уязвимости программного обеспечения, установленного в системе,
run:

  #    pkg audit -F   

4.4.7. Автоматическое удаление неиспользуемых пакетов

Удаление пакета может оставить после себя зависимости, которые
больше не требуются.Установленные ненужные пакеты
поскольку зависимости (листовые пакеты) могут быть автоматически обнаружены
и удален с помощью:

  #    pkg autoremove  
Пакеты, которые нужно удалить автоматически:
ca_root_nss-3.15.1_1

Автоудаление освободит 723 КБ

Приступить к автоудалению пакетов [y / N]:   y  
Удаление ca_root_nss-3.15.1_1 ... выполнено 

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

  #    pkg prime-list  
nginx
openvpn
sudo 

pkg prime-list — это команда псевдонима
заявлено в /usr/local/etc/pkg.conf .
Есть много других, которые можно использовать для запроса пакета
база данных системы. Например, команда
pkg prime-origins можно использовать для получения
каталог порта происхождения из указанного выше списка:

  #    pkg prime-origins  
www / nginx
безопасность / openvpn
security / sudo 

Этот список можно использовать для пересборки всех пакетов
установлен в системе с помощью инструментов сборки, таких как
порты-mgmt / poudriere или
порты-mgmt / synth.

Пометить установленный пакет как автоматический можно
сделано с использованием:

  #    pkg set -A 1 devel / cmake   

Как только упаковка является листовой и помечена
как автоматический, он выбирается
упак. Автоудаление .

Пометка установленного пакета как , а не как
автоматический может быть выполнен с помощью:

  #    pkg set -A 0 devel / cmake   

4.4.8. Восстановление базы данных пакетов

В отличие от традиционной системы управления пакетами,
pkg включает собственный пакет
механизм резервного копирования базы данных.Эта функция включена
дефолт.

Совет:

Чтобы отключить периодический сценарий от резервного копирования
база данных пакетов, установить
daily_backup_pkgdb_enable = "NO" дюймов
period.conf (5).

Для восстановления содержимого базы данных предыдущего пакета
резервного копирования, выполните следующую команду, заменив
/path/to/pkg.sql с расположением
резервной копии:

  #    pkg backup -r   / path / to / pkg.sql     

Примечание:

При восстановлении резервной копии, созданной периодическим сценарием,
перед восстановлением его необходимо распаковать.

Чтобы запустить резервное копирование вручную
pkg, запустите следующее
команда, заменяющая /path/to/pkg.sql
с подходящим именем файла и расположением:

  #    pkg backup -d   /path/to/pkg.sql     

4.4.9. Удаление устаревших пакетов

По умолчанию pkg хранит
двоичные пакеты в каталоге кеша, определяемом
PKG_CACHEDIR в упак.conf (5). Только копии
из последних установленных пакетов сохраняются. Старые версии
pkg сохранил все предыдущие пакеты. Чтобы
удалите эти устаревшие двоичные пакеты, запустите:

  #    pkg clean   

Весь кеш можно очистить, запустив:

  #    pkg clean -a   

4.4.10. Пакет метаданных

Программное обеспечение из коллекции FreeBSDPorts может
претерпевают основные изменения номера версии.Чтобы решить эту проблему,
pkg имеет встроенную команду для
обновить происхождение пакетов. Это может быть полезно, например, если
lang / php5 переименован в
lang / php53, чтобы
lang / php5 теперь может
представляют версию 5.4 .

Чтобы изменить происхождение пакета в приведенном выше примере,
run:

  #    pkg set -o lang / php5: lang / php53   

В качестве другого примера для обновления
lang / ruby18 до
lang / ruby19, run:

  #    pkg set -o lang / ruby18: lang / ruby19   

В качестве последнего примера, чтобы изменить происхождение
libglut разделяемые библиотеки из
graphics / libglut в
graphics / freeglut, run:

  #    pkg set -o graphics / libglut: graphics / freeglut   

Примечание:

При изменении происхождения пакета важно
переустановите пакеты, которые зависят от пакета с
измененное происхождение.Для принудительной переустановки зависимых
пакеты, запуск:

  #    pkg install -Rf   graphics / freeglut     

.

пакетов FreeBSD 8.4 (пакеты_ * -> пакеты) —

FreeBSD8.3

1. pkgng


pkg_install EOL запланирован на 2014-09-01. Пожалуйста, подумайте о переходе на pkgng
->.

cd / usr / ports / ports-mgmt / pkg
make install clean

/etc/make.conf WITH_PKGNG = YES

echo 'WITH_PKGNG = YES' >> /etc/make.conf

(при обновлении старого формата пакетов сначала запустите: pkg2ng)

pkg2ng

Преобразование пакетов из / var / db / pkg
...

,

pkg update -f

Обновление каталога репозитория
Действительный репозиторий не найден.

8.4

#
fetch http://security.FreeBSD.org/patches/EN-14:03/pkg-en-releng-8.4.patch
fetch http://security.FreeBSD.org/patches /EN-14:03/pkg-en-releng-8.4.patch.asc
gpg --verify pkg-en-relng-8.4.patch.asc
cd / usr / src
patch cd / usr / src / etc / pkg
mkdir -p / etc / pkg / usr / share / keys / pkg / trusted / usr / share / keys / pkg / revoked
make install
cd / usr / src / share / keys / pkg
make install

#

cd / usr / src / etc / pkg && make && make install
cd / usr / src / share / keys && make && make install

#
#
pkg update

Обновление каталога репозитория FreeBSD...
[host.ru] Получение meta.txz: 100% 968 Б 1,0 кБ / с 00:01
[host.ru] Получение packagesite.txz: 100% 5 МиБ 1,8 МБ / с 00:03
Обработка записей: 100% Обновление репозитория
FreeBSD завершено. Обработано 23799 посылок.

make.conf .. WITHOUT_X11 =

OPTIONS_UNSET = X11 GUI CUPS ПРИМЕРЫ FONTCONFIG

pkg upgrade

# pkg audit -F

Fetchingbz1 vuln.xml / с 00:01
tidy-lib-090315.c_2 уязвим:
tidy - heap-buffer-overflow
CVE: CVE-2015-5523 ​​
CVE: CVE-2015-5522

pkg version -vRL =

v verbose
R remote
L = -! =

Обновление каталога репозитория FreeBSD ...
Репозиторий FreeBSD обновлен.
Все репозитории обновлены.

GeoIP-1.6.5 <требует обновления (удаленный имеет 1.6.5_1)
ap22-mod_geoip2-1.2.8 <нуждается в обновлении (удаленный имеет 1.2.9_1)
ca_root_nss-3.18 <нуждается в обновлении (удаленный имеет 3.18.1)
curl-7.41.0 <нуждается в обновлении (удаленный имеет 7.42.1)

#
pkg info -l PKG_NAME

#,
pkg который / путь / к / файлу

.

4.5.Использование коллекции портов

4.5.Использование коллекции портов

Коллекция портов - это набор
Makefile s, патчи и файлы описания.
Каждый набор этих файлов используется для компиляции и установки
отдельное приложение на FreeBSD и называется
порт .

По умолчанию коллекция портов хранится как
подкаталог / usr / ports .

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

Процедура 4.1.Portsnap Method

Базовая система FreeBSD включает
Портснап. Это быстрый и
удобный инструмент для получения Коллекции Портов и
рекомендуется для большинства пользователей, которые не работают
FreeBSD-CURRENT. Эта утилита
подключается к сайту FreeBSD, проверяет ключ безопасности и
загружает новую копию Коллекции Портов. Ключ используется
для проверки целостности всех загруженных файлов.

  1. Чтобы загрузить сжатый снимок портов
    Сбор в
    / var / db / portsnap :

      #    portsnap fetch   
  2. При запуске Portsnap для
    первый раз извлеките снимок в
    / usr / ports :

      #    portsnap extract   
  3. После первого использования
    Portsnap был завершен как
    Как показано выше, / usr / ports можно обновить
    при необходимости, запустив:

      #    portsnap fetch  
      #    Обновление портов   

    При использовании fetch
    извлечение или обновление
    операция может выполняться последовательно, например:

      #    Обновление выборки портов   

Процедура 4.2. метод субверсии

Если требуется больший контроль над деревом портов или если локальный
изменения необходимо поддерживать, или если вы используете FreeBSD-CURRENT,
Subversion можно использовать для получения
Коллекция Портов. Обратитесь к
Subversion Primer для подробного описания
Subversion.

  1. Должна быть установлена ​​Subversion
    прежде чем его можно будет использовать для проверки дерева портов. Если
    копия дерева портов уже присутствует, установите
    Subversion вроде этого:

      #    cd / usr / ports / devel / subversion  
      #    make install clean   

    Если дерево портов недоступно, или
    pkg используется для управления
    пакеты, Subversion может быть
    установлен как пакет:

      #    pkg install subversion   
  2. Проверьте копию дерева портов:

      #    svn checkout https: // svn.FreeBSD.org/ports/head / usr / ports   
  3. При необходимости обновите / usr / ports после
    первоначальная Subversion
    checkout:

      #    svn update / usr / ports   

Коллекция портов содержит каталоги
для категорий программного обеспечения. Внутри каждой категории есть
подкаталоги для отдельных приложений. Каждое приложение
подкаталог содержит набор файлов,
сообщает FreeBSD, как скомпилировать и установить эту программу,
назвал каркас портов .Каждый порт
скелет включает следующие файлы и каталоги:

  • Makefile : содержит инструкции, которые
    укажите, как нужно компилировать приложение и где
    его компоненты должны быть установлены.

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

  • файлов / : этот каталог содержит
    любые патчи, необходимые для компиляции и установки программы
    на FreeBSD.Этот каталог также может содержать другие используемые файлы
    построить порт.

  • pkg-descr : предоставляет более подробную
    описание программы.

  • pkg-plist : список всех
    файлы, которые будут установлены портом. Это также говорит
    система портов, какие файлы удалять
    деинсталляция.

Некоторые порты включают pkg-message или
другие файлы для особых ситуаций. Больше подробностей
по этим файлам и по портам в целом обратитесь к FreeBSD
Справочник Портера.

Порт не включает фактический исходный код, также
известный как дистрибутив . Часть экстракта
создания порта автоматически сохранит загруженный
источник в / usr / ports / distfiles .

В этом разделе представлены основные инструкции по использованию
Коллекция портов для установки или удаления программного обеспечения. Подробный
описание имеющихся , сделать мишеней и
переменные среды доступны в портах (7).

Предупреждение:

Перед компиляцией любого порта обязательно обновите порты.
Сбор, как описано в предыдущем разделе.поскольку
установка любого стороннего программного обеспечения может ввести
уязвимости безопасности, рекомендуется сначала проверить
https://vuxml.freebsd.org/
об известных проблемах безопасности, связанных с портом. Альтернативно,
запустите pkg audit -F перед установкой нового
порт. Эту команду можно настроить на автоматическое
провести аудит безопасности и обновить уязвимость
база данных при ежедневной проверке системы безопасности. Для большего
информацию см. в pkg-audit (8) и
периодический (8).

Использование коллекции портов предполагает наличие работающего Интернета
подключение. Это также требует привилегий суперпользователя.

Чтобы скомпилировать и установить порт, перейдите в каталог
порта, который нужно установить, введите make
установите
по запросу. Сообщения будут указывать
прогресс:

  #    cd / usr / ports / sysutils / lsof  
  #    сделать установку  
>> lsof_4.88D.freebsd.tar.gz, похоже, не существует в / usr / ports / distfiles /.>> Попытка получить с ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/.
===> Распаковка для lsof-4.88
...
[результат извлечения обрезан]
...
>> Контрольная сумма в порядке для lsof_4.88D.freebsd.tar.gz.
===> Патч для lsof-4.88.d, 8
===> Применение патчей FreeBSD для lsof-4.88.d, 8
===> Настройка под lsof-4.88.d, 8
...
[настройка вывода обрезана]
...
===> Корпус для ИСОФ-4.88.d, 8
...
[фрагмент вывода компиляции]
...

===> Установка для lsof-4.88.d, 8
...
[вывод установки обрезан]
...
===> Создание временного упаковочного листа
===> Сжатие страниц руководства для lsof-4.88.d, 8
===> Регистрация установки для lsof-4.88.d, 8
===> ПРИМЕЧАНИЕ ПО БЕЗОПАСНОСТИ:
      Этот порт установил следующие двоичные файлы, которые выполняются с
      повышенные привилегии.
/ usr / местные / sbin / lsof
  #  

Так как lsof - это программа, которая запускает
с повышенными привилегиями отображается предупреждение безопасности
как установлено. После завершения установки
подсказка будет возвращена.

Некоторые оболочки хранят кеш команд, которые
доступны в каталогах, перечисленных в
PATH переменная среды для ускорения поиска
операции для исполняемого файла этих команд. Пользователи
снаряда тчш следует набрать
перепишем , чтобы вновь установленная команда
можно использовать без указания полного пути. Использовать
hash -r вместо
ш снаряд. Обратитесь к документации
для оболочки для получения дополнительной информации.

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

  #    make clean  
===> Очистка для lsof-88.d, 8
  #  

Примечание:

Чтобы сохранить этот дополнительный шаг, вместо этого используйте команду make
установить чистый
при компиляции порта.

4.5.1.1.Настройка установки портов

Некоторые порты предоставляют параметры сборки, которые можно использовать для
включить или отключить компоненты приложения, обеспечить безопасность
параметры или разрешить другие настройки. Примеры
включить www / firefox,
security / gpgme и
mail / sylpheed-claws. Если порт зависит
на других портах, которые имеют настраиваемые параметры, он может
пауза несколько раз для взаимодействия с пользователем по умолчанию
поведение заключается в том, чтобы предложить пользователю выбрать параметры из
меню.Чтобы избежать этого и выполнить всю настройку за один
пакет, запустите , сделайте config-recursive внутри
каркас порта. Затем запустите make install
[clean]
для компиляции и установки порта.

Наконечник:

При использовании
config-рекурсивный , список
порты для настройки собираются
список зависимостей цель. это
рекомендуется запускать make
config-recursive
до всех зависимых портов
параметры были определены, а экранов параметров портов нет
появляются дольше, чтобы убедиться, что все параметры зависимостей
были настроены.

Есть несколько способов пересмотреть параметры сборки порта
меню, чтобы добавить, удалить или изменить эти параметры после
построен порт. Один из способов -
cd в каталог, содержащий
порт и введите , сделайте config . Другая
вариант - использовать make showconfig .
Другой вариант - выполнить команду make
rmconfig
, который удалит все выбранные параметры
и позволить вам начать все сначала. Все эти варианты и
другие подробно описаны в
порты (7).

Система портов использует fetch (1) для загрузки
исходные файлы, которые поддерживают различные переменные среды.
FTP_PASSIVE_MODE ,
FTP_PROXY и FTP_PASSWORD
переменные могут потребоваться, если система FreeBSD отстает
брандмауэр или FTP / HTTP прокси. См. Выборку (3) для
полный список поддерживаемых переменных.

Для пользователей, которые не могут подключиться к Интернету все
время, make fetch можно запустить в
/ usr / ports , чтобы получить все дистрибутивные файлы, или
в категории, например
/ usr / ports / net или в пределах определенного
каркас порта.Обратите внимание, что если у порта есть какие-либо зависимости,
запуск этой команды в скелете категории или портов будет
, а не получать дистрибутивы портов из
другая категория. Вместо этого используйте make
fetch-recursive
, чтобы также получить файлы distfiles для
все зависимости порта.

В редких случаях, например, когда в организации есть местный
репозиторий distfiles, MASTER_SITES
переменная может использоваться для переопределения мест загрузки
указанный в Makefile .Когда используешь,
укажите альтернативное расположение:

  #    cd / usr / ports /   каталог    
  #    сделать MASTER_SITE_OVERRIDE = \
   ftp://ftp.organization.org/pub/FreeBSD/ports/distfiles/   fetch   

WRKDIRPREFIX и
PREFIX переменные могут отменять значение по умолчанию.
рабочий и целевой каталоги. Например:

  #    make WRKDIRPREFIX = / usr / home / example / ports install   

скомпилирует порт в
/ usr / home / example / ports и установите
все под / usr / local .

  #    make PREFIX = / usr / home / example / local install   

скомпилирует порт в / usr / ports
и установите его в
/ usr / home / example / local . И:

  #    make WRKDIRPREFIX = .. / ports PREFIX = .. / local install   

объединит их.

Их также можно установить как переменные среды. Обратитесь
на страницу руководства для вашей оболочки для получения инструкций о том, как
установить переменную окружения.

4.5.2. Удаление установленных портов

Установленные порты можно удалить с помощью pkg
удалить
. Примеры использования этой команды могут быть
можно найти на странице руководства pkg-delete (8).

В качестве альтернативы make deinstall может быть
запустить в каталоге порта:

  #    cd / usr / ports / sysutils / lsof  
  #    сделать деинсталляцию  
===> Удаление sysutils / lsof
===> Удаление
Запрошена деинсталляция для следующих 1 пакетов:

Исоф-4.88.d, 8

После удаления освободится 229 КБ.
[1/1] Удаление lsof-4.88.d, 8 ... done 

Рекомендуется читать сообщения, так как порт
удален. Если в порту есть приложения, зависящие от
на нем эта информация будет отображаться, но
удаление будет продолжено. В таких случаях может быть лучше
переустановить приложение во избежание поломки
зависимости.

Со временем становятся доступны более новые версии программного обеспечения
в Коллекции Портов. В этом разделе описывается, как
определить, какое программное обеспечение можно обновить и как выполнять
обновление.

Чтобы определить, есть ли новые версии установленных портов.
доступны, убедитесь, что установлена ​​последняя версия дерева портов.
установлен, используя команду обновления, описанную в
Процедура 4.1, «Метод Portsnap» или
Процедура4.2, «Метод подрывной деятельности». На FreeBSD 10
и позже, или если система была преобразована в
pkg, следующая команда будет
перечислите установленные порты, которые устарели:

  #    pkg version -l "<"   

Для FreeBSD 9. X и ниже,
следующая команда перечислит установленные порты, которые отсутствуют
of date:

  #    pkg_version -l "<"   

Важно:

Перед
пытаясь обновить, прочтите
/ usr / ports / ОБНОВЛЕНИЕ сверху
файл до даты, ближайшей к дате, когда в последний раз были
обновлен или система была установлена. Этот файл описывает
различные проблемы и дополнительные действия, с которыми могут столкнуться пользователи, и
нужно выполнять при обновлении порта, в том числе такие вещи
при изменении формата файла изменяется расположение
файлы конфигурации или любые несовместимости с предыдущими
версии.Запишите все инструкции, соответствующие любому из
порты, которые необходимо обновить, и следуйте этим инструкциям
при выполнении обновления.

4.5.3.1. Инструменты для обновления и управления портами

Коллекция портов содержит несколько утилит для
выполнить фактическое обновление. У каждого есть свои сильные стороны и
недостатки.

Исторически большинство установок использовали либо
Portmaster или
Переносить.
Synth новее
альтернатива.

Примечание:

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

4.5.3.2. Обновление портов с помощью
Portmaster

ports-mgmt / portmaster очень
небольшая утилита для обновления установленных портов.
Он предназначен для использования инструментов, установленных с FreeBSD.
базовая система
вне зависимости от других портов или баз данных.
Чтобы установить эту утилиту
в качестве порта:

  #    cd / usr / ports / ports-mgmt / portmaster  
  #    make install clean   

Portmaster определяет четыре
категории портов:

  • Корневой порт: не имеет зависимостей и не является
    зависимость любых других портов.

  • Магистральный порт: не имеет зависимостей, но другие порты
    зависеть от этого.

  • Порт филиала: есть зависимости и другие порты
    зависеть от этого.

  • Конечный порт: есть зависимости, но нет других портов
    зависеть от этого.

Чтобы перечислить эти категории и найти обновления:

  #    portmaster -L  
=== >>> Корневые порты (без зависимостей, не зависит от)
=== >>> ispell-3.2.06_18
=== >>> экран-4.0.3
        === >>> Доступна новая версия: screen-4.0.3_1
=== >>> tcpflow-0.21_1
=== >>> 7 корневых портов
...
=== >>> Порты ответвления (имеют зависимости, зависят от)
=== >>> apache22-2.2.3
        === >>> Доступна новая версия: apache22-2.2.8
...
=== >>> Листовые порты (имеют зависимости, не зависят от)
=== >>> automake-1.9.6_2
=== >>> bash-3.1.17
        === >>> Доступна новая версия: bash-3.2.33
...
=== >>> 32 оконечных порта

=== >>> Всего установленных портов 137
        === >>> 83 доступны новые версии 

Эта команда используется для обновления всех устаревших
порты:

  #    portmaster -a   

Примечание:

По умолчанию Portmaster
создает резервную копию пакета перед удалением существующего порта.
Если установка новой версии прошла успешно,
Portmaster удаляет
резервное копирование. Использование -b инструктирует
Portmaster не должен автоматически
удалить резервную копию.Добавление -i запускает
Portmaster в интерактивном режиме,
запрос на подтверждение перед обновлением каждого порта.
Доступно множество других вариантов. Прочтите
страница руководства для portmaster (8) для получения подробной информации о
их использование.

Если в процессе обновления обнаружены ошибки,
добавьте -f , чтобы обновить и перестроить все
порты:

  #    portmaster -af   

Также можно использовать Portmaster
установить новые порты в системе, обновив все
зависимости перед сборкой и установкой нового
порт.Чтобы использовать эту функцию, укажите расположение
порт в Коллекции Портов:

  #    portmaster   shells / bash     

Подробнее о
ports-mgmt / portmaster можно найти в его
pkg-descr .

4.5.3.3. Обновление портов с помощью Portupgrade

ports-mgmt / portupgrade - другое
утилита, которую можно использовать для обновления портов. Он устанавливает
набор приложений, которые можно использовать для управления портами.Однако это зависит от Ruby. Чтобы установить
порт:

  #    cd / usr / ports / ports-mgmt / portupgrade  
  #    make install clean   

Перед выполнением обновления с помощью этой утилиты
рекомендуется сканировать список установленных портов с помощью
pkgdb -F и исправить все
несоответствия, которые он сообщает.

Для обновления всех устаревших портов, установленных на
система, используйте portupgrade -a .Альтернативно,
включить -i , чтобы запросить подтверждение
каждого отдельного обновления:

  #    portupgrade -ai   

Для обновления только указанного приложения вместо всех
доступные порты, используйте обновление порта
имя пакета
. Это очень
важно включить -R в первое обновление
все порты, требуемые данным приложением:

  #    portupgrade -R firefox   

Если
в комплекте,
Portupgrade ищет
доступные пакеты в локальных каталогах, перечисленных в
PKG_PATH .Если ни один из них недоступен локально, он
затем загружает пакеты с удаленного сайта. Если пакеты могут
нельзя найти локально или получить удаленно,
Portupgrade будет использовать порты. Чтобы
избегать использования портов полностью, укажите -PP .
Этот последний набор параметров сообщает
Обновление для отмены, если нет
доступны пакеты:

  #    portupgrade -PP gnome3   

Чтобы просто получить дистрибутивы портов или пакеты, если
указан, без постройки или
установка чего-либо, используйте -F .Для дальнейшего
информацию обо всех доступных переключателях см.
страница руководства для , обновление .

Подробнее о
ports-mgmt / portupgrade можно найти в
его pkg-descr .

4.5.4. Порты и дисковое пространство

Использование коллекции портов приведет к использованию дискового пространства более
время. После сборки и установки порта запускаем
очистить в каркасе портов будет
очистить временный каталог work .Если Portmaster используется для установки
порт, он автоматически удалит этот каталог, если
указан. Если
Portupgrade установлен, это
команда удалит все рабочих каталогов
находится в локальной копии Коллекции Портов:

  #    portsclean -C   

Кроме того, устаревшие исходные файлы дистрибутива
накапливаются в / usr / ports / distfiles сверх
время. Чтобы использовать Portupgrade для
удалите все дистрибутивы, которые больше не
ссылается на любые порты:

  #    portsclean -D   

Portupgrade может удалить
все файлы distfiles, на которые не ссылается ни один из установленных портов
в системе:

  #    portsclean -DD   

Если установлен Portmaster,
используйте:

  #    portmaster --clean-distfiles   

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

В дополнение к этим командам,
порты-мгмт / pkg_cutleaves
автоматизирует задачу удаления установленных портов, которые не являются
нужно больше.

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *