Portupgrade и Portmaster

FreeBSD, ... Установка, настройка, эксплуатация.

Модератор: ROOT

Portupgrade и Portmaster

Сообщение ROOT » 07 ноя 2013, 07:30

Утилита portupgrade

Portupgrade – это не одна утилита, а целый пакет утилит по управлению портами.
В пакет portupgrade входят:

1. portupgrade – одноименная утилита, средство автоматического обновления установленных программ
2. portinstall – утилита установки новых программ, присутствующих в системе портов FreeBSD
3. portversion – утилита показывающая установленный софт и наличие обновлений для него.
4. portsclean – утилита очистки мусора остающегося после сборки портов
5. portsdb – утилита создающая базу программ, присутствующих в портах FreeBSD
6. ports_glob – предназначена для поиска по базе портов
7. portcvsweb – браузер для CVSWeb
8. pkgdu – утилита, предназначенная для подсчета дискового пространства занятого установленными программами
9. pkgdb – еще одна утилита для управления базой портов
10. pkg_which – предназначен для поиска по базе портов
11. pkg_sort – утилита сортирует порты в соответствии c зависимостями
12. pkg_fetch – утилита для скачки собранных(бинарных) пакетов
13. pkg_deinstall – средство для массового удаления установленного софта

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

Код: выделить все
# cd /usr/ports/ports-mgmt/portupgrade && make install clean


Не забываем обновлять порты перед использованием утилит!
Код: выделить все
# svnlite update /usr/ports


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

1. Обновить все программы (-a) с зависимостями от обновляемых портов (-r) и зависимостями для этих портов (-R)
Код: выделить все
# portupgrade -arR

А такая команда позволит скачать новые программы, не устанавливая их:
Код: выделить все
# portupgrade -aFrR

2. Если в системе что-то сломалось и мы хотим обновить все программы независимо от того, нуждаются они в обновлении или нет, выполняем:
Код: выделить все
# portupgrade -af

При добавлении ключа (-b) к этой команде позволяет сохранить старые версии пакетов в бэкап (/usr/ports/packages/All/), установить пакет из бэкапа можно используя команду:
Код: выделить все
# pkg_add

3. Определяем программы, нуждающиеся в обновлении:
Код: выделить все
# pkg_version -v | grep "need"

или
Код: выделить все
# portversion | grep "<"

Можно и так:
Код: выделить все
# portversion -l "<"

Вид списка нуждающихся в обновлении портов будет разным.
4. С помощью portinstall можно устанавливать программы, делаем так:
Код: выделить все
# portinstall /usr/ports/databases/mysql51-server/

Сборка и установка порта будет произведена по правилам, указанным в файле конфигурации.
5. Для периодической чистки дерева портов от всякого мусора, оставшегося от неудачных сборок, используем portsclean:
Код: выделить все
# portsclean -C

- для очистки рабочих директорий, тех которые используются для сборки программ и
Код: выделить все
# portsclean -D

- для очистки директории /usr/ports/distfiles от устаревших файлов исходников программ

6. Pkgdb - в основном используется для исправления нарушенных зависимостей портов:
Код: выделить все
# pkgdb -F

7. Удаляем пакеты при помощи pkg_deinstall:
Код: выделить все
# pkg_deinstall apache

Интересная особенность, не нужно больше указывать полностью номер версии!
Portupgrade - очень полезный и надежный инструмент!


Утилита Portmaster

Не менее удобное, чем potrupgrade, средство, кроме этого, есть одно очень позитивное отличие: если portupgrade при сбое и повторном запуске начинает все сначала, причем при этом еще и может пострадать его база данных, portmaster, не используя никаких сторонних баз, строит список пересобранных портов. В случае, если возникает какая-либо нерешаемая ситуация, и пересборка портов останавливается, достаточно вручную решить проблему и перезапустить portmaster.

Установка:
Код: выделить все
# /usr/ports/ports-mgmt/portmaster
# make install clean

Использование Portmaster
1. Ищем что необходимо обновить:
Код: выделить все
# portmaster -L | grep -B1 «New version»

Выводятся имена пакетов
2. Обновляем все пакеты:
Код: выделить все
# portmaster -Da


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

Обновление портов
Код: выделить все
#!/bin/sh
clear

echo "------------------------------------- Updating ports"
svnlite update /usr/ports

echo "------------------------------------- Upgrading portsaudit's database"
portaudit -Fda > ports-portaudit.txt

echo "------------------------------------- Listing outdated ports"
portmaster -L | grep -B1 "New version" > ports-to-upgrade.txt


Утилиты Portupgrade и Portmaster могут прекрасно уживаться вместе и дополнять друг друга. Пример из жизни - случилась неприятная ситуация с повреждением базы установленных портов. Pkgdb -F не помогал. На помощь пришел Portmaster:

Код: выделить все
#portmaster --check-depends 
#portmaster --check-port-dbdir 
#pkgdb -Fu


На вопросы об удалении нарушенных зависимостей отвечаем утвердительно ("у").
Для желающих отблагодарить
SB: 4274320029755744
QIWI: +79175241450
Аватар пользователя
ROOT
Администратор
 
Сообщений: 137
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Вернуться в FreeBsd

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron