عنوان:

‫روش نصب NET SDK. بر روی لینوکس Ubuntu


نویسنده: وحید نصیری
تاریخ: ۱۴۰۳/۰۵/۱۹ ۱۵:۵۵
آدرس: www.dntips.ir

اگر از آخرین نگارش Ubuntu استفاده می‌کنید، با توجه به همکاری مایکروسافت و شرکت پشتیبان آن، نصب دات‌نت به سادگی اجرای دستور زیر است:

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

و اگر می‌خواهید بدانید که چه ‌نگارشی از دات‌نت، به‌همراه مخازن استاندارد Ubuntu است، دستور زیر را صادر کنید:

$ apt search dotnet-sdk*

که یک نمونه خروجی آن به صورت زیر است:

$ apt search dotnet-sdk*
Sorting... Done
Full Text Search... Done
dotnet-sdk-8.0/noble-updates,noble-security 8.0.107-0ubuntu1~24.04.1 amd64
  .NET 8.0 Software Development Kit

dotnet-sdk-8.0-source-built-artifacts/noble-updates,noble-security 8.0.107-0ubuntu1~24.04.1 amd64
  Internal package for building the .NET 8.0 Software Development Kit

dotnet-sdk-dbg-8.0/noble-updates,noble-security 8.0.107-0ubuntu1~24.04.1 amd64
  .NET SDK debug symbols.

نصب اسکریپتی آخرین نگارش دات‌نت بر روی تمام توزیع‌های لینوکسی

مایکروسافت، اسکریپتی را برای دریافت و نصب خودکار آخرین نگارش دات‌نت، تهیه کرده‌است که کار با آن بسیار ساده‌است و با تمام توزیع‌های لینوکسی و نه فقط Ubuntu سازگار است.

پیش از هرکاری ابتدا مخزن‌های بسته‌ها و برنامه‌های مرتبط را یکبار به‌روز کرده و سیستم را ری‌استارت می‌کنیم:

sudo apt update -q && sudo apt upgrade -y && reboot

سپس دستور زیر را صادر می‌کنیم تا اسکریپت نصاب مخصوص دات‌نت خود مایکروسافت را دریافت کنیم :

wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
chmod +x ./dotnet-install.sh

توسط این دو دستور، فایل dotnet-install.sh دریافت شده و همچنین دسترسی اجرایی بودن آن نیز تنظیم می‌شود.

پس از آن، برای نصب آخرین نگارش دات‌نت SDK موجود، تنها کافی است دستور زیر را صادر کنیم:

./dotnet-install.sh --version latest

و یا اگر فقط می‌خواهید runtime آن‌را نصب کنید، پارامترهای نصب، به صورت زیر تغییر می‌کنند:

./dotnet-install.sh --version latest --runtime aspnetcore

همچنین اگر نگارش‌های پایین‌تر مدنظر شما هستند، می‌توانید کانال نصب را هم مشخص کنید:

./dotnet-install.sh --channel 7.0

که یک نمونه خروجی اجرای دستور dotnet-install.sh --version latest/. آن به صورت زیر است:

$ ./dotnet-install.sh --version latest
dotnet-install: Attempting to download using aka.ms link https://dotnetcli.azureedge.net/dotnet/Sdk/8.0.303/dotnet-sdk-8.0.303-linux-x64.tar.gz
dotnet-install: Remote file https://dotnetcli.azureedge.net/dotnet/Sdk/8.0.303/dotnet-sdk-8.0.303-linux-x64.tar.gz size is 223236164 bytes.
dotnet-install: Extracting archive from https://dotnetcli.azureedge.net/dotnet/Sdk/8.0.303/dotnet-sdk-8.0.303-linux-x64.tar.gz
dotnet-install: Downloaded file size is 223236164 bytes.
dotnet-install: The remote and local file sizes are equal.
dotnet-install: Installed version is 8.0.303
dotnet-install: Adding to current process PATH: `/home/vahid/.dotnet`. Note: This change will be visible only when sourcing script.
dotnet-install: Note that the script does not resolve dependencies during installation.
dotnet-install: To check the list of dependencies, go to https://learn.microsoft.com/dotnet/core/install, select your operating system and check the "Dependencies" section.
dotnet-install: Installation finished successfully.

همانطور که مشاهده می‌کنید، دات‌نت 8.0.303، نصب شده‌است.

پس از پایان نصب، دو دستور زیر را هم باید اجرا کنید تا بتوان در خط فرمان به NET CLI. دسترسی یافت:

$ export DOTNET_ROOT=$HOME/.dotnet
$ export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools

پس از این تنظیمات، امکان اجرای دو دستور آزمایشی زیر میسر می‌شوند:

