dotnet 8 版本與銀河麒麟V10和UOS系統的 glibc 相容性

lindexi發表於2024-04-27

剛剛好 dotnet 8 的 glibc 版本足夠舊,可以執行

本文記錄於 2024.04.26 如果你閱讀本文時間距離本文記錄時間過遠,可能本文記錄的資訊已失效

dotnet

根據 dotnet 的 supported-os 文件記錄,當前的 dotnet 8 是 8.0.4 版本,官方說明是支援 Debian 11 及以上版本

實際測試可以在 debian 10 執行,且構建打包製作 AOT 等也正常

構建 dotnet 8 使用的是 Ubuntu 16.04 系統,依賴的 glibc 是 2.23 版本

debian 10

debian 10.13 版本的 glibc 版本是 2.28 版本

透過 ldd --version 命令列獲取的 glibc 版本資訊如下

ldd (Debian GLIBC 2.28-10+deb10u2) 2.28

可見 debian 10.13 的 glibc 版本大於 dotnet 8 的依賴 glibc 版本,從基礎層面上提供了可執行的可能

經過我的稍微複雜的測試,發現了 dotnet 8 可以執行起來,且 AOT 部分也正常

麒麟

在我的裝置上使用 cat /etc/.kyinfo 獲取麒麟系統的版本的輸出資訊如下

[dist]
name=Kylin
milestone=Desktop-V10-SP1-General-Release-TSM-lindexi-20230217
arch=arm64
beta=False
time=2023-02-17 19:01:29

根據 定昌電子 記錄的文件,這裡的 Desktop V10 SP1 General Release 版本就是銀河麒麟桌面作業系統V10 SP1版本

執行 uname -r 的輸出如下

>$ uname -r
5.4.18-53sy01-generic

在麒麟系統上執行 cat /etc/debian_version 獲取 debian 版本號,輸出資訊如下

>$ cat /etc/debian_version
bullseye/sid

bullseye 是 debian 11 的釋出代號,詳細請看 https://www.debian.org/releases/bullseye/

執行 ldd --version 命令列獲取的 glibc 版本資訊如下

>$ ldd --version
ldd (Ubuntu GLIBC 2.31-0kylin9.1k20.5) 2.31

可以看到麒麟V10基於 debian 11 且 glibc 為 2.31 版本,完全在 dotnet 8 支援範圍內

UOS

在我的 UOS 虛擬機器上執行 cat /etc/product-info 獲取 UOS 的版本號資訊的輸出如下

>$ cat /etc/product-info
UnionTech OS-20-20221214083720_x86_64_E_1050_4-19

執行 cat /etc/os-version 檢視 UOS 統信作業系統版本的輸出如下

>$ cat /etc/os-version
[Version]
SystemName=UnionTech OS Desktop
SystemName[zh_CN]=統信桌面作業系統
ProductType=Desktop
ProductType[zh_CN]=桌面
EditionName=E
EditionName[zh_CN]=E
MajorVersion=20
MinorVersion=1050
OsBuild=11068.102

執行 cat /etc/os-release 的輸出如下

>$ cat /etc/os-release
PRETTY_NAME="UnionTech OS Desktop 20 E"
NAME="uos"
VERSION_ID="20"
VERSION="20"
ID=uos
HOME_URL="https://www.chinauos.com/"
BUG_REPORT_URL="http://bbs.chinauos.com"
VERSION_CODENAME=uranus

執行 uname -r 的輸出如下

>$ uname -r
4.19.0-amd64-desktop

執行 cat /etc/debian_version 獲取 debian 版本號,輸出資訊如下

>$ cat /etc/debian_version
10.10

執行 ldd --version 命令列獲取的 glibc 版本資訊如下

>$ ldd --version
ldd (Debian GLIBC 2.28.19-1+dde) 2.28

可以看到 UOS 的 OS-20-20221214083720 20.1050.11068.102 版本是基於 debian 10 的,在 dotnet 8 官方宣告的支援範圍之外。但 glibc 的版本是 2.28 版本,大於 dotnet 8 的依賴版本,提供了基礎執行的可能。經過我的稍微複雜的測試,發現了 dotnet 8 可以執行起來,且 AOT 部分也正常

更多 Linux 和國產系統的開發相關部落格,請參閱 部落格導航

相關文章