我运行命令update-alternatives --config php,没有显示任何内容。我检查了二进制文件,它们是/usr/bin文件夹中的可执行文件。已安装的PHP7.4版本来自AppStream存储库,PHP5.6版本来自REMI存储库。
ll /usr/bin/php*
-rwxr-xr-x. 1 root root 6376328 Oct 11 01:34 /usr/bin/php
lrwxrwxrwx 1 root root 32 Feb 15 21:31 /usr/bin/php56 -> /opt/remi/php56/root/usr/bin/php
lrwxrwxrwx 1 root root 36 Feb 15 21:31 /usr/bin/php56-cgi -> /opt/remi/php56/root/usr/bin/php-cgi
lrwxrwxrwx 1 root root 33 Aug 11 2021 /usr/bin/php56-pear -> /opt/remi/php56/root/usr/bin/pear
lrwxrwxrwx 1 root root 38 Feb 15 21:31 /usr/bin/php56-phar -> /opt/remi/php56/root/usr/bin/phar.phar
-rwxr-xr-x. 1 root root 6375784 Oct 11 01:34 /usr/bin/php-cgi
-rwxr-xr-x. 1 root root 4741 Oct 11 01:34 /usr/bin/phpize使用Java,我注意到它们是指向alternatives的符号链接。
[root@alma8-webapps-dev alternatives]# ll /usr/bin/java*
lrwxrwxrwx. 1 root root 22 Feb 10 00:39 /usr/bin/java -> /etc/alternatives/java
lrwxrwxrwx. 1 root root 23 Feb 10 00:39 /usr/bin/javac -> /etc/alternatives/javac
lrwxrwxrwx. 1 root root 25 Feb 10 00:39 /usr/bin/javadoc -> /etc/alternatives/javadoc
lrwxrwxrwx. 1 root root 23 Feb 10 00:39 /usr/bin/javap -> /etc/alternatives/javap一个选项是重命名PHP7.4文件,因此我将它们重命名如下:
mv /usr/bin/php /usr/bin/php74
mv /usr/bin/php-cgi /usr/bin/php74-cgi在那之后,我创造了新的选择:
alternatives --install /usr/bin/php php /usr/bin/php74 1
alternatives --install /usr/bin/php php /usr/bin/php56 2
alternatives --install /usr/bin/php-cgi php-cgi /usr/bin/php74-cgi 1
alternatives --install /usr/bin/php-cgi php-cgi /usr/bin/php56-cgi 2这些条目现在在备选方案中:
update-alternatives --config php
There are 2 programs which provide 'php'.
Selection Command
-----------------------------------------------
1 /usr/bin/php74
*+ 2 /usr/bin/php56
Enter to keep the current selection[+], or type selection number:它创建了指向替代方案的符号链接。
ll /usr/bin/php*
lrwxrwxrwx 1 root root 21 Feb 17 19:56 /usr/bin/php -> /etc/alternatives/php
lrwxrwxrwx 1 root root 32 Feb 15 21:31 /usr/bin/php56 -> /opt/remi/php56/root/usr/bin/php
lrwxrwxrwx 1 root root 36 Feb 15 21:31 /usr/bin/php56-cgi -> /opt/remi/php56/root/usr/bin/php-cgi
lrwxrwxrwx 1 root root 33 Aug 11 2021 /usr/bin/php56-pear -> /opt/remi/php56/root/usr/bin/pear
lrwxrwxrwx 1 root root 38 Feb 15 21:31 /usr/bin/php56-phar -> /opt/remi/php56/root/usr/bin/phar.phar
-rwxr-xr-x. 1 root root 6376328 Oct 11 01:34 /usr/bin/php74
-rwxr-xr-x. 1 root root 6375784 Oct 11 01:34 /usr/bin/php74-cgi
lrwxrwxrwx 1 root root 25 Feb 17 19:59 /usr/bin/php-cgi -> /etc/alternatives/php-cgi
-rwxr-xr-x. 1 root root 4741 Oct 11 01:34 /usr/bin/phpize我测试了更新PHP,它说PHP不再安装。
dnf update php
Last metadata expiration check: 0:28:58 ago on Fri 17 Feb 2023 07:41:07 PM AEDT.
Package php available, but not installed.
No match for argument: php
Error: No packages marked for upgrade.我怎样才能让替代方案与PHP的多个版本一起工作,并且仍然能够执行更新?
发布于 2023-02-17 14:44:10
https://almalinux.discourse.group/t/no-update-alternatives-in-almalinux-8-for-php/2115/2复本
已经回答了
使用模块命令,而不是替代
示例
$ module load php74
$ php -v
PHP 7.4.33 (cli) (built: Feb 14 2023 08:29:51) ( NTS )
$ module unload php74
$ module load php82
$ php -v
PHP 8.2.3 (cli) (built: Feb 14 2023 01:06:39) (NTS gcc x86_64)
$ module unload php82
$ php -v
PHP 8.1.16 (cli) (built: Feb 14 2023 18:59:41) (NTS gcc x86_64)替代方案是永久性的,在全系统范围内(所有用户)
模块适用于当前会话,因此更灵活
软件包php可用,但未安装。
正如dnf所说,没有安装,您可能需要更新php-cli /php 56-php-cli,或者使用joker。
# dnf update php\*但是,由于挑选更新是一种非常糟糕的做法,所以最好运行一个简单的
# dnf update在所有情况下,此更新都会破坏手动设置的备选方案。
https://unix.stackexchange.com/questions/735840
复制相似问题