$ dotnet --version
$ dotnet --list-sdks

نصب دات‌نت بر روی نگارش‌های قدیمی‌تر Ubuntu

برای اینکه بتوان به روش متداولی (بدون دریافت اسکریپت نصاب فوق) به آخرین تغییرات انجام شده و آخرین به‌روز رسانی‌ها و همچنین تمام نگارش‌های دات‌نت دسترسی داشت، می‌توان از مخازن بسته‌های خود مایکروسافت استفاده کنیم که باید آن‌ها را به سیستم عامل اضافه کرد. برای اینکار باید مراحل زیر طی شوند:

ابتدا تمام وابستگی‌های احتمالی موجود را حذف می‌کنیم:

$ sudo apt remove 'dotnet*' 'aspnet*' 'netstandard*'

سپس فایل زیر را ایجاد کرده:

sudo nano touch /etc/apt/preferences

و آن‌را با محتوای زیر تکمیل می‌کنیم؛ تا فقط از مخازن خود مایکروسافت استفاده شود و سایر مخازن مرتبط در این حالت، اولویت کمتری داشته باشند:

Package: dotnet* aspnet* netstandard*
Pin: origin "archive.ubuntu.com"
Pin-Priority: -10

Package: dotnet* aspnet* netstandard*
Pin: origin "security.ubuntu.com"
Pin-Priority: -10

پس از آن، دستورات زیر، کار افزودن مخازن بسته‌های مایکروسافت را انجام می‌دهند:

# Get OS version info which adds the $ID and $VERSION_ID variables
source /etc/os-release

# Download Microsoft signing key and repository
wget https://packages.microsoft.com/config/$ID/$VERSION_ID/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
sudo apt upgrade -y

بعد از این به‌روز رسانی‌ها، دستور متداول زیر، کار نصب آخرین نگارش NET SDK. را انجام می‌دهد:

sudo apt-get install -y dotnet-sdk-8.0

و همچنین هربار هم که سیستم را با دستورات sudo apt update -q && sudo apt upgrade -y به روز کنیم، در صورت وجود به‌روز رسانی دات‌نتی جدیدی، آن‌را به صورت خودکار دریافت و نصب می‌کند.

