De .NET SDK of de .NET Runtime installeren in Ubuntu

In dit artikel wordt beschreven hoe u .NET installeert op Ubuntu. De Microsoft-pakketopslagplaats bevat elke versie van .NET die momenteel of eerder werd ondersteund op Ubuntu. Vanaf Ubuntu 22.04 zijn sommige versies van .NET beschikbaar in de Ubuntu-pakketfeed. Zie de sectie Ondersteunde distributies voor meer informatie over beschikbare versies.

Waarschuwing

Het is raadzaam om één opslagplaats te kiezen voor .NET-pakketten. Meng .NET-pakketten niet uit meerdere pakketopslagplaatsen, omdat dit leidt tot problemen wanneer apps proberen een specifieke versie van .NET op te lossen.

Wijze Voordelen Nadelen
Pakketbeheer
(Microsoft-feed)
  • Ondersteunde versies zijn altijd beschikbaar.
  • Patches zijn op de juiste manier beschikbaar.
  • Afhankelijkheden zijn opgenomen.
  • Gemakkelijk verwijderen.
  • Hiervoor moet de Microsoft-pakketopslagplaats worden geregistreerd.
  • Preview-versies zijn niet beschikbaar.
  • Ondersteunt alleen x64 Ubuntu.
Pakketbeheer
(Ubuntu-feed)
  • Meestal is de nieuwste versie beschikbaar.
  • Patches zijn op de juiste manier beschikbaar.
  • Afhankelijkheden zijn opgenomen.
  • Gemakkelijk verwijderen.
  • De beschikbare .NET-versies variëren per Ubuntu-versie.
  • Preview-versies zijn niet beschikbaar.
  • Ondersteunt alleen x64 Ubuntu. (Met uitzondering van Ubuntu 23.04+, die ook Ondersteuning biedt voor Arm64)
Script \ Handmatige extractie
  • Bepalen waar .NET is geïnstalleerd.
  • Preview-versies zijn beschikbaar.
  • Updates handmatig installeren.
  • Installeer afhankelijkheden handmatig.
  • Handmatig verwijderen.

Bepalen hoe u .NET installeert

Wanneer uw versie van Ubuntu .NET ondersteunt via de ingebouwde Ubuntu-feed, wordt ondersteuning voor die builds van .NET geleverd door Canonical en zijn de builds mogelijk geoptimaliseerd voor verschillende workloads. Microsoft biedt ondersteuning voor pakketten in de Microsoft-pakketopslagplaatsfeed.

Gebruik de volgende secties om te bepalen hoe u .NET moet installeren:

Ik gebruik Ubuntu 22.04 of hoger en ik heb alleen .NET nodig

Installeer .NET via de Ubuntu-feed. Zie de volgende pagina's voor meer informatie:

Belangrijk

.NET SDK-versies die door Canonical worden aangeboden, bevinden zich altijd in de .1xx-functieband. Als u een nieuwere functiebandrelease wilt gebruiken, gebruikt u de Microsoft-feed om de SDK te installeren. Zorg ervoor dat u de informatie in het .NET-pakketmixen in Linux bekijkt om inzicht te krijgen in de gevolgen van het schakelen tussen opslagplaatsfeeds.

Als u de Microsoft-opslagplaats gaat installeren om andere Microsoft-pakketten te gebruiken, zoals powershell, mdatpof mssql, moet u de .NET-pakketten die door de Microsoft-opslagplaats worden geleverd, deprioritiseren. Zie Mijn Linux-distributie biedt .NET-pakketten en ik wil ze gebruiken voor instructies voor het deprioriteren van de pakketten.

Ik gebruik een versie van Ubuntu vóór 22.04

Gebruik de instructies op de versiespecifieke Ubuntu-pagina.

Raadpleeg de sectie Ondersteunde distributies voor meer informatie over welke versies van .NET worden ondersteund voor uw versie van Ubuntu. Zie De microsoft-pakketopslagplaats registreren als u een versie installeert die niet wordt ondersteund.

