Підтримка в актуальному стані пакетної бази FreeBSD
Підтримка в актуальному стані пакетної бази FreeBSD
Підтримувати пакети в актуальному стані трохи складніше, і нам також знадобиться для роботи з пакетами гілка STABLE, т.к. у RELEASE вони не оновлюються. Давайте припустимо, що ви встановили FreeBSD STABLE із снапшота місяць тому, а заразом тоді ж зібрали і пакети.
У багатьох пакетів з'явилися нові версії, для деяких можливо виправлення, пов'язані з безпекою. І ось ці пакети слід оновити.
Можна скомпілювати їх із портів за допомогою
(8), але навіщо витрачати
час на компіляцію, коли ви можете взяти готові бінарні збирання, що з'являються кожні 2
тижня у гілці STABLE? [5]. Скрипт під назвою
може добре послужити у такому бінарному оновленні. Він завантажить
останні версії пакетів зі STABLE FTP, і є великі шанси в тому, що в цих нових
версіях помилки з безпекою вже вирішено. Якщо ж вони не вирішені, тоді звичайно
Використовуйте portmaster (8).
Лістинг I.7. Обмежте необхідним мінімумом кількість процесів під час оновлення
last pid: 64835; load averages: 0.00, 0.00, 0.00 0+03:11:51
119 процесів: 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
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%
2177 root 1 76 0 6912K 1284K ttyin 0 0:00 0.00%
2176 root 1 76 0 6912K 1284K ttyin 1 0:00 0.00%
2175 root 1 76 0 6912K 1284K ttyin 0 0:00 0.00%
114 root 1 76 0 2764K 1056K pause 0 0:00 0.00%
Лістинг I.8.Встановлюємо свіжозібрану базову систему
Лістинг Функція ports-check
# Завантажити останній знімок дерева портів
sudo portsnap fetch update
# Перевірити, для яких пакетів доступні нові версії
sudo portmaster -L-index-only awk '/ [Nn] ew / '
# Завантажити нову базу та перевірити встановлені пакети на наявність уразливостей
sudo portaudit -Fda
pkg_updating -d $( ls -ltr -D '%Y%m%d' /var/db/pkg awk 'END' )
Приклад ІІ.1. Зразковий висновок про доступність нових/оновлених пакетів та їх версії
Looking up portsnap.FreeBSD.org mirrors… 5 mirrors found.
Fetching snapshot tag from portsnap5.freebsd.org… done. Fetching snapshot metadata…
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
Fetching 10 patches 10 done.
Applying patches… done.
Fetching 1 нові порти або файли… done.
Removing old files and directories… done.
Extracting new files:
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доступний: p5-Mail-IMAPClient-3.29
Доступна нова версія: p5-XML-Parser-2.41
Доступна нова версія: xterm-273
Доступна нова версія: filezilla-3.5.1
Доступна нова версія: firefox-6.0.1,1
Доступна нова версія: gtk-oxygen-engine-1.1.2
Доступна нова версія: nginx-1.0.6,1
Доступна нова версія: qemu-0.11.1 10
20 доступні нові версії
Нова база даних встановлена.
Базу даних створено: четвер, 1 вересня, 21:20:00 CEST 2011 р
Знайдено 0 проблем у встановлених пакетах.
Приклад II.3. Вирішуємо проблеми з безпекою шляхом перебору потрібного пакета
===>>> Поточна встановлена версія: ca root nss-3.12.9 ===>>> Каталог портів:
/usr/ports/security/ca root nss (…)
===>>> Оновлення запису залежності для ca_root_nss-3.12.11_1 у кожному залежному порту ===>>>
Оновлення ca_root_nss-3.12.9 до ca_root_nss-3.12.11_1 завершено
Пошук дзеркал portsnap.FreeBSD.org… знайдено 5 дзеркал. Отримання тегу знімка з
portsnap2.freebsd.org… зроблено. Отримання метаданих знімка… завершено.
Оновлення з понеділка 5 вересня 12:07:23 CEST 2011 до понеділка 5 вересня 12:25:09 CEST 2011.
Отримання 3 патчів метаданих... завершено.
Застосування виправлень метаданих… готово.
Отримання 0 файлів метаданих… завершено.
Отримання 2 патчів... завершено.
Застосування патчів… готово.
Отримання 0 нових портів або файлів… завершено.
Видалення старих файлів і каталогів… завершено.
Видобування нових файлів:
Створення нових файлів INDEX… завершено.
Доступна нова версія: arc-5.21p
Доступна нова версія: expat-2.0.1_2
Доступна нова версія: tinyxml-2.6.2
Доступна нова версія: bash-4.1.11
Доступна нова версія: gstreamer-плагіни-0.10.35_1,3
Доступна нова версія: gtk-2.24.6
Доступна нова версія: gtk-update-icon-cache-2.24.6
Доступна нова версія: libsamplerate-0.1.8_1
Доступна нова версія: nas-1.9.3
Доступна нова версія: nettle-2.4
Доступна нова версія: p5-Date-Manip-6.25
Доступна нова версія: p5-Mail-IMAPClient-3.29
Доступна нова версія: p5-XML-Parser-2.41
Доступна нова версія: xterm-273
Доступна нова версія: filezilla-3.5.1
Доступна нова версія: firefox-6.0.1,1
Доступна нова версія: gtk-oxygen-engine-1.1.2
Доступна нова версія: nginx-1.0.6,1
Доступна нова версія: qemu-0.11.1_10
19 доступні нові версії
auditfile.tbz 100% 69 КБ 54 КБ/с
Нова база даних встановлена.
Базу даних створено: понеділок, 5 вересня, 12:40:01 CEST 2011
Знайдено 0 проблем у встановлених пакетах.
Приклад II.4. Оновлюємо встановлені пакети з ===> Оновити до
(security/помощью STABLE-ветки кропиви)
=> Оновити до (audio/nas)
/var/db/uma/FTPINDEX 100% ===> оновлення
21 Мб 1139 кбіт/с 00 м00 с (аудіо/
/usr/ports/packages/All/nettle-2.4.tbz 100% від libsamplerate)
1082 КБ 332 КБ/с => Оновити до
/usr/ports/packages/All/gtk-2.24.6.tbz 100% з
9822 kB 253 kBps 00m00s libsamplerate) вдалося
/usr/ports/packages/All/gstreamer-plugins-0.10100% of ===> Оновити до
4091 КБ 942 КБ/с (textproc/expat2)
/usr/ports/packages/All/gtk-oxygen-engine-1.1.100% of => Оновити до
509 КБ 339 КБ/с expat2) вдалося
/usr/ports/packages/All/filezilla-3.5.1.tbz 100% ===> Оновити до
3301 КБ 232 КБ/с 00 м00 с => Оновити до (x11/xterm)
/usr/ports/packages/All/nas-1.9.3.tbz 100% успіху
487 КБ 494 КБ/с ===> Оновити до
/usr/ports/packages/All/expat-2.0.1_2.tbz 100% (emulators/qemu)
130 КБ 129 КБ/с => Оновити до
/usr/ports/packages/All/xterm-273.tbz 100% (emulators/qemu) виконано успішно
262 КБ 104 КБ/с ===> оновлення
/usr/ports/packages/All/p5-XML-Parser-2.41.tbz100% від (textproc/p5-XML-Parser)
184 КБ 381 КБ/с => оновлення
/usr/ports/packages/All/nginx-1.0.6,1.tbz 100% (textproc/p5-XML-Parser)
225 КБ 206 КБ/с ===> Оновити до
12 Мб 359 кбіт/с 00 хв. 00 сек. gtk-update-icon-cache)
/usr/ports/packages/All/tinyxml-2.6.2.tbz 100% => оновлення
/usr/ports/packages/All/p5-Date-Manip-6.25.tbz100% of update-icon-cache) виконано успішно
1301 КБ 681 КБ/с ===> Оновити до (x11-
===> Оновлення до toolkits/gtk20)
(textproc/tinyxml) => Оновити до (x11-toolkits/
=> Оновлення до gtk20) виконано успішно
(textproc/tinyxml) виконано ===> Оновлення до оновлення
IMAPClient-3.29> (mail/p5-Mail- двигун)
IMAPClient) => Оновлення до оновлення
IMAPClient-3.29> (mail/p5-Mail- engine) виконано успішно
IMAPClient) успішно ===> Оновлення до оновлення
===> Оновлення до (www/gstreamer-plugins) виконано успішно
nginx) ===>>> Перевірка 2bsd-vi-050325_1
=> Оновити до (www/nginx)
Указанное вірно, якщо ви раніше встановили програми з пакетів, або зібрали порти с
опціями по-умолчанню. Якщо порт був зібраний з перевизначенням параметрів, йому доведеться
перебрати, либо отказаться от переопределенных в порте опций.
Що стосується оновлених пакетів, перевіряються вони щодня, за причинами,
связанным с безопасностью, узнать ояких можна за допомогою утиліти
). Інформація про нові версії приходить часто, іноді навіть дуже
великому обсязі, але поки що "0 problem(s) in your installed packages found" метушитися не варто.
Час від часу я запускаю
pkg_upgrade -a -C
для отримання з FTP свіжих пакетів гілки
Коротко про оновлення пакетів FreeBSD
• використовуйте пакети з гілки STABLE, котрі перезбираються кожні 2 тижні
• для оновлення пакетів використовуйте утиліту pkg_upgrade (1)
• використовуйте утиліту portmaster (8) для перескладання пакетів, у яких знайдено
проблеми у безпеці
Декілька фактів про оновлення пакетів FreeBSD
• пакети збираються для кожного нового випуску у гілці RELEASE, і в цій гілці вони не
оновлюються (навіть якщо у новій версії пакета усунуто проблему безпеки)
• пакети у гілці STABLE перезбираються кожні 2 тижні
По-перше, ми повинні встановити інструментарій, яким ми оновлюватимемо пакети.
# pkg add -r bsdadminscripts portmaster portaudit
Тут починається найважливіша частина - команди згруповані у функції таким чином, щоб
дозволити нам у простій формі перевірити наявність нових версій пакетів, виявити проблеми безпеки та врешті-решт оновити їх до нової чи виправленої версії.
завантажує останній знімок дерева портів, потім показує, для яких
встановлених у системі пакетів доступні нові версії. Після чого пакети перевіряються на
наявність проблем з безпекою, за допомогою portaudit(8) і, нарешті, перевіряється файл
/usr/ports/UPDATING на наявність різних повідомлень, які можуть бути цікавими для нас.
Функція ports-check не перебудовує і не оновлює пакети, а, як відомоназви,
— призначена для оновлення пакетів із гілки STABLE. У
функції використовується утиліта
(1) із пакета sysutils/bsdadminscripts. Компіляція
з портів не вироблятиметься.
Ви можете використовувати цю функцію у двох варіантах.
викликана без аргументів, вона оновить усі пакети, які будуть знайдені в STABLE FTP. Але як
показано в Прикладі II.5, вона може бути також використана для перескладання тільки конкретних
пакети, які потрібно оновити. Наприклад, port-update openbox nautilus xterm.
Остання функція (див. Лістинг II.3), названа ports-build, перезбирає певний пакет
або всі з них, якщо ви не задали імена пакетів явно.
Приклад Оновлюємо одиночний пакет
=> Update to (x11-wm/
===>>> 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.
перезбирає всі зазначені пакети без перевірки на security problems. Крім того, пакети
перезбираються з портів, а не як зазначено вище, no compilation. portmaster -packages)
Застосовуючи такий підхід щодо актуалізації пакетів, ви повинні мати на увазі дві речі.
Якщо Ви зібрали пакет з нестандартними опціями, які використовуються при компіляції, то після оновлення пакет «повернеться» до стандартних значень. Тому Вам доведеться перекомпілювати його так, як потрібно саме Вам.
Спочатку потрібно оновити базову систему, а після
Найбільш часто використовувані пакети, в яких присутні модулі ядра - emulators/virtualbox-ose (VirtualBox), sysutils/fuse-kmod (реалізація FUSE) і найпримітнішийx11/nvidia-driver (бінарні графічні драйвери для карт Nvidia).