نظرات

  • امیر ح در ۱۴۰۳/۰۵/۲۰ ۱۲:۵۹

    برای نصب از طریق دانلود فایل های دات نت به صورت آفلاین بر روی سرور بدون اینترنت میتوانید از روش زیر هم استفاده کنید.

    • ابتدا فایل های دات نت رو بسته به معماری سیستم دانلود کنید. (Arm32 | Arm32 Alpine | Arm64 | Arm64 Alpine | x64 | x64 Alpine)
    • سپس فایل دات نت رو به سرور خود منتقل کنید و از طریق دستورات زیر، خط فرمان dotnet رو به ترمینال اضافه کنید:
    export DOTNET_ROOT="$HOME/yourpath/dotnet"
    export PATH="$PATH:$HOME/yourpath/dotnet"

    مشابه با Edit the system environment variables در ویندوز

    و اکنون با نوشتن دستور dotnet --version میتوانید نگارش ورژن دات رو مشاهده کنید.

    همچنین اگر نیاز به نصب tools هایی مانند ef core نیاز دارید میتوانید از دستور زیر استفاده کنید:

    dotnet tool install --global dotnet-ef
    export PATH="$PATH:$HOME/.dotnet/tools"

    این روش در خود مستندات مایکروسافت توضیح داده شده اما استفاده از پکیج های داخلی ابونتو و یا اجرای اسکریپت ها خیلی آسون تر هستش و این روش صرفا موقعی استفاده میشه که امکان اجرای دستورات بر روی یک سیستم آفلاین وجود ندارد.

  • وحید نصیری در ۱۴۰۳/۰۸/۲۶ ۲۳:۴۴
    یک نکته‌ی تکمیلی: روش نصب دات‌نت 9 بر روی نگارش‌های قدیمی‌تر از 24.10 اوبونتو

    در این لحظه، package manager توکار اوبونتو، فقط برای نگارش‌های 24.10 و پس از آن، به همراه دات‌نت 9 است و این فید اصلی هنوز برای سایر نگارش‌های اوبونتو، به روز رسانی نشده‌است. برای مثال اگر دستور زیر را صادر کنیم:
    apt search dotnet-sdk*
    فقط به دات نت 8 می‌رسیم:
    dotnet-sdk-dbg-8.0/noble-updates,noble-security 8.0.110-0ubuntu1~24.04.1 amd64
      .NET SDK debug symbols.
    اما ... یک Ubuntu .NET backports package repository هم وجود دارد که به همراه نگارش‌هایی است که هنوز در فید اصلی ظاهر نشده‌اند. برای کار با آن فقط کافی است دو دستور زیر را صادر کنیم تا مخزن آن معرفی و اضافه شود:
    sudo apt update -q && sudo apt-get install software-properties-common
    sudo add-apt-repository ppa:dotnet/backports
    پس از این کار، خروجی اجرای دستور *apt search dotnet-sdk، به همراه دات‌نت 9 هم هست:
    dotnet-sdk-dbg-9.0/jammy 9.0.100-rtm-0ubuntu1~22.04.1~ppa1 amd64
      .NET SDK debug symbols.
    در این حالت فقط کافی است دستور زیر را صادر کنیم تا نگارش جدید را نصب کند:
    sudo apt update -q && sudo apt-get install -y dotnet-sdk-9.0 
    dotnet --list-sdks
    • محسن میرشاهرضا در ۱۴۰۳/۰۸/۲۷ ۰۹:۲۳
      دقیقا همین اشکال روی CentOS 9 هم وجود داره. ریپو رسمی نسخه Preview 7 رو داره و هنوز نسخه نهایی رو در دسترس قرار نداده
      • وحید نصیری در ۱۴۰۳/۰۸/۲۷ ۰۹:۵۸
        مستندات رسمی عنوان می‌کنند که SDK دات‌نت 9 بر روی مخازن AppStream مخصوص CentOS Stream 9 وجود دارد و برای نصب آن فقط کافی است دستور زیر را صادر کنید:
        sudo dnf install dotnet-sdk-9.0
        • محسن میرشاهرضا در ۱۴۰۳/۰۸/۲۷ ۱۰:۴۹
          بله درسته من هم بر اساس همین مستندات دیروز اقدام به نصب کردم که متوجه شدم هنوز ریپوزیتوری مربوطه آپدیت نشده. این مورد رو میتونید در آدرس زیر که مربوط به AppStream هست بررسی کنید
          • محسن میرشاهرضا در ۱۴۰۳/۱۰/۰۵ ۰۰:۴۸
            دات نت 9 برای CentOs 9 منتشر شده الان میشه نصب کرد
  • وحید نصیری در ۱۴۰۳/۰۹/۱۷ ۱۲:۲۱
    یک نکته‌ تکمیلی

    Github به همراه یک action ویژه به‌نام setup-dotnet است که با استفاده از این اسکریپت، کار نصب آخرین نگارش دات‌نت را بر روی انواع و اقسام سیستم عامل‌ها انجام می‌دهد و ... همیشه هم کار می‌کند!
    • محسن میرشاهرضا در ۱۴۰۳/۰۹/۱۷ ۱۶:۱۸
      من روی ابونتو تست نکردم اما روی CentOs همچنان این مشکل وجود داره.
      • وحید نصیری در ۱۴۰۳/۰۹/۱۷ ۱۸:۳۳
        نگارش 9.0.100 که رسما اضافه شده؛ کار اسکریپت فوق هم دریافت آخرین فایل‌های باینری و نصب آن‌ها است که در اصل همان فایل رسمی dotnet-install.sh خود مایکروسافت است که در متن توضیح داده شد (نصب اسکریپتی آخرین نگارش دات‌نت بر روی تمام توزیع‌های لینوکسی).
  • وحید نصیری در ۱۴۰۳/۱۰/۰۴ ۰۹:۴۴
    یک نکته‌ی تکمیلی:
    به علت تغییر CDNهای ارائه‌ی نصاب‌های دات‌نت، اسکریپت‌های نصب آن هم تغییر کرده‌اند که نیاز است dotnet-install.sh جدیدی را دریافت کنید.
  • وحید نصیری در ۱۴۰۴/۰۸/۳۰ ۱۱:۰۶
    نصب و به‌روزرسانی .NET 10 روی اوبونتو (و WSL)

    هر سال با انتشار نسخه جدید .NET، نیاز داریم SDK را روی ماشین‌هایمان به‌روز کنیم؛ نه فقط روی ویندوز، بلکه روی توزیع‌های لینوکس مثل اوبونتو که داخل WSL یا مستقیم استفاده می‌کنیم. حالا که .NET 10 (نسخه LTS با پشتیبانی ۳ ساله تا نوامبر ۲۰۲۸) منتشر شده، بیایید ببینیم چطور می‌توانیم آن را به ساده‌ترین و مطمئن‌ترین شکل ممکن نصب یا ارتقا دهیم.
    در این مقاله، تمرکزمان روی روشی است که همیشه کار می‌کند: استفاده از اسکریپت رسمی dotnet-install.sh از مایکروسافت. این روش حتی وقتی بسته‌های APT هنوز به‌روز نشده باشند (که گاهی چند روز یا هفته طول می‌کشد) هم فوراً نسخه جدید را در اختیارتان قرار می‌دهد و کاملاً قابل اعتماد است.

    چرا apt-get گاهی کار نمی‌کند؟
    اگر مستقیم این دستورها را بزنید:
    sudo apt update
    sudo apt install dotnet-sdk-10.0
    ممکن است با خطای «Unable to locate package dotnet-sdk-10.0» مواجه شوید. دلیلش این است که بسته‌های .NET در مخازن اوبونتو/دبیان با کمی تأخیر ظاهر می‌شوند (به‌خصوص در روزهای اول انتشار). روش اسکریپت اما مستقیم از سرورهای مایکروسافت دانلود می‌کند و همیشه آخرین نسخه را دارد.

    روش پیشنهادی: نصب با dotnet-install.sh

    ۱. اسکریپت را دانلود و اجرایی کنید:
    wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
    chmod +x dotnet-install.sh
    نکته امنیتی مهم: حتماً فایل را قبل از اجرا بازبینی کنید! می‌توانید با cat dotnet-install.sh یا less dotnet-install.sh محتوای آن را ببینید. این اسکریپت رسمی مایکروسافت است، اما عادت خوب این است که هیچ اسکریپتی را کورکورانه اجرا نکنید.

    ۲. نسخه دلخواه را نصب کنید (برای آخرین نسخه کانال ۱۰.۰):
    ./dotnet-install.sh --channel 10.0
    خروجی چیزی شبیه این خواهد بود:
    dotnet-install: Installed version is 10.0.100
    dotnet-install: Adding to current process PATH: `/home/youruser/.dotnet`
    dotnet-install: Installation finished successfully.
    اگر می‌خواهید نسخه دقیق (مثلاً ۱۰.۰.۱۰۰) را نصب کنید:
    ./dotnet-install.sh --version 10.0.100

    ۳. بررسی نصب:
    dotnet --version          # باید 10.0.100 یا جدیدتر نشان دهد
    dotnet --list-sdks        # لیست همه SDKهای نصب‌شده

    تنظیم PATH دائمی (تا همیشه نسخه جدید اولویت داشته باشد)
    به‌طور پیش‌فرض، SDK در $HOME/.dotnet نصب می‌شود. برای اینکه همیشه این نسخه (کاربرمحور) نسبت به نسخه‌های سیستمی (/usr/share/dotnet یا مشابه) اولویت داشته باشد، این خطوط را به فایل ~/.bashrc یا ~/.zshrc اضافه کنید:
    export DOTNET_ROOT="$HOME/.dotnet"
    export PATH="$DOTNET_ROOT:$DOTNET_ROOT/tools:$PATH"
    سپس:
    source ~/.bashrc   # یا shell خودتان را ری‌استارت کنید
    حالا بررسی کنید:
    which dotnet      # باید به ~/.dotnet/dotnet اشاره کند
    dotnet --version

    مشکلات رایج و راه‌حل‌ها
    مشکلدلیل احتمالیراه‌حل
    هنوز نسخه قدیمی نشان می‌دهدPATH اشتباه یا global.json قدیمیwhich dotnet را چک کنید و PATH را اصلاح کنید
    پروژه روی نسخه قدیمی قفل شدهوجود فایل قدیمی global.json در پوشه پروژه یا والدجستجو کنید: find . -name global.json فایل را حذف یا نسخه را به‌روز کنید

    نکته‌های تکمیلی
    • اگر چندین نسخه SDK همزمان نیاز دارید (که معمولاً همین‌طور است)، این روش عالی کار می‌کند چون همه نسخه‌ها کنار هم در ~/.dotnet نصب می‌شوند و با global.json می‌توانید برای هر پروژه نسخه خاص را مشخص کنید.
    • برای محیط‌های سرور یا CI/CD، می‌توانید از پرچم --install-dir /opt/dotnet استفاده کنید تا نصب سیستمی شود.
    • وابستگی‌ها (dependencies): اسکریپت، وابستگی‌های سیستم را نصب نمی‌کند. برای لیست کامل به صفحه رسمی مایکروسافت مراجعه کنید: https://learn.microsoft.com/dotnet/core/install/linux-ubuntu

    نتیجه‌گیری
    با این روش ساده و مستقیم، دیگر لازم نیست منتظر به‌روزرسانی مخازن apt بمانید. فقط چند دستور و .NET 10 آماده استفاده است؛ چه روی WSL، چه روی سرور اوبونتو، چه در ماشین مجازی. این رویکرد همیشه به‌روز، امن و کاملاً تحت کنترل شماست.