Ik gebruik andere Microsoft-pakketten, zoals powershell, mdatpof mssql

Als uw Ubuntu-versie .NET ondersteunt via de ingebouwde Ubuntu-feed, moet u beslissen welke feed .NET moet installeren. De sectie Ondersteunde distributies bevat een tabel waarin wordt vermeld welke versies van .NET beschikbaar zijn voor de pakketfeeds .

Als u de .NET-pakketten wilt ophalen uit de Ubuntu-feed, moet u de .NET-pakketten die door de Microsoft-opslagplaats worden geleverd, deprioritiseren. Zie Mijn Linux-distributie biedt .NET-pakketten en ik wil ze gebruiken voor instructies voor het deprioriteren van de pakketten.

Ik wil een .NET-app maken

Gebruik dezelfde pakketbronnen voor de SDK als voor de runtime. Als u bijvoorbeeld Ubuntu 22.04 en .NET 6 gebruikt, maar niet .NET 7, is het raadzaam om .NET te installeren via de ingebouwde Ubuntu-feed. Als u echter overstapt op .NET 7, dat niet wordt geleverd door Canonical voor Ubuntu 22.04, moet u .NET verwijderen en opnieuw installeren met de Microsoft-pakketopslagplaats. Zie Registreren en installeren met de Microsoft-pakketopslagplaats voor meer informatie. Bekijk ook de andere suggesties in de sectie Bepalen hoe u .NET installeert.

Ik wil een .NET-app uitvoeren in een container-, cloud- of continue integratiescenario

Als uw Ubuntu-versie de .NET-versie biedt die u nodig hebt, installeert u deze vanuit de ingebouwde feed. Anders registreert u de Microsoft-pakketopslagplaats en installeert u .NET vanuit die opslagplaats. Bekijk de informatie in de sectie Ondersteunde distributies .

Als de gewenste versie van .NET niet beschikbaar is, gebruikt u het dotnet-install-script.

Mijn Ubuntu-distributie bevat niet de .NET-versie die ik wil, of ik heb een verouderde .NET-versie nodig

U wordt aangeraden APT en de Microsoft-pakketopslagplaats te gebruiken. Zie de sectie Registreren en installeren met de microsoft-pakketopslagplaats voor meer informatie.

Ik wil een preview-versie installeren

Gebruik een van de volgende manieren om .NET te installeren:

Ik wil APT niet gebruiken

Als u een geautomatiseerde installatie wilt, gebruikt u het Linux-installatiescript.

Als u volledige controle wilt over de .NET-installatie, downloadt u een tarball en installeert u .NET handmatig. Zie Handmatig installeren voor meer informatie.

Ik gebruik een ARM-CPU

Gebruik een van de volgende manieren om .NET te installeren:

Ondersteunde distributies

De volgende tabel is een lijst met momenteel ondersteunde .NET-releases en de versies van Ubuntu waarop ze worden ondersteund. Elke koppeling gaat naar de specifieke Ubuntu-versiepagina met specifieke instructies voor het installeren van .NET voor die versie van Ubuntu.

Ubuntu Ondersteunde .NET-versies Beschikbaar in Ubuntu-feed Beschikbaar in Microsoft-feed
23.10 8.0, 7.0, 6.0 8.0, 7.0, 6.0 8.0, 7.0, 6.0
23.04 8.0, 7.0, 6.0 7.0, 6.0 8.0, 7.0, 6.0
22.10 7.0, 6.0 7.0, 6.0 7.0, 6.0, 3.1
22.04 (LTS) 8.0, 7.0, 6.0 6,0 8.0, 7.0, 6.0, 3.1
20.04 (LTS) 8.0, 7.0, 6.0 Geen 8.0, 7.0. 6.0, 5.0, 3.1, 2.1
18.04 (LTS) 7.0, 6.0 Geen 7.0. 6.0, 5.0, 3.1, 2.2, 2.1
16.04 (LTS) 6,0 Geen 6.0, 5.0, 3.1, 3.0, 2.2, 2.1, 2.0

