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