Dotnet Core - Linux Rasberry Pi

DotNetCore auf Linux ?

Vor kurzem wollte ich unter Ubuntu 20.04, auf anderen OS ist es ähnlich, auf einem Rasberry Pi (Model 4) eine ASP DotNet Core API laufen lassen. Man nimmt sich kurz Zeit und Zack... Stunden auf Github und den Microsoft Docs unterwegs ehe irgendetwas läuft. Ich habe festgestellt das es zu etlichen Problemen kommen kann, manche durch Microsoft verschuldet und einige durch die Hardware. Ich stelle euch hier meine Lösung vor und verlinke wie immer unter dem Artikel alle Quellen.

RASBERRY PI

Zu aller erst einmal klären wir die Frage warum es unter dem Rasberry Pi zu Problemen kommt. Die Frage ist relativ leicht geklärt: Der Rasberry Pi besitzt eine arm Architektur und Microsoft stellt ihre Pakete als amd zur Verfügung. Jedenfalls was den Paketmanager angeht. Das wiederum bedeutet ,dass wir die Binaries selbst installieren MÜSSEN. Neben allen anderen Problemen die so auftreten können. Die Pakete können wir also nicht über yum, apt oder sonst welche Paketmanager installieren.

Das Tool Snap kann eine Lösung sein, bietet aber nicht die neuste DotNet Version und auch keinen stabilen Build. Um einen stabilen Build zu bekommen ladet ihr euch die arm64 Version der Runtime und des SDKs herunter. Für Nutzer des Rasberry Pi Modell 2 B der ersten Verstion gilt allerdings arm32. Wählt die neuste LTS Version, oder die von euch gewünschte, aus und klickt bei SDK und Runtime unter Binaries auf den entsprechenden Link.

DOWNLOAD

Beispiel
root@ubuntu:/home/downloads# wget https://download.visualstudio.microsoft.com/download/pr/91f02336-1852-421d-907f-4aeae252a15e/dbb20e3a176c38a569cbcaa5d1d5782b/aspnetcore-runtime-3.1.5-linux-arm64.tar.gz
root@ubuntu:/home/downloads# mkdir -p "/bin/dotnet" && tar zxf aspnetcore-runtime-3.1.5-linux-arm64.tar.gz -C "/bin/dotnet"
root@ubuntu:/home/downloads# export DOTNET_ROOT=/bin/dotnet
root@ubuntu:/home/downloads# export PATH=$PATH:/bin/dotnet

root@ubuntu:/home/downloads# wget https://download.visualstudio.microsoft.com/download/pr/fe5c0663-3ed1-4a93-95e1-fd068b89215b/14d1caad8fd2859d5f3514745a9bf6b3/dotnet-sdk-3.1.301-linux-arm64.tar.gz
root@ubuntu:/home/downloads# mkdir -p "$HOME/dotnet" && tar zxf dotnet-sdk-3.1.301-linux-arm64.tar.gz -C "$HOME/dotnet"
root@ubuntu:/home/downloads# export DOTNET_ROOT=$HOME/dotnet
root@ubuntu:/home/downloads# export PATH=$PATH:$HOME/dotnet

Mit den wget Befehlen ladet ihr die entsprechenden Binaries herunter. Danach werden Sie in das Verzeichnis /bin/dotnet/ verschoben. Ihr könnt natürlich auch andere Verzeichnisse auswählen. Mit den export Befehlen wird der dotnet Befehl für das Terminal bereitgestellt. Der Befehl sollte euch nun einige Informationen zur Version und eurem System ausgeben:

dotnet --info


AMD ARCHITEKTUR

Unter amd Archtiekturen läuft es meist doch etwas entspannter und es reicht die Microsoft Pakete zur Paketverwaltung hinzuzufügen. Unter Debian und Ubuntu würde das wie folgt aussehen:


wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb

sudo apt-get update; \
  sudo apt-get install -y apt-transport-https && \
  sudo apt-get update && \
  sudo apt-get install -y dotnet-sdk-3.1

Je nachdem was Ihr später machen wollt müsst ihr euch nun entscheiden. Wollt ihr eine ASP DotNet Core Unterstüzung so müsst ihr den zweiten Befehl nutzen. Ist euch dies egal könnt Ihr auch die DotNet Core Runtime installieren.


sudo apt-get install -y dotnet-runtime-3.1
sudo apt-get install -y aspnetcore-runtime-3.1

Seid Ihr bei der Installation keinen Problemen begegnet solltet ihr nun auch wieder mit dem dotnet Befehl arbeiten können. Andernfalls wenn ihr Fehlern wie "Unable to locate" oder "Failed to fetch" begegnet müsst ihr entweder wie im Rasberry Teil beschrieben die Binaries herunterladen und installieren, Snap nutzen (ich rate davon ab auch wenn es auf der Microsoftseite steht) oder eine manuelle Installation versuchen. Achtet hier auf die Variablen und das diese Möglichkeit ggf. nicht für euer OS vorgesehen ist. Diese würde von Microsoft wie folgt laufen:


root@ubuntu:/home/downloads# sudo apt-get install -y gpg
root@ubuntu:/home/downloads# wget -O - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o microsoft.asc.gpg
root@ubuntu:/home/downloads# sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
root@ubuntu:/home/downloads# wget https://packages.microsoft.com/config/{os-system}/{os-version}/prod.list  //Variablen
root@ubuntu:/home/downloads# sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
root@ubuntu:/home/downloads# sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
root@ubuntu:/home/downloads# sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list
root@ubuntu:/home/downloads# sudo apt-get update; \
  sudo apt-get install -y apt-transport-https && \
  sudo apt-get update && \
  sudo apt-get install -y {dotnet-package} //dotnet-sdk-3.1 , dotnet-runtime-3.1

Sollte auch das nicht funktionieren lege ich euch ans Herz die Binarie Version aus der Rasberry Pi Sektion zu versuchen. Achtet dabei auf eure System Architektur.


Weitere Quellen / Informationen :
GitHub Diskussion zu Fehlern
.NetCore Download
Microsoft - Installation für Linux

Autorbild
Veröffentlicht von Robin Kirch am 07.2020
Web- und Softwareentwickler, Systemadministrator und Bughunter aus Leidenschaft.
#Linux #Ubuntu #Rasberry Pi #DotNet Core
Fandest du den Beitrag hilfreich? Dann teile ihn doch mit anderen

Aufgrund von Artikel 17 (ehemals Artikel 13) der EU ist es nicht weiter effizient die Kommentarsektion zu betreiben. Bei Fragen nutzen Sie bitte das Kontaktformular. Ich werde nach wie vor gerne Fragen beantworten.