Wanneer een Ubuntu-versie niet meer wordt ondersteund, wordt .NET niet meer ondersteund met die versie.

De volgende versies van .NET worden ❌ niet meer ondersteund:

  • .NET 5
  • .NET Core 3.1
  • .NET Core 3.0
  • .NET Core 2.2
  • .NET Core 2.1
  • .NET Core 2.0

De Microsoft-pakketopslagplaats registreren

De Microsoft-pakketopslagplaats bevat alle versies van .NET die eerder waren, of die momenteel worden ondersteund met uw versie van Ubuntu. Als uw versie van Ubuntu .NET-pakketten biedt, moet u de Ubuntu-pakketten deprioritiseren en de Microsoft-opslagplaats gebruiken. Zie voor instructies over het deprioriteren van de pakketten een versie van .NET die niet wordt geleverd door mijn Linux-distributie.

Belangrijk

Package Manager-installaties worden alleen ondersteund in de x64-architectuur . Andere architecturen, zoals Arm, moeten .NET op een andere wijze installeren, zoals met het installatiescript of door handmatige installatie.

Preview-versies zijn niet beschikbaar in de Microsoft-pakketopslagplaats. Zie Preview-versies installeren voor meer informatie.

Let op

U wordt aangeraden slechts één opslagplaats te gebruiken om al uw .NET-installaties te beheren. Als u .NET eerder hebt geïnstalleerd met de Ubuntu-opslagplaats, moet u het systeem van .NET-pakketten opschonen en de APT configureren om de Ubuntu-feed te negeren. Zie voor meer informatie over hoe ik dit moet doen, ik heb een versie van .NET nodig die niet wordt geleverd door mijn Linux-distributie.

Installeren met APT kan worden uitgevoerd met een paar opdrachten. Voordat u .NET installeert, voert u de volgende opdrachten uit om de ondertekeningssleutel van het Microsoft-pakket toe te voegen aan uw lijst met vertrouwde sleutels en de pakketopslagplaats toe te voegen.

Open een terminal en voer de volgende opdrachten uit:

