Ubuntu Server 20.04上的預設PHP版本是7.4.3,我想將其升級到7.4.30。我已將 ppa:ondrej/php 添加到 apt 儲存庫,但 apt 升級顯示它將將 PHP 升級到 8.1。我該如何告訴 apt 我不想跳到 PHP 8?
答案1
長話短說:
sudo apt install php7.4=1:7.4.30-5+ubuntu20.04.1+deb.sury.org+1
完整解釋:
由於您已經新增了ppa:ondrej/php
儲存庫(已通過sudo add-apt-repository ppa:ondrej/php
),因此您可以使用apt-cache
列出可以安裝的可用版本,然後apt install
安裝特定版本。
該apt
工具使用別名來簡化流行應用程式的安裝。正如您無意中發現的,apt install php
現在是 的別名apt install php8.1
。 ondrej/php 儲存庫新增了php8.1
、php8.0
和 的套件,並為指向 的php7.4
新增了別名。php
php8.1
因為您想要安裝 php 7.4.30,所以您需要在apt install
命令中明確包含版本號。該apt-cache
命令將列出所有可用版本。我更喜歡使用,apt-cache madison
因為我發現輸出比apt-cache showpkg
或 更容易閱讀apt-cache policy
,但其中任何一個都將提供您需要的資訊 - 使用您喜歡的任何命令。
apt-cache madison php7.4
將會傳回類似這樣的內容:
php7.4 | 1:7.4.30-5+ubuntu20.04.1+deb.sury.org+1 | http://ppa.launchpad.net/ondrej/php/ubuntu focal/main amd64 Packages
php7.4 | 7.4.3-4ubuntu2.12 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
php7.4 | 7.4.3-4ubuntu2.12 | http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages
php7.4 | 7.4.3-4ubuntu1 | http://archive.ubuntu.com/ubuntu focal/main amd64 Packages
這些列的組織方式如下:
<package name> | <version> | <repository>
apt
支援使用可選語法安裝特定版本的套件package=version
。在本例中,所需的版本是1:7.4.30-5+ubuntu20.04.1+deb.sury.org+1
,它來自 ondrej/php 儲存庫。
把它們放在一起:
sudo apt install php7.4=1:7.4.30-5+ubuntu20.04.1+deb.sury.org+1
答案2
Ubuntu 維護者在官方軟體包中包含錯誤修復和安全性更新。他們保留主要版本。因此無需升級到上游次要版本。
可以看到Ubuntu 20.04有7.4.3-4ubuntu2.12
PHP的版本。
您可以參考變更日誌
尋找此類“升級”是一個常見的錯誤。