В общем, я обычно делаю что-то вроде этого:
# portsnap fetch
# portsnap update
# portmaster -L | grep -B1 "New version"
===>>> php5-5.2.11
===>>> New version available: php5-5.2.12
# portmaster php5-5.2.11
Но с PHP у меня около 40 модулей и я должен их один за другим. Есть ли лучший (и безопасный) способ сделать это?
Редактировать: ну, оказывается, это то, что нужно:
# portmaster php5-extensions
Удивительно, как трудно было это выяснить!
решение1
portmaster -db php5*
решение2
Во-первых, я должен сказать, что я не использую portmaster, я использую portupgrade, но я собираю порты, а не использую пакеты!
Portupgrade позволяет вам устанавливать:
portupgrade php\*
который обновит все php порты. Portmaster может сделать то же самое.
Также вы можете дать portsnap несколько команд за один раз, так что вы можете поместить
portsnap fetch update
решение3
Я пересобираю/обновляю все пакеты, зависящие от php5, для безопасности. Вам нужно указать полное имя пакета, включая версию. Узнайте точную версию с помощью pkg_info:
# pkg_info|grep php
php5-5.3.8 PHP Scripting Language
Затем пересоберите/обновите php и все зависящие от него порты с помощью:
# portmaster -r php5-5.3.8
решение4
Более современный ответ с использованием только pkg
:
pkg install `pkg info | grep php | sed 's/72/74/; s/-7.*//'`
Пример обновляет PHP 7.2 до 7.4. Первую команду sed необходимо настроить для установленной и целевой версий PHP.
Разрешение версии pkg
не знает, что некоторые расширения PHP, необходимые в старых версиях PHP, теперь являются частью PHP 7.4. Возможно, вам придется удалить несколько из них с помощью такой команды: pkg delete -fy php72-hash
.