幾年前,我將幾台 32 位元 Linode 伺服器切換到 64 位元核心(請按照此處的說明https://www.linode.com/docs/platform/disk-images/switch-to-a-64-bit-linux-kernel)。從那時起,它們中的大多數都以 64 位元運行。命令輸出在這些 64 位元上顯示以下內容:
[root@host1 ~]# getconf LONG_BIT
64
[root@host1 ~]# uname -a
Linux host1.mydomain.co.uk 4.6.5-x86_64-linode71 #2 SMP Fri Jul 29 16:16:25 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux
但是一些同樣使用 64 位元核心的伺服器從 getconf 顯示為 32:
[root@host2 ~]# getconf LONG_BIT
32
[root@host2 ~]# uname -a
Linux host2.mydomain.co.uk 4.9.15-x86_64-linode81 #1 SMP Fri Mar 17 09:47:36 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux
Linode 暗示也許某個套件在某個時候改變了它。
我認為問題是它阻止我透過 yum 安裝一些軟體包。例如,在 64 位元伺服器上,我可以安裝 PHP7,但在 32 位元伺服器上,我無法安裝安裝 PHP7 所需的儲存庫,它們在 32 位元伺服器上不存在。
伺服器應該非常相似。我幾年前將它們設置為32 位,幾年前將它們全部更改為64 位元內核,但直到最近才意識到我的大多數伺服器可以安裝PHP7,但只有少數伺服器不能安裝,因為它們報告為32位元.
有人知道為什麼會發生這種情況? getconf 的輸出可以改變嗎?
32位元伺服器getconf目錄檔案:
[root@host2 ~]# ls -l /usr/libexec/getconf
total 96
lrwxrwxrwx 1 root root 20 Jun 11 2016 default -> POSIX_V6_ILP32_OFF32
-rwxr-xr-x 4 root root 23740 May 10 2016 POSIX_V6_ILP32_OFF32
-rwxr-xr-x 4 root root 23740 May 10 2016 POSIX_V6_ILP32_OFFBIG
-rwxr-xr-x 4 root root 23740 May 10 2016 POSIX_V7_ILP32_OFF32
-rwxr-xr-x 4 root root 23740 May 10 2016 POSIX_V7_ILP32_OFFBIG
64位元伺服器getconf目錄檔:
[root@host1 ~]# ls -l /usr/libexec/getconf
total 48
lrwxrwxrwx 1 root root 19 Apr 25 10:56 default -> POSIX_V6_LP64_OFF64
-rwxr-xr-x 2 root root 22808 Apr 11 16:49 POSIX_V6_LP64_OFF64
-rwxr-xr-x 2 root root 22808 Apr 11 16:49 POSIX_V7_LP64_OFF64