# Get Ubuntu version
declare repo_version=$(if command -v lsb_release &> /dev/null; then lsb_release -r -s; else grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"'; fi)

# Download Microsoft signing key and repository
wget https://packages.microsoft.com/config/ubuntu/$repo_version/packages-microsoft-prod.deb -O packages-microsoft-prod.deb

# Install Microsoft signing key and repository
sudo dpkg -i packages-microsoft-prod.deb

# Clean up
rm packages-microsoft-prod.deb

# Update packages
sudo apt update

Tip

Het vorige script is geschreven voor Ubuntu en werkt mogelijk niet als u een afgeleide distributie gebruikt, zoals Linux Mint. Waarschijnlijk krijgt de $repo_version variabele niet de juiste waarde toegewezen, waardoor de URI voor de wget opdracht ongeldig is. Deze variabele wordt toegewezen aan de specifieke Ubuntu-versie waarvoor u pakketten wilt ophalen, zoals 22.10 of 23.04.

U kunt een webbrowser gebruiken en navigeren om te https://packages.microsoft.com/config/ubuntu/ zien welke versies van Ubuntu beschikbaar zijn om als waarde $repo_version te gebruiken.

.NET installeren

Nadat u de Microsoft-pakketopslagplaats hebt geregistreerd of als uw versie van de standaardfeed van Ubuntu het .NET-pakket ondersteunt, kunt u .NET installeren via pakketbeheer met de apt install <package-name> opdracht. Vervang <package-name> door de naam van het .NET-pakket dat u wilt installeren. Als u bijvoorbeeld .NET SDK 8.0 wilt installeren, gebruikt u de opdracht apt install dotnet-sdk-8.0. De volgende tabel bevat de momenteel ondersteunde .NET-pakketten:

Product Type Pakket
8.0 ASP.NET Core Runtime aspnetcore-runtime-8.0
8.0 .NET Runtime dotnet-runtime-8.0
8.0 .NET SDK dotnet-sdk-8.0
7.0 ASP.NET Core Runtime aspnetcore-runtime-7.0
7.0 .NET Runtime dotnet-runtime-7.0
7.0 .NET SDK dotnet-sdk-7.0
6.0 ASP.NET Core Runtime aspnetcore-runtime-6.0
6.0 .NET Runtime dotnet-runtime-6.0
6.0 .NET SDK dotnet-sdk-6.0

Als u een niet-ondersteunde versie van .NET wilt installeren, controleert u de sectie Ondersteunde distributies om te zien of die versie van .NET beschikbaar is. Vervang vervolgens de versie van .NET die u wilt installeren. Als u bijvoorbeeld ASP.NET Core 2.1 wilt installeren, gebruikt u de pakketnaam aspnetcore-runtime-2.1.

Tip

Als u geen .NET-apps maakt, installeert u de ASP.NET Core-runtime, omdat deze de .NET-runtime bevat en ook ondersteuning biedt voor ASP.NET Core-apps.

Sommige omgevingsvariabelen zijn van invloed op hoe .NET wordt uitgevoerd nadat deze is geïnstalleerd. Zie .NET SDK- en CLI-omgevingsvariabelen voor meer informatie.

.NET verwijderen

Als u .NET hebt geïnstalleerd via een pakketbeheer, verwijdert u deze op dezelfde manier met de apt-get remove opdracht:

sudo apt-get remove dotnet-sdk-6.0

Zie .NET verwijderen voor meer informatie.

Preview-versies installeren

Preview- en release-kandidaatversies van .NET zijn niet beschikbaar in pakketopslagplaatsen. U kunt op een van de volgende manieren previews en releasekandidaten van .NET installeren:

Preview-versies verwijderen

Wanneer u een pakketbeheerder gebruikt om uw installatie van .NET te beheren, kan er een conflict optreden als u eerder een preview-versie hebt geïnstalleerd. De pakketbeheerder kan de niet-preview-versie interpreteren als een eerdere versie van .NET. Als u de niet-preview-versie wilt installeren, moet u eerst de preview-versies verwijderen. Zie .NET Runtime en SDK verwijderen voor meer informatie over het verwijderen van .NET.

APT gebruiken om .NET bij te werken

Als u .NET hebt geïnstalleerd via pakketbeheer, kunt u het pakket upgraden met de apt upgrade opdracht. Met de volgende opdrachten wordt het dotnet-sdk-7.0 pakket bijvoorbeeld bijgewerkt met de nieuwste versie:

sudo apt update
sudo apt upgrade dotnet-sdk-7.0

Tip

Als u uw Linux-distributie hebt bijgewerkt sinds u .NET installeert, moet u mogelijk de Microsoft-pakketopslagplaats opnieuw configureren. Voer de installatie-instructies voor uw huidige distributieversie uit om een upgrade uit te voeren naar de juiste pakketopslagplaats voor .NET-updates.

Problemen oplossen

Vanaf Ubuntu 22.04 kunt u een situatie tegenkomen waarin het lijkt alsof er slechts een deel van .NET beschikbaar is. U hebt bijvoorbeeld de runtime en de SDK geïnstalleerd, maar wanneer u alleen de runtime uitvoert dotnet --info , wordt vermeld. Deze situatie kan betrekking hebben op het gebruik van twee verschillende pakketbronnen. De ingebouwde Ubuntu 22.04- en Ubuntu 22.10-pakketfeeds bevatten enkele versies van .NET, maar niet alle, en u hebt mogelijk ook .NET geïnstalleerd vanuit de Microsoft-feeds. Zie .NET-fouten met betrekking tot ontbrekende bestanden in Linux oplossen voor meer informatie over het oplossen van dit probleem.

APT-problemen

Deze sectie bevat informatie over veelvoorkomende fouten die kunnen optreden tijdens het gebruik van APT om .NET te installeren.

Kan pakket niet vinden

Belangrijk

Package Manager-installaties worden alleen ondersteund in de x64-architectuur . Andere architecturen, zoals Arm, moeten .NET op een andere wijze installeren, zoals met Snap, een installatiescript of via een handmatige binaire installatie.

Zie een van de volgende artikelen voor meer informatie over het installeren van .NET zonder pakketbeheer:

Kan bepaalde pakketten niet vinden

Notitie

Deze informatie is alleen van toepassing wanneer .NET wordt geïnstalleerd vanuit de Microsoft-pakketfeed.

Als u een foutbericht krijgt dat lijkt op Kan pakket {dotnet-package} niet vinden of sommige pakketten niet kunnen worden geïnstalleerd, voert u de volgende opdrachten uit.

Er zijn twee tijdelijke aanduidingen in de volgende set opdrachten.

  • {dotnet-package}
    Dit vertegenwoordigt het .NET-pakket dat u installeert, zoals aspnetcore-runtime-8.0. Dit wordt gebruikt in de volgende sudo apt-get install opdracht.

  • {os-version}
    Dit vertegenwoordigt de distributieversie die u gebruikt. Dit wordt gebruikt in de wget onderstaande opdracht. De distributieversie is de numerieke waarde, zoals 20.04 op Ubuntu of 10 op Debian.

Verwijder eerst de pakketlijst:

sudo dpkg --purge packages-microsoft-prod && sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update

Probeer vervolgens .NET opnieuw te installeren. Als dat niet werkt, kunt u een handmatige installatie uitvoeren met de volgende opdrachten:

sudo apt-get install -y gpg
wget -O - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o microsoft.asc.gpg
sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
wget https://packages.microsoft.com/config/ubuntu/{os-version}/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list
sudo apt-get update && \
  sudo apt-get install -y {dotnet-package}

Ophalen is mislukt

Tijdens het installeren van het .NET-pakket ziet u mogelijk een fout die vergelijkbaar is met Failed to fetch ... File has unexpected size ... Mirror sync in progress?. Deze fout kan betekenen dat de pakketfeed voor .NET wordt bijgewerkt met nieuwere pakketversies en dat u het later opnieuw moet proberen. Tijdens een upgrade mag de pakketfeed langer dan 30 minuten niet beschikbaar zijn. Als u deze fout gedurende meer dan 30 minuten voortdurend ontvangt, kunt u een probleem indienen bij https://github.com/dotnet/core/issues.

Afhankelijkheden

Wanneer u installeert met pakketbeheer, worden deze bibliotheken voor u geïnstalleerd. Maar als u .NET handmatig installeert of als u een zelfstandige app publiceert, moet u deze afhankelijkheden installeren om uw app uit te voeren:

  • libc6
  • op te 10000
  • toetsencc-s1 (voor 22.x)
  • meansssapi-krb5-2
  • libicu55 (voor 16.x)
  • libicu60 (voor 18.x)
  • libicu66 (voor 20.x)
  • libicu70 (voor 22.04)
  • libicu71 (voor 22.10)
  • libicu72 (voor 23.04)
  • liblttng-ust1 (voor 22.x)
  • bibliothekensl1.0.0 (voor 16.x)
  • bibliothekensl1.1 (voor 18.x, 20.x)
  • bibliothekensl3 (voor 22.x)
  • bibliothekentdc++6
  • libunwind8 (voor 22.x)
  • zlib1g

Afhankelijkheden kunnen worden geïnstalleerd met de apt install opdracht. In het volgende fragment ziet u hoe u de zlib1g bibliotheek installeert:

sudo apt install zlib1g

Als de .NET-app gebruikmaakt van de Assembly System.Drawing.Common , moet ook de installatie van de .NET-app worden uitgevoerd. Omdat System.Drawing.Common niet meer wordt ondersteund in Linux, werkt dit alleen op .NET 6 en vereist het instellen van de System.Drawing.EnableUnixSupport runtimeconfiguratieswitch.

U kunt een recente versievan installeren door de Mono-opslagplaats aan uw systeem toe te voegen.

Volgende stappen