剛剛好 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 和國產系統的開發相關部落格,請參閱 部落格導航