【外评】Ubuntu 24.04 中 .NET 的新功能

今天是 Ubuntu 24.04 Noble Numbat 的发布日。祝贺我们的 Canonical 朋友。我想说这是一个吉祥的日子,但它比这更荣耀!事实上,这是 .NET 版本首次在Ubuntu官方源中发布。无需等待,现在就可以在Ubuntu 24.04中开始使用.NET了。

您可能还记得,在Ubuntu 22.04发布几个月后,.NET 6被添加到了Ubuntu 22.04中。从那时起,我们学到了很多东西,Canonical与微软之间的合作关系也得到了长足的发展。从Ubuntu 24.04开始,Ubuntu feeds将成为.NET软件包的官方来源

.NET安装文档已更新以反映最新说明。

Ubuntu 24.04的容器镜像已经可用,适用于.NET 8+。它们包括 noblename-chiselednoble-chiseled-extra 镜像。

Ubuntu LTS 版本总是很受欢迎。我们很高兴 .NET 成为Ubuntu 24.04的一部分,预计在未来几周或几个月内,很多 .NET 开发人员将开始使用这些新软件包和容器镜像。

软件包

在 Ubuntu 24.04 上安装 .NET 8 非常简单。

$ sudo apt update && sudo apt install -y dotnet-sdk-8.0
$ dotnet --version
8.0.104

安装 .NET 8 与安装 Ubuntu 中的任何其他软件包都是一样的。不需要配置额外的源代码。

Ubuntu .NET backports 软件包库(也由Canonical维护)中提供了 .NET 6 和 .NET 7。

下面是如何使用 dotnet/backports  软件包库安装 .NET 6。

$ sudo add-apt-repository ppa:dotnet/backports
$ sudo apt install -y dotnet-sdk-6.0
$ dotnet --version
6.0.129

.NET 7 可以使用相同的模式安装,不过只需注册一次 dotnet/backports 资源库。

在所有情况下,都比注册 packages.microsoft.com feed 简单。

注释:

  • 如果找不到 add-apt-repository,请安装 software-properties-common 软件包。
  • 安装时还可能安装 tzdata,它具有交互式安装功能。

容器

noble 容器体验与 jammy 大体相同。新镜像支持non-rootchiseledglobalization-ready

我用一个sample Dockerfile 来演示,其目标是 jammy-chiseled.

$ grep jammy Dockerfile.chiseled
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0-jammy AS build
FROM mcr.microsoft.com/dotnet/aspnet:8.0-jammy-chiseled
$ sed -i "s/jammy/noble/g" Dockerfile.chiseled
$ grep noble Dockerfile.chiseled
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0-noble AS build
FROM mcr.microsoft.com/dotnet/aspnet:8.0-noble-chiseled

这些镜像在nightly里。

sed -i "s;/dotnet/;/dotnet/nightly/;g" Dockerfile.chiseled

现在我们可以构建并运行一个容器了。

$ docker build --pull -t aspnetapp -f Dockerfile.chiseled .
$ docker run --rm -it -p 8000:8080 -m 50mb --cpus .5 aspnetapp
warn: Microsoft.AspNetCore.DataProtection.Repositories.FileSystemXmlRepository[60]
      Storing keys in a directory '/home/app/.aspnet/DataProtection-Keys' that may not be persisted outside of the container. Protected data will be unavailable when container is destroyed. For more information, go to https://aka.ms/aspnet/dataprotectionwarning
warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]
      No XML encryptor configured. Key {6326de0e-7eab-412d-9d06-eb0d019e5590} may be persisted to storage in unencrypted form.
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://[::]:8080

升级很快。

我快速对比了前后的体积。它们差不多。

$ docker images aspnetapp
REPOSITORY   TAG              IMAGE ID       CREATED          SIZE
aspnetapp    jammy-chiseled   d938d8ee1104   51 seconds ago   118MB
aspnetapp    noble-chiseled   e59689894c68   35 minutes ago   119MB

安全和支持

微软和 Canonical 正在服务和支持方面开展合作。为此,微软会在 Patch Tuesday 发布前向 Canonical 提供安全和功能修复(通过私人渠道),并留出时间进行构建和测试。我们与 Red Hat 也是这样做的。我们的目标是,.NET 修补程序可以同时在所有地方提供。

如前所述,.NET 软件包的官方来源将是Ubuntu feeds。这就提出了支持问题。您可以在 dotnet8 launchpad 或相应的 dotnet repo 中提交 .NET 问题。如果在由哪个组织解决问题的问题上存在任何歧义,我们将通过我们的合作伙伴关系来处理。

结束语

我们很高兴 .NET 能如此完美地集成到 Ubuntu 中,也很高兴能得到 Canonical 朋友们的大力支持。我们将继续寻找和探索新的方法来改善 .NET 在 Ubuntu 上的使用体验。

本文文字及图片出自 What’s new for .NET in Ubuntu 24.04

余下全文(1/3)
分享这篇文章:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注