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

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

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

Можно скомпилировать их из портов с помощью

portmaster

(8), но зачем тратить

время на компиляцию, когда вы можете взять готовые бинарные сборки, что появляются каждые 2

недели в ветке STABLE?[5]. Скрипт под названием

pkg_up-grade

(1) из пакета

sysutils/bsdadminscripts

может хорошо послужить в таком бинарном обновлении. Он загрузит

самые последние версии пакетов со STABLE FTP, и есть большие шансы в том, что в этих новых

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

применяйте portmaster (8).

Листинг I.7. Ограничьте необходимым минимумом количество процессов во время обновления

# top -b

last pid: 64835; load averages: 0.00, 0.00, 0.00 up 0+03:11:51

10:24:37

119 processes: 2 running, 117 sleeping

Mem: 960M Active, 355M Inact, 4014M Wired, 6096K Cache, 8368K Buf, 2527M Free Swap:

PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU

COMMAND

2178 root 1 54 0 10304K 2748K ppwait 0 0:00 0.00% csh

2174 root 1 45 0 21696K 1992K wait 0 0:00 0.00%

login

2177 root 1 76 0 6912K 1284K ttyin 0 0:00 0.00%

getty

2176 root 1 76 0 6912K 1284K ttyin 1 0:00 0.00%

getty

2175 root 1 76 0 6912K 1284K ttyin 0 0:00 0.00%

getty

114 root 1 76 0 2764K 1056K pause 0 0:00 0.00%

adjkerntz

Листинг I.8. Устанавливаем свежесобранную базовую систему

# cd /usr/src

# mergemaster -p

# make installworld

# mergemaster -iU

# make delete-old

# shutdown -r now

Листинг Функция ports-check

function ports-check {

# Загрузить последний снимок дерева портов

sudo portsnap fetch update

# Проверить, для каких пакетов доступны новые версии

sudo portmaster -L —index-only | awk ‘/ [Nn]ew / {print substr($0,9,9999)}’

# Загрузить новую базу и проверить установленные пакеты на наличие уязвимостей

sudo portaudit -Fda

# Проверить /usr/ports/UPDATING

pkg_updating -d $( ls -ltr -D ‘%Y%m%d’ /var/db/pkg | awk ‘END{print $6}’ )

}

Пример II.1. Примерный вывод о доступности новых/обновленных пакетах и их версиях

% ports-check

Looking up portsnap.FreeBSD.org mirrors… 5 mirrors found.

Fetching snapshot tag from portsnap5.freebsd.org… done. Fetching snapshot metadata…

done.

Updating from Mon Sep 5 07:11:28 CEST 2011 to Mon Sep 5

08:51:01 CEST 2011.

Fetching 3 metadata patches.. done. Applying metadata patches… done. Fetching 0 metadata

files… done.

Fetching 10 patches 10 done.

Applying patches… done.

Fetching 1 new ports or files… done.

Removing old files and directories… done.

Extracting new files:

/usr/ports/chinese/c2t/

/usr/ports/chinese/hc/

/usr/ports/devel/Makefile

/usr/ports/devel/p5-System-Command/

/usr/ports/german/mythes/

/usr/ports/math/p5-Statistics-R/

/usr/ports/polish/hunspell/

/usr/ports/textproc/es-mythes/

/usr/ports/textproc/nl-mythes/

/usr/ports/textproc/sk-mythes/

/usr/ports/textproc/sl-mythes/

Building new INDEX files… done.

New version available: arc-5.21p

New version available: ca root nss-3.12.11 1

New version available: expat-2.0.1 2

New version available: tinyxml-2.6.2

New version available: bash-4.1.11

New version available: gstreamer-plugins-0.10.35 1,3

New version available: gstreamer-plugins-0.10.35 1,3

New version available: gtk-2.24.6

New version available: gtk-update-icon-cache-2.24.6

New version available: libsamplerate-0.1.8 1

