Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Linux üzerinde .NET kullanmaya çalıştığınızda, dotnet new ve dotnet run gibi komutlar, fxr, libhostfxr.so veya FrameworkList.xml gibi bir dosyanın bulunmamasıyla ilgili bir iletiyle başarısız olabilir. Hata iletilerinden bazıları aşağıdaki öğelere benzer olabilir:
System.IO.FileNotFoundException
System.IO.FileNotFoundException: '///usr/sharedotnetpacks/Microsoft.NETCore.App.Ref/5.0.0/data/FrameworkList.xml' dosyası bulunamadı.
Önemli bir hata oluştu.
Önemli bir hata oluştu. Gerekli kitaplık libhostfxr.so bulunamadı.
veya
Önemli bir hata oluştu. [///usrshare/dotnethost/fxr] klasörü yok.
veya
Önemli bir hata oluştu, [///usrshare/dotnethost/fxr] klasörü sürüm numaralı alt klasör içermiyor.
dotnet hakkında genel iletiler bulunamadı
SDK'nın bulunamadığını veya paketin zaten yüklü olduğunu belirten genel bir ileti görüntülenebilir.
Bu sorunların bir belirtisi, hem /usr/lib64/dotnet hem de /usr/share/dotnet klasörlerinin sisteminizde bulunmasıdır.
Tavsiye
dotnet --info Hangi SDK'ların ve Çalışma Zamanlarının yüklendiğini listelemek için komutunu kullanın. Daha fazla bilgi için bkz .NET'in zaten yüklü olup olmadığını nasıl kontrol edileceği.
Ne oluyor
Önemli
.NET 9'dan başlayarak, Microsoft yalnızca kendi paketlerini yayımlamayen desteklenen Linux dağıtımları için paketler yayımlar. Daha fazla bilgi için bkz. Linux'a .NET yükleme.
Bu hatalar genellikle iki Linux paket deposu .NET paketleri sağladığında oluşur. Microsoft kaynak .NET paketleri için bir Linux paket deposu sağlarken, bazı Linux dağıtımları da .NET paketleri sağlar. Bu dağıtımlar şunlardır:
- Alpine Linux
- Kemer
- CentOS Stream
- Fedora
- RHEL (Red Hat Enterprise Linux)
- Ubuntu 22.04+
İki farklı kaynaktan .NET paketlerini karıştırırsanız büyük olasılıkla sorunlarla karşılaşırsınız. Paketler öğeleri farklı yollara yerleştirebilir ve farklı şekilde derlenebilir.
Çözümler
Bu sorunların çözümü, bir paket deposundan .NET kullanmaktır. Hangi deponun seçildiği ve nasıl kullanılacağı kullanım örneğine ve Linux dağıtımına göre değişir.
- Linux dağıtımım .NET paketleri sağlıyor ve bunları kullanmak istiyorum.
- Linux dağıtımım tarafından sağlanmayan bir .NET sürümüne ihtiyacım var.
Linux dağıtımım .NET paketleri sağlıyor ve bunları kullanmak istiyorum
PowerShell ve MSSQL gibi diğer paketler için Microsoft deposunu kullanıyor musunuz?
Evet
Paket yöneticinizi Microsoft deposundaki .NET paketlerini yoksayacak şekilde yapılandırın. Her iki depodan da .NET yüklemiş olmanız mümkündür, bu nedenle birini veya diğerini seçmek istiyorsunuz.
Mevcut .NET paketlerini dağıtımınızdan kaldırın. Baştan başlamak ve bunları yanlış depodan yüklemediğinizden emin olmak istiyorsunuz.
sudo dnf remove 'dotnet*' 'aspnet*' 'netstandard*'Microsoft deposunu .NET paketlerini yoksayacak şekilde yapılandırın.
echo 'excludepkgs=dotnet*,aspnet*,netstandard*' | sudo tee -a /etc/yum.repos.d/microsoft-prod.repoDağıtımın paket akışından .NET'i yeniden yükleyin. Daha fazla bilgi için bkz. Linux'a .NET yükleme.
Hayır
Mevcut .NET paketlerini dağıtımınızdan kaldırın. Baştan başlamak ve bunları yanlış depodan yüklemediğinizden emin olmak istiyorsunuz.
sudo dnf remove 'dotnet*' 'aspnet*' 'netstandard*'Microsoft depo akışını dağıtımınızdan silin.
sudo dnf remove packages-microsoft-prodDağıtımın paket akışından .NET'i yeniden yükleyin. Daha fazla bilgi için bkz. Linux'a .NET yükleme.
PowerShell ve MSSQL gibi diğer paketler için Microsoft deposunu kullanıyor musunuz?
Evet
Paket yöneticinizi Microsoft deposundaki .NET paketlerini yoksayacak şekilde yapılandırın. Her iki depodan da .NET yüklemiş olmanız mümkündür, bu nedenle birini veya diğerini seçmek istiyorsunuz.
Mevcut .NET paketlerini dağıtımınızdan kaldırın. Baştan başlamak ve bunları yanlış depodan yüklemediğinizden emin olmak istiyorsunuz.
sudo apt remove 'dotnet*' 'aspnet*' 'netstandard*'/etc/apt/preferenceshenüz yoksa oluşturun.touch /etc/apt/preferences/etc/apt/preferencesdosyasını bir düzenleyicide açın vedotnet,aspnetcoreveyanetstandardile başlayan paketlerin Microsoft deposundan kaynaklanmasını engelleyen aşağıdaki ayarları ekleyin:Package: dotnet* aspnet* netstandard* Pin: origin "packages.microsoft.com" Pin-Priority: -10Dağıtımın paket akışından .NET'i yeniden yükleyin. Daha fazla bilgi için bkz. Linux'a .NET yükleme.
Hayır
Mevcut .NET paketlerini dağıtımınızdan kaldırın. Baştan başlamak ve bunları yanlış depodan yüklemediğinizden emin olmak istiyorsunuz.
sudo apt remove 'dotnet*' 'aspnet*' 'netstandard*'Microsoft depo akışını dağıtımınızdan silin.
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list sudo apt updateDağıtımın paket akışından .NET'i yeniden yükleyin. Daha fazla bilgi için bkz. Linux'a .NET yükleme.
Linux dağıtımım tarafından sağlanmayan bir .NET sürümüne ihtiyacım var
Dağıtım deposundaki .NET paketlerini yoksaymak için paket yöneticinizi yapılandırın. Her iki depodan da .NET yüklemiş olmanız mümkündür, bu nedenle birini veya diğerini seçmek istiyorsunuz.
Mevcut .NET paketlerini dağıtımınızdan kaldırın. Baştan başlamak ve bunları yanlış depodan yüklemediğinizden emin olmak istiyorsunuz.
sudo dnf remove 'dotnet*' 'aspnet*' 'netstandard*'Linux deposunu .NET paketlerini yoksayacak şekilde yapılandırın.
echo 'excludepkgs=dotnet*,aspnet*,netstandard*' | sudo tee -a /etc/yum.repos.d/<your-package-source>.repoEmin olun ki,
<your-package-source>değerini dağıtımınızın paket kaynağıyla yerine geçirdiğinize.Dağıtımın paket akışından .NET'i yeniden yükleyin. Daha fazla bilgi için bkz. Linux'a .NET yükleme.
Dağıtım deposundaki .NET paketlerini yoksaymak için paket yöneticinizi yapılandırın. Her iki depodan da .NET yüklemiş olmanız mümkündür, bu nedenle birini veya diğerini seçmek istiyorsunuz.
Mevcut .NET paketlerini dağıtımınızdan kaldırın. Baştan başlamak ve bunları yanlış depodan yüklemediğinizden emin olmak istiyorsunuz.
sudo apt remove 'dotnet*' 'aspnet*' 'netstandard*'/etc/apt/preferenceshenüz yoksa oluşturun.touch /etc/apt/preferencesBir düzenleyicide
/etc/apt/preferencesaçın vedotnet,aspnetcoreveyanetstandardile başlayan paketlerin dağıtımın deposundan kaynaklanmasını önlemek için uygun bir apt tercihleri parçası ekleyin.Package: dotnet* aspnet* netstandard* Pin: origin "<your-package-source>" Pin-Priority: -10Emin olun ki,
<your-package-source>değerini dağıtımınızın paket kaynağıyla yerine geçirdiğinize.Dağıtımınızda birden fazla paket kaynağı olabilir.
Örneğin, ABD'deki Ubuntu'da
archive.ubuntu.comiçin bir parça vesecurity.ubuntu.comiçin başka bir parça kullanmanız gerekebilir. Her bir parçayı aşağıdaki gibi boş bir satırla ayırın:Package: dotnet* aspnet* netstandard* Pin: origin "archive.ubuntu.com" Pin-Priority: -10 Package: dotnet* aspnet* netstandard* Pin: origin "security.ubuntu.com" Pin-Priority: -10Tavsiye
apt-cache policyKaynağı bulmak için komutunu kullanın:apt-cache policy '?name(dotnet.*)' | grep -v microsoft | grep '/ubuntu' | cut -d"/" -f3 | sort -uTavsiye
Ubuntu .NET backports paket deposunu kaydettiyseniz, paket yöneticinizi kapsanan .NET paketlerini yoksayacak şekilde yapılandırmak yerine Ubuntu .NET backports paket deposunun kaydını kaldırmanız gerekir. Aksi takdirde, paket yöneticiniz, bu depo sadece .NET paketlerini içerdiği için, bu depodaki paket dizinini çeker ancak onu görmezden gelir. Bu, her çağırdığınızda
apt updateyerel paket dizininizin güncelleştirilmesini etkili bir şekilde yavaşlatır.apt-cache policyKomutunu kullanarak Ubuntu .NET backports paket deposunu kaydedip kaydolmadığınızı denetleyin:apt-cache policy '?name(dotnet.*)' | grep 'ppa.launchpadcontent.net/dotnet/backports' | sort -u.NET'i Microsoft paket akışından yeniden yükleyin. Daha fazla bilgi için bkz. Linux'a .NET yükleme. Ubuntu kullanıyorsanız bkz. Ubuntu dağıtımım istediğim .NET sürümünü içermiyor veya destek dışı bir .NET sürümüne ihtiyacım var.
Çevrimiçi referanslar
Diğer birçok kullanıcı bu sorunları bildirdi. Bu sorunların listesi aşağıdadır. Neler olabileceğine ilişkin içgörüler için bunları okuyabilirsiniz:
System.IO.FileNotFoundException ve '/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0/data/FrameworkList.xml'
- SDK #15785: 5.0.3 sürümüne yükselttikten sonra yepyeni bir proje oluşturulamıyor
- SDK #15863: 5.0.103'e güncelleştirdikten sonra "MSB4018 ResolveTargetingPackAssets görevi beklenmedik şekilde başarısız oldu"
- SDK #17411: dotnet derleme her zaman hata oluşturuyor
- SDK #12075: dotnet 3.1.301 on Fedora 32 FrameworkList.xml bulunamadı çünkü mevcut değil
Önemli hata: libhostfxr.so bulunamadı
Önemli hata: klasör /host/fxr yok
Önemli hata: /host/fxr klasörü sürüm numaralı alt klasör içermiyor
Açık mesajlar olmadan genel hatalar