В FreeBSD бывает два способа установки и управления приложениями через порты или пакеты. Утилита pkg используется для управления пакетами в FreeBSD. В статье будут показаны основные команды pkg утилиты и рассказано как установить и удалить программы и сервисы через пакеты, обновить все установленные пакеты за раз. Смешивать в системе установку через порты и пакеты не рекомендуется. Если ты используешь для установки порты, то обновляй приложения через порты. Соглашаемся с тем что пакетный менеджер будет установлен. Пакетный менеджер успешно установлен. Этот раздел можешь пропустить если тебе не нужна ветка последних пакетов, а ты используешь стандартную стабильную ветку. По умолчанию пакеты в FreeBSD используют Quarterly (квартальную) ветку обновлений. Это означает что пакеты обновлятся раз в квартал. Если появляется проблема с безопасностью в пакете, обновление приходит раньше. Существует еще Latest (последняя) ветка. В этой ветке всегда свежие версии программ и сервисов, по мере их сборки после появления в коллекции портов FreeBSD. Ветка Latest может незначительно отставать от портов FreeBSD. Я привык использовать порты, а что-то тяжелое ставить из пакетов.
И что бы версии что в портах и пакетах были одинаковые я использую Latest ветку. Перейдем на Latest ветку пакетов. После изменения необходимо обязательно обновить репозиторий пакетов. Параметр -f сделают полную загрузка репозитория пакетов. Будет показано доступные пакеты для обновления и установка новых пакетов если это необходимо. Соглашаемся если все корректно, дожидаемся окончания обновления пакетов. Посмотрим информацию про конкретный пакет, например php82. Будет выведена подробная версии и информация о пакете, параметры сборки порта в пакеты, дата установки и так далее. Устанавливаем пакет. Для примера установим nano. Также будут установлены необходимые пакеты если они нужны. Для nano дополнительные пакеты не требуются. Текстовый редактор nano успешно установлен. Если пакет имеет несколько версий, необходимо прямо указывать версию пакета. В предыдущем разделе искали доступные версии mariadb. Сервер MariaDB имеет несколько версии для установки. Если удаляемый пакет является зависимостью для других пакетов, то будет выведен список удаляемых пакетов вместе с этим пакетом. Nginx не является для других пакетом зависимостью, поэтому удален только он будет. Пакет можно заблокировать чтобы он не обновлялся при автоматическом обновлении всех пакетов.
Это удобно если несколько приложений собираются из портов с необходимыми опциями. Так же не будет возможности обновить php82 через порты пока заблокирован пакет. Я обновляю почти все через пакеты, так как это быстрее. Nginx и PHP у меня собираются с нужными мне опциями из портов. Я поступаю следующим образом: обновляю все пакеты через pkg, затем разблокирую пакеты Nginx и PHP, обновляю их через сборку из портов, вновь блокирую их чтобы случайно не обновить. Это получается некий костыль, но я как то к этому привык и проблем у меня с этим не возникает. В комментариях в соцсетях под постом с этой статьей можешь оставить комментарий как это можно оптимизировать, если это возможно. Если используется много приложений через порты, то логично отказатся от пакетов совсем. После удаления пакетов, могут оставатся пакеты зависимости которые были необходимы для работы удаленного пакета. Будут удалены все неиспользуемые пакеты. Если что-то собиралось из портов, то для сборки были собраны autoconf, automake, gmake и другие утилиты. Для пакетного менеджера они не являются зависимостями для других пакетов и небыли явно установлены в систему.
CAM stands for Common Access Method. It is a generic way to address the I/O buses in a SCSI-like way. This allows a separation of the generic device drivers from the drivers controlling the I/O bus: for example the disk driver becomes able to control disks on both SCSI, IDE, and/or any other bus so the disk driver portion does not have to be rewritten (or copied and modified) for every new I/O bus. SCSI Interface Modules (SIM) — a Host Bus Adapter drivers for connecting to an I/O bus such as SCSI or IDE. A peripheral driver receives requests from the OS, converts them to a sequence of SCSI commands and passes these SCSI commands to a SCSI Interface Module. The SCSI Interface Module is responsible for passing these commands to the actual hardware (or if the actual hardware is not SCSI but, for example, IDE then also converting the SCSI commands to the native commands of the hardware).