New version available: nas-1.9.3

New version available: nettle-2.4

New version available: p5-Date-Manip-6.25

New version available: p5-Mail-IMAPClient-3.29

New version available: p5-XML-Parser-2.41

New version available: xterm-273

New version available: filezilla-3.5.1

New version available: firefox-6.0.1,1

New version available: gtk-oxygen-engine-1.1.2

New version available: nginx-1.0.6,1

New version available: qemu-0.11.1 10

20 have new versions available

New database installed.

Database created: Thu Sep 1 21:20:00 CEST 2011

0 problem(s) in your installed packages found.

Пример II.3. Решаем проблемы с безопасностью путем пересборки нужного пакета

% ports-build ca_root_nss

===>>> Currently installed version: ca root nss-3.12.9 ===>>> Port directory:

/usr/ports/security/ca root nss (…)

===>>> Updating dependency entry for ca_root_nss-3.12.11_1 in each dependent port ===>>>

Upgrade of ca_root_nss-3.12.9 to ca_root_nss-3.12.11_1 complete

% ports-check

Looking up portsnap.FreeBSD.org mirrors… 5 mirrors found. Fetching snapshot tag from

portsnap2.freebsd.org… done. Fetching snapshot metadata… done.

Updating from Mon Sep 5 12:07:23 CEST 2011 to Mon Sep 5 12:25:09 CEST 2011.

Fetching 3 metadata patches.. done.

Applying metadata patches… done.

Fetching 0 metadata files… done.

Fetching 2 patches.. done.

Applying patches… done.

Fetching 0 new ports or files… done.

Removing old files and directories… done.

Extracting new files:

/usr/ports/devel/p5-File-NFSLock/

/usr/ports/devel/p5-MooseX-Aliases/

Building new INDEX files… done.

New version available: arc-5.21p

New version available: expat-2.0.1_2

New version available: tinyxml-2.6.2

New version available: bash-4.1.11

New version available: gstreamer-plugins-0.10.35_1,3

New version available: gtk-2.24.6

New version available: gtk-update-icon-cache-2.24.6

New version available: libsamplerate-0.1.8_1

New version available: nas-1.9.3

New version available: nettle-2.4

New version available: p5-Date-Manip-6.25

New version available: p5-Mail-IMAPClient-3.29

New version available: p5-XML-Parser-2.41

New version available: xterm-273

New version available: filezilla-3.5.1

New version available: firefox-6.0.1,1

New version available: gtk-oxygen-engine-1.1.2

New version available: nginx-1.0.6,1

New version available: qemu-0.11.1_10

19 have new versions available

auditfile.tbz 100% of 69 kB 54 kBps

New database installed.

Database created: Mon Sep 5 12:40:01 CEST 2011

0 problem(s) in your installed packages found.

Пример II.4. Обновляем установленные пакеты с ===> Update <nettle-2.2> to <nettle-2.4>

(security/помощью STABLE-ветки nettle)

=> Update <nas-1.9.2> to <nas-1.9.3> (audio/nas)

% ports-update succeeded

/var/db/uma/FTPINDEX 100% of ===> Update

<libsamplerate-0.1.7_1> to

21 MB 1139 kBps 00m00s <libsamplerate-0.1.8_1> (audio/

/usr/ports/packages/All/nettle-2.4.tbz 100% of libsamplerate)

1082 kB 332 kBps => Update <libsamplerate-0.1.7_1> to

/usr/ports/packages/All/gtk-2.24.6.tbz 100% of <libsamplerate-0.1.8_1>

(audio/

9822 kB 253 kBps 00m00s libsamplerate) succeeded

/usr/ports/packages/All/gstreamer-plugins-0.10100% of ===> Update <expat-2.0.1_1> to

<expat-2.0.1_2>

4091 kB 942 kBps (textproc/expat2)

