Я работаю над тем, как выбрать предпочитаемую версию PHP для сценария установки VestaCP. Я хочу, чтобы сценарий определял, какие версии PHP доступны в качестве вариантов для установки, и позволял человеку, устанавливающему VestaCP, выбирать, какую доступную версию он хочет установить, на основе доступных версий из репозиториев в своих системах по адресу время установки.
Команда, которую я выдаю, чтобы получить ТОЛЬКО номера версий для php, отлично работает:
apt-cache showpkg php | grep -A 20 'Reverse Provides' | grep -P '^php' | colrm 7 | sort -u
apt-cache showpkg
дает мне ВСЕ доступные версии (не только кандидаты)
grep -A 20
дают мне 20 (произвольное число достаточно большое) строк из раздела Reverse Provides, избавляясь от остальных, которые меня не волнуют
grep -P
дает мне только строки из этого раздела, которые начинаются с php
colrm
отсекает все, кроме фактических номеров версий
sort
дает мне только уникальные значения ( поскольку несколько репозиториев предлагают одинаковые php версии)
Результат точно такой, как вы хотели:
php5.6
php7.0
php7.1
php7.2
php7.3
php7.4
Мой вопрос: есть ли лучший способ сделать это? Кажется, много труб и много шагов для выполнения sh такой простой задачи. Это будут почти исключительно системы Ubuntu / Debian / CentOS / RHEL, на которых он будет работать. .