刚刚好 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=Kylinmilestone=Desktop-V10-SP1-General-Release-TSM-lindexi-20230217arch=arm64beta=Falsetime=2023-02-17 19:01:29
根据 定昌电子 记录的文档,这里的 Desktop V10 SP1 General Release 版本就是银河麒麟桌面操作系统V10 SP1版本
运行 uname -r
的输出如下
>$ uname -r5.4.18-53sy01-generic
在麒麟系统上运行 cat /etc/debian_version
获取 debian 版本号,输出信息如下
>$ cat /etc/debian_versionbullseye/sid
bullseye 是 debian 11 的发布代号,详细请看 https://www.debian.org/releases/bullseye/
运行 ldd --version
命令行获取的 glibc 版本信息如下
>$ ldd --versionldd (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-infoUnionTech OS-20-20221214083720_x86_64_E_1050_4-19
运行 cat /etc/os-version
查看 UOS 统信操作系统版本的输出如下
>$ cat /etc/os-version[Version]SystemName=UnionTech OS DesktopSystemName[zh_CN]=统信桌面操作系统ProductType=DesktopProductType[zh_CN]=桌面EditionName=EEditionName[zh_CN]=EMajorVersion=20MinorVersion=1050OsBuild=11068.102
运行 cat /etc/os-release
的输出如下
>$ cat /etc/os-releasePRETTY_NAME="UnionTech OS Desktop 20 E"NAME="uos"VERSION_ID="20"VERSION="20"ID=uosHOME_URL="https://www.chinauos.com/"BUG_REPORT_URL="http://bbs.chinauos.com"VERSION_CODENAME=uranus
运行 uname -r
的输出如下
>$ uname -r4.19.0-amd64-desktop
运行 cat /etc/debian_version
获取 debian 版本号,输出信息如下
>$ cat /etc/debian_version10.10
运行 ldd --version
命令行获取的 glibc 版本信息如下
>$ ldd --versionldd (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 和国产系统的开发相关博客,请参阅 博客导航

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。 欢迎转载、使用、重新发布,但务必保留文章署名 林德熙 (包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我 联系。