/usr/ports/packages/All/gtk-oxygen-engine-1.1.100% of => Update <expat-2.0.1_1> to

<expat-2.0.1_2> (textproc/

509 kB 339 kBps expat2) succeeded

/usr/ports/packages/All/filezilla-3.5.1.tbz 100% of ===> Update <xterm-271> to

<xterm-273> (x11/xterm)

3301 kB 232 kBps 00m00s => Update <xterm-271> to <xterm-273> (x11/xterm)

/usr/ports/packages/All/nas-1.9.3.tbz 100% of succeeded

487 kB 494 kBps ===> Update <qemu-0.11.1_9> to <qemu-0.11.1_10>

/usr/ports/packages/All/expat-2.0.1_2.tbz 100% of (emulators/qemu)

130 kB 129 kBps => Update <qemu-0.11.1_9> to <qemu-0.11.1_10>

/usr/ports/packages/All/xterm-273.tbz 100% of (emulators/qemu) succeeded

262 kB 104 kBps ===> Update <p5-XML-Parser-2.40> to <p5-XML-Parser-2.41>

/usr/ports/packages/All/p5-XML-Parser-2.41.tbz100% of (textproc/p5-XML-Parser)

184 kB 381 kBps => Update <p5-XML-Parser-2.40> to <p5-XML-Parser-2.41>

/usr/ports/packages/All/nginx-1.0.6,1.tbz 100% of (textproc/p5-XML-Parser)

succeeded

225 kB 206 kBps ===> Update <gtk-update-icon-cache-2.24.5> to <gtk-

/usr/ports/packages/All/qemu-0.11.1_10.tbz 100% of update-icon-cache-2.24.6>

(graphics/

12 MB 359 kBps 00m00s gtk-update-icon-cache)

/usr/ports/packages/All/tinyxml-2.6.2.tbz 100% of => Update

<gtk-update-icon-cache-2.24.5> to <gtk-update-

170 kB 121 kBps icon-cache-2.24.6> (graphics/gtk-

/usr/ports/packages/All/p5-Date-Manip-6.25.tbz100% of update-icon-cache) succeeded

1301 kB 681 kBps ===> Update <gtk-2.24.5_1> to <gtk-2.24.6> (x11-

===> Update <tinyxml-2.6.1 1> to <tinyxml-2.6.2> toolkits/gtk20)

(textproc/tinyxml) => Update <gtk-2.24.5_1> to <gtk-2.24.6> (x11-toolkits/

=> Update <tinyxml-2.6.1_1> to <tinyxml-2.6.2> gtk20) succeeded

(textproc/tinyxml) succeeded ===> Update <gtk-oxygen-engine-1.1.1> to <gtk-oxygen-

===> Update <p5-Mail-IMAPClient-3.28> to <p5-Mail- engine-1.1.2>

(x11-themes/gtk-oxygen-

IMAPClient-3.29> (mail/p5-Mail- engine)

IMAPClient) => Update <gtk-oxygen-engine-1.1.1> to <gtk-oxygen-

=> Update <p5-Mail-IMAPClient-3.28> to <p5-Mail- engine-1.1.2>

(x11-themes/gtk-oxygen-

IMAPClient-3.29> (mail/p5-Mail- engine) succeeded

IMAPClient) succeeded ===> Update <gstreamer-plugins-0.10.35,3> to <gstreamer-

===> Update <p5-Date-Manip-6.24> to <p5-Date-Manip-6.25> plugins-0.10.35_1,3>

(multimedia/

(devel/p5-Date-Manip) gstreamer-plugins)

=> Update <p5-Date-Manip-6.24> to <p5-Date-Manip-6.25> => Update

<gstreamer-plugins-0.10.35,3> to <gstreamer-

(devel/p5-Date-Manip) succeeded plugins-0.10.35_1,3> (multimedia/

===> Update <nginx-1.0.5,1> to <nginx-1.0.6,1> (www/ gstreamer-plugins) succeeded

nginx) ===>>> Checking 2bsd-vi-050325_1

=> Update <nginx-1.0.5,1> to <nginx-1.0.6,1> (www/nginx)

succeeded (… )

Указанное верно, если вы ранее установили программы из пакетов, либо собирали порты с

опциями по-умолчанию. Если порт был собран с переопределением опций, его придется

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

Что касается обновлений пакетов, проверяются они ежедневно,  по причинам,

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

portaudit

(1) (из пакета

ports-mg-mt/portaudit

). Информация о новых версиях приходит часто, иногда даже в очень

большом объеме, но пока «0 problem(s) in your installed packages found» суетиться не стоит.

Время от времени, я запускаю

pkg_upgrade -a -C

для получения с FTP свежих пакетов ветки

STABLE.

Коротко об обновлении пакетов FreeBSD

• используйте пакеты из ветки STABLE, которые пересобираются каждые 2 недели

• используйте утилиту pkg_upgrade (1) для обновления пакетов

• используйте утилиту portmaster (8) для пересборки пакетов, у которых найдены

проблемы в безопасности

Несколько фактов об обновлении пакетов FreeBSD

• пакеты собираются для каждого нового выпуска в ветке RELEASE, и в этой ветке они не

обновляются (даже если в новой версии пакета устранена проблема безопасности)

• пакеты в ветке STABLE пересобираются каждые 2 недели

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

# pkg add -r bsdadminscripts portmaster portaudit

Здесь начинается самая важная часть — команды сгруппированы в функции таким образом, чтобы

позволить нам в простой форме проверить наличие новых версий пакетов, выявить проблемы безопасности и в конце-концов обновить их до новой или исправленной версии.

Функция

ports-check

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

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

наличие проблем с безопасностью, с помощью portaudit(8) и, наконец, проверяется файл

/usr/ports/UPDATING на наличие различных сообщений, которые могут быть нам интересны.

Функция ports-check не перестраивает и не обновляет пакеты, а, как понятно из названия,

только проверяет.

Вторая функция —

ports-update

— предназначена для обновления пакетов из ветки STABLE. В

функции используется утилита

pkg_upgrade

(1) из пакета sysutils/bsdadminscripts. Компиляция

из портов производиться не будет.

Вы можете использовать эту функцию в двух вариантах —

вызванная без аргументов она обновит все пакеты, которые будут найдены в STABLE FTP. Но, как

показано в Примере II.5, она может быть также использована для пересборки только конкретных

пакетов, которые требуется обновить. Например, ports-update openbox nautilus xterm.

Последняя функция (см. Листинг II.3), названная ports-build, пересобирает определенный пакет

или все из них, если вы не задали имена пакетов явно.

Пример Обновляем одиночный пакет

% ports-update openbox

===> Update <openbox-3.5.0> to <openbox-3.5.0> (x11-

wm/openbox)

=> Update <openbox-3.5.0> to <openbox-3.5.0> (x11-wm/

openbox) succeeded

(…)

===>>> Checking nss-3.12.11 ===>>> Checking open-motif-2.3.3 ===>>> Checking openbox-3.5.0

===>>> No installed ports depend on

openbox-3.5.0 ===>>> Emptying +REQUIRED_BY file.

Try

portmaster -s

пересобирает все указанные пакеты, без проверки на security problems. Кроме того, пакеты

пересобираются с портов, а не как указано выше no compilation. portmaster —packages)

Применяя такой подход по актуализации пакетов, вы должны имеет ввиду две вещи.

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

Сначала нужно обновить базовую систему, а после

обновить пакеты.

Наиболее часто используемые пакеты, в которых присутствуют модули ядра — emulators/virtualbox-ose (VirtualBox), sysutils/fuse-kmod (реализация FUSE) и самый примечательный — x11/nvidia-driver (бинарные графические драйвера для Nvidia-карт).

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

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