Tüm NuGet Paket Yöneticileri Nasıl Kurulur [Derinlemesine]


Bir uygulama veya belki de bir dizi önemli komut dosyası oluşturdunuz ve onu paketleyip dağıtmanız gerekiyor. NuGet'ten ve mevcut çeşitli NuGet paket yöneticilerinden başka bir yere bakmayın.

Bu makalede, çeşitli NuGet paket yöneticilerinin ilk kez nasıl kurulacağını ve böylece bunları hemen kullanmaya başlayabileceğinizi öğreneceksiniz.

İlgili: Windows'ta NuGet Sunucusunu Kurma (Tam Çözüm Yolu)

NuGet.Server Wrapper'ı ayarlama

NuGet.Server'ı sıfırdan kurmak çok karmaşık olmasa da, Visual Studio ve IIS'ye yeni başlayan birisi için bu biraz zaman alabilir. Kurulum ve güncelleme sürecini hızlandırmanın bir yolu sarmalayıcı kullanmaktır. nuget-server adı verilen en popüler sarmalayıcılardan biri, svenkle tarafından yazılan sarmalayıcıdır ve Github sayfasında bulunabilir.

Web sunucusunu manuel olarak kurmak yerine bu sarmalayıcıyı kullanmanın en büyük farklarından biri, IIS Express'i kullanmasıdır. Farklılıklar hakkında daha fazla bilgiyi Microsoft'un web sitesinde okuyabilirsiniz.

Vanilya NuGet.Server kurulumu ile bu sarmalayıcıyla kurulum arasında iki önemli fark vardır:

  • web sunucusunu başlatmak için bir Windows hizmeti oluşturmanız gerekir
  • yapılandırma için IIS Yöneticisini kullanamazsınız

NuGet.Server'ı yüklemek için sarmalayıcı kullanmanın başlıca dezavantajı, sarmalayıcı güncellenene kadar sürümü kolayca güncelleyememenizdir.

Önkoşullar

Bu NuGet.Server sarmalayıcısını nasıl ayarlayacağınızı öğrenmek istiyorsanız öncelikle aşağıdakilere sahip olduğunuzdan emin olmanız gerekir:

  • Svenkle'ın NuGet.Server sarmalayıcısı için yükleyici
  • Windows Server - Windows Server sürümünün şu anda desteklenen herhangi bir sürümü çalışacaktır, ancak tüm ekran görüntüleri Windows Server 2019 Standard'da alınmıştır.

Web Sunucusu Hizmetini Yükleme

İlk adım yeni bir Windows hizmeti oluşturmaktır. Bu NuGet.Server sarmalayıcısı IIS kullanmadığından IIS'ye geri dönemezsiniz.

Yayınlar sayfasından indirilen NuGetServer.zip dosyasıyla, dosyayı web sunucusunda seçtiğiniz dizine açın. Sıkıştırılmış dosyayı açtıktan sonra, sunucuyu başlattığınızda web sayfasını otomatik olarak başlatacak Windows hizmetini oluşturun. Aşağıda bunu sizin için yapacak bir PowerShell komutu bulacaksınız.

New-Service -Name NuGetServer -BinaryPathName '<UnzipPath>\Svenkle.NuGetServer.Service.exe' -StartupType Automatic
Start-Service -Name NuGetServer

Web Sunucusunu Özelleştirme

Artık sarmalayıcıdan NuGet.Server'ı yüklediğinize ve hizmet oluşturulup başlatıldığına göre, web.config dosyasını özelleştirmenin zamanı geldi. İsterseniz web.config dosyasında yapacağınız değişikliklerin aynısını manuel dağıtımla da yapabilirsiniz.

web.config dosyası \Host\Website klasöründe bulunur. Bu dağıtımdaki en büyük fark, varsayılan HTTP bağlantı noktası 80 yerine bağlantı noktası 8080'i kullanmasıdır. Bu, web URL'sini kullanacağınız her yerde, örneğin giderken :8080 eklemeniz gerektiği anlamına gelir. web sayfasında http://localhost:8080/nuget olacaktır.

Hepsi tamam. Bu Visual Studio'yu kullanmaktan çok daha kolaydı!

IIS'de BaGet'i kurma

Şu ana kadar NuGet.Server'ın yalnızca stok versiyonlarına bakmış olsanız da, piyasada pek çok başka versiyon da mevcut. Popüler NuGet paket yöneticilerinden biri BaGet adı verilen açık kaynaklı bir projedir.

BaGet'in IIS'li bir Windows Sunucusunda kurulup çalıştırılması için neler gerektiğini görelim.

Önkoşullar

Başlamadan önce birkaç önkoşulu karşıladığınızdan emin olun.

  • BaGet.zip - Bunu yazdığım sırada proje hala yayın öncesi aşamasında ve v0.1.77 kullanıyorum
  • .NET Core Runtime & Hosting Bundle - Bunun daha sonra indirilmesi ve web sunucusunda mevcut olması gerekecektir.
  • Windows Server - Windows Server sürümünün şu anda desteklenen herhangi bir sürümü çalışacaktır, ancak tüm ekran görüntüleri Windows Server 2019 Standard'da alınmıştır.

Web Sunucusu Ön Koşullarını Yükleme

Aşağıdaki adımlar .NET Core ile Linux'ta veya Docker görüntüsünde çalıştırılabilirken, bu talimatlar BaGet'i bir Windows sunucusuna yüklemek için kullanılacaktır. Bu şekilde sunucunuzu başlatmak ve durdurmak için IIS'den yararlanabilirsiniz.

IIS'yi yükleyin

BaGet .NET Core üzerinde çalıştığından, daha önce IIS'yi kurduğunuz temel NuGet.Server kadar fazla gereksinim yoktur. Yalnızca varsayılan bir IIS web sunucusuna ve IIS yöneticisine ihtiyacınız vardır. Bunları yüklemek için web sunucunuzda bir PowerShell oturumu açın ve şunu çalıştırın:

Install-WindowsFeature Web-Server -IncludeManagementTools

.NET Core'u yükleyin

Ardından, .NET Core paketini web sunucusuna yükleyin. Bunu yapmak için daha önce indirdiğiniz exe dosyasını çalıştırın. Bu kurulum için tüm seçenekleri varsayılan olarak bırakabilirsiniz.

IIS yüklendikten sonra .NET Core paketinin yüklenmesi gerekir. Bu işlem doğru sırada gerçekleşmezse .NET Core paketi için yükleyiciyi yeniden çalıştırmanız ve bir web uygulamasına yönelik eksik gereksinimleri eklemek için onarımı seçmeniz gerekecektir.

Artık web sunucusu bileşenlerini hazırladığınıza göre, daha önce indirdiğiniz BaGet.zip dosyasını açın ve web sunucunuzdaki C:\inetpub\wwwroot klasörüne yerleştirin.

Web Sunucusu Uygulamasını Yapılandırma

NuGet.Server'a benzer şekilde, NuGet paket yöneticisi BaGet'i çalışır duruma getirmek için birkaç IIS bileşeni kurmanız gerekecektir.

BaGet IIS Uygulama Havuzunun Oluşturulması

Web sunucusunda IIS Yöneticisi'ni açın ve Uygulama Havuzları'na gidin. .NET yönetilen kodunu kullanmayacağından BaGet için yeni bir uygulama havuzu oluşturun. İstediğiniz ismi verebilirsiniz. Nasıl görünmesi gerektiği aşağıda açıklanmıştır.

BaGet Web Sitesini Oluşturma

Uygulama havuzu oluşturulduktan sonra web sitesini oluşturun. BeGet standart olmayan bir HTTP bağlantı noktası ve varsayılan olmayan bir uygulama havuzu kullandığından, Varsayılan Web Sitesinden ayrı bir web sitesi oluşturmak en kolay yoldur. Bunu yapmak için IIS yöneticisinde Siteler klasörünü sağ tıklayın ve Web Sitesi Ekle'yi seçin.

BaGet'i yapılandırmak için ihtiyacınız olan ayarlar aşağıdadır.

Siteyi yapılandırdıktan sonra otomatik olarak başlamalıdır. Sunucunuzdan http://localhost:5000/ adresine giderek buna göz atabilirsiniz.

BaGet web sayfasında, standart NuGet.Server web sayfasına kıyasla daha fazla kullanıcı arayüzü bulunduğunu fark edeceksiniz. BaGet'te yüklenen paketleri kolayca arayabilirsiniz ve ayrıca NuGet komut satırı seçeneklerini kullanmak yerine çeşitli yollarla nasıl yükleme yapılacağına ilişkin komutlar da sağlar.

BaGet Web Sunucusunu Özelleştirme

NuGet.Server sunucunuzu web.config dosyasını kullanarak özelleştirebildiğinizi hatırlayın. Ancak NuGet paket yöneticisi BaGet web.config dosyasını kullanmaz. Bunun yerine, BaGet Linux'ta da kullanılabildiğinden, geliştiriciler appsettings.json adlı bir JSON dosyasıyla daha platformlar arası bir formatı tercih etti. C:\inetpub\wwwroot\BaGet klasöründe bulunur.

BaGet'in platformlar arası işlevsellik için .NET Core kullanması nedeniyle tüm yolların eğik çizgiler kullandığını unutmayın.

Örneğin, paket yolunuzun sunucunuzda C:\Packages konumunda olmasını istiyorsanız, appsettings.json dosyasında aşağıda gösterilene sahip olmanız gerekir. .

"Storage": {
    "Type": "FileSystem",
    "Path": "C://Packages"
}

BaGet API Anahtarı

NuGet sunucunuzu yetkisiz kullanıcıların paketi yayınlamasına veya silmesine karşı korumak için yine de bir API anahtarı ayarlamak isteyeceksiniz. API anahtarı ayarı aynı zamanda appsettings.json dosyasında da bulunur, böylece oradayken ayarlayabilirsiniz.

NuGet paketlerimi yönetmek için PowerShell kullandığım için yeniden bir PSRepository kaydedebiliyorum. BaGet için oluşturduğunuz web sayfasına gidin. Web sayfası size PowerShell oturumunuzda çalıştırma komutunu verecektir. Örneğin:

Register-PSRepository -Name "BaGet" -SourceLocation "http://<WebServer>:5000/v3/index.json" -PublishLocation "http://<WebServer>:5000/api/v2/package" -InstallationPolicy "Trusted"

BaGet Çatallarını Anlamak (LiGet)

BaGet birçok kullanım seçeneği sunsa da NuGet'in diğer alanlarında uzmanlaşmak için oluşturulmuş başka BaGet çatalları da vardır. En popüler çatallardan biri LiGet'tir. LiGet farklıdır çünkü Linux öncelikli bakış açısıyla uzmanlaşmıştır.

LiGet, BaGet'e yönelik orijinal projenin bir NuGet paket yöneticisi çatalıdır. Geliştiricilerin bunu yapmaya karar vermesinin birkaç nedeni vardı, ancak öncelikle bu, v3 feed desteği de dahil olmak üzere NuGet'in bazı belirli özelliklerine odaklanmak için yapıldı. V3 feed desteği PowerShell'in kullanım durumunu etkilemez. Ancak diğer kullanım durumları için bir NuGet sunucusu barındıracaksanız eklenen işlevlerden yararlanabilirsiniz.

LiGet'in Karma API Anahtarı

LiGet ve BaGet arasındaki en büyük farklardan biri, düz metin yerine karma API anahtarının kullanılmasıdır. Düz metin anahtarıyla, NuGet.Server'daki web.config dosyasına veya BaGet'teki appsettings.json dosyasına erişimi olan biri, sunucuda yayınlayabilir. Bu LiGet ile gerçekleşemezdi.

LiGet'i çalışır duruma getirmek için, karma hale getirilmiş bir API anahtarı oluşturmanız ve bunu C:\inetpub\wwwroot\LiGet içindeki appsettings.json dosyasına yerleştirmeniz gerekir. klasör.

Karma oluşturmak için PowerShell'i veya sizin için uygun olan başka bir karma yöntemini kullanabilirsiniz. Aşağıda, karma oluşturmak için iş istasyonunuzda çalıştıracağınız şeyin bir örneği bulunmaktadır.

([System.Security.Cryptography.HashAlgorithm]::Create('SHA256').ComputeHash([System.Text.Encoding]::UTF8.GetBytes(<apikey>)) | 
Foreach-Object { $_.ToString('x2')}) -join ''

Karmayı oluşturmak için çevrimiçi karma oluşturucuyu da kullanabilirsiniz.

Bu yaklaşımın dezavantajı, API anahtarını unutursanız, karma geri döndürülemediği için yeni bir karma oluşturmanız ve onu değiştirmeniz gerekmesidir.

IIS'de ProGet'i kurma

Şu ana kadar ele alınan seçeneklerin tümü ücretsizdir ve kurulduktan sonra çok fazla hareketli parça içermez. Bu, NuGet'i denemek için iyi olsa da, diğer araçlarla entegrasyon yapmak istiyorsanız veya iş yerindeki bir sistem için satıcı desteğine ihtiyacınız varsa, NuGet paket yöneticisi ProGet daha iyi bir seçenek olabilir.

Önkoşullar

ProGet'i kurmak için, muhtemelen şimdiye kadar alışkın olduğunuz bazı ortak önkoşullara ihtiyacınız olacak, ancak buna ek olarak isteğe bağlı bir SQL veritabanı da eklenecek.

  • Windows Server - Windows Server sürümünün şu anda desteklenen herhangi bir sürümü çalışacaktır, ancak tüm ekran görüntüleri Windows Server 2019 Standard'da alınmıştır.
  • ProGet Installer - Kullandığım ProGet sürümü 5.2.9.
  • SQL Örneği - ProGet'in yükleyiciden SQL Express'i yükleme seçeneği olduğundan bu isteğe bağlıdır, ancak bu, ilk indirmeyi gerçekleştirmek için sunucunuzdan bir internet bağlantısı gerektirir.

ProGet'i yükleme

Web sunucunuzdan ProGet yükleyicisini çalıştırın. IIS'yi kurduğunuz için ProGet'i yüklerken IIS web sunucusu seçeneğini seçin. Henüz IIS kurulu değilse, ProGet'in kurulumu sırasında kurulumu gerçekleştirecektir.

ProGet veritabanını ayrı bir SQL sunucusunda barındırmak istemediğiniz sürece, seçeneklerin geri kalanını varsayılan olarak bırakabilirsiniz. Bu durumda kullanılacak SQL örneğini belirtmeniz gerekecektir.

SQL Server seçeneğini Inedo örneğini yükle olarak bırakırsanız sizin için SQL Express sunucusunu kuracaktır.

Kurulum bittiğinde, istendiğinde web sitesini başlatın; aşağıdaki ekran görüntüsüne benzeyen bir web sayfasının açıldığını görmelisiniz.

ProGet'te PSRepository'yi Yapılandırma

Bu noktada ProGet kurulur. Oldukça kolay. NuGet paketleriyle çalışmak için PowerShell kullandığımızdan, daha önce yaptığımız gibi bir PSRepository kurmamız gerekecek.

ProGet'i bir PSRepository için ayarlamak üzere Yayınlar sekmesine gidin ve yeni bir yayın oluşturun. Feed'e istediğiniz herhangi bir adı verebilirsiniz. Ardından aşağıda gösterildiği gibi Üçüncü taraf paket biçimi ve PowerShell'i seçin.

Feed'i oluşturduktan sonra Feed'ler sekmesine dönün, yeni feed'inizi seçin; yayınlama için kullanılan URL gösterilecektir. Bu PSRepository'de yayınlamak veya buradan indirmek için bir cihazda PowerShell'de çalıştırmanız gereken şey budur.

Yukarıdaki örnekte gösterilenler aşağıdadır:

Register-PSRepository -Name ProGet -SourceLocation http://<WebServer>:8624/nuget/PSRepository/ -PublishLocation http://<WebServer>:8624/nuget/PSRepository/ -InstallationPolicy Trusted

API Anahtarı Ekleme

Diğer seçenekler gibi bir API anahtarı oluşturmanız gerekir. Bunu yapmak için sağ üst köşedeki dişli çark simgesini tıklayın ve ardından sol araç çubuğundan API Anahtarları'nı seçin. Burada mevcut API anahtarlarını görebilir ve yenilerini oluşturabilirsiniz. Açık kaynak ve kurumsal ProGet arasındaki temel farkı hemen göreceksiniz. ProGet ile birçok API anahtarına sahip olabilirsiniz.

API Anahtarları ekranında API Anahtarı Oluştur'u tıklayın. Buradan Feed API kutusunu işaretleyin ve API Anahtarını Kaydet'i tıklayın.

API anahtarı oluşturulduktan sonra sizi API anahtarları sayfasına geri götürecektir. Buradan paketleri feed'inizde yayınlamak için gördüğünüz API anahtarını kullanabilirsiniz.

ProGet ile Paket Arama

ProGet ayrıca akıştaki tüm NuGet paketlerini aramanıza, indirme sayısını görmenize, bir paketin yüklendiği PowerShell modüllerinin adını ve Paketler'deki diğer benzer paket istatistiklerini görmenize olanak tanıyan bir web sayfası da içerir. sayfasını aşağıda gösterildiği gibi açın.

Alternatif olarak, Yayınlar sayfasına gidebilir ve yalnızca o yayına ilişkin paketleri görmek için bir yayın seçebilirsiniz. Aşağıda gösterildiği gibi paketlerle ilgili istatistikleri ve diğer ayrıntıları görmek için ayrı ayrı paketlere inebilirsiniz.

ProGet'i güncelleme

Bir kuruluş için konumlandırılmış bir ürünü kullanmanın güzel yanlarından biri, daha fazla zaman alan bazı idari görevlerin çok daha hızlı olmasıdır. Bunun bir örneği ProGet'in güncellenmesidir.

ProGet'i en yeni sürüme güncellemek için web sunucunuzda Inedo Yükleyiciyi açmanız yeterlidir. Bu, ProGet'i ilk yüklediğinizde yüklendi. Aşağıda gösterilen Yükselt düğmesini tıklayın; yükleyici gerisini sizin için halledecektir.

NuGet Paket Yöneticisi Karşılaştırması

Bu makalede çeşitli NuGet araçları hakkında çok şey öğrendiniz. Hangisini deneyeceğiniz konusunda hala alışveriş yapıyorsanız, bu bölümde her birini farklı kılan şeylere bir göz atacaksınız.

BaGet ve LiGet

LiGet, BaGet'in bir çatalı olduğu için kurulum sürecinin çoğu da dahil olmak üzere pek çok benzerliği paylaşıyorlar. Aslında BaGet ile tamamen aynı kurulum prosedürünü takip edebilirsiniz.

LiGet ve BaGet kurulduktan sonra bazı özellikleri paylaşıyor ancak bazı açılardan farklılık gösteriyor.

FeatureBaGetLiGet
Web Port50009011
Source URL/v3/index.json/api/v3/index.json
NuGet Search APIv2v3
API KeyPlain TextSHA256 hash
Web InterfaceCan see list of packages and commands to uploadNo web interface

Bu farklılıkların çoğu PowerShell kullanımını etkilemese de karma API anahtarının kullanılması nedeniyle kurulum biraz değişir.

Hem BaGet hem de LiGet, platformlar arası olmalarını ve Linux işletim sistemlerinde kullanılabilir olmalarını sağlayan .NET Core üzerine kurulmuştur. Windows'un yanı sıra. Her ikisinde de, halihazırda bir konteyner hizmeti kullanıyorsanız kurulumu çok daha hızlı ve taşınabilir hale getirebilecek Docker görüntüleri bulunur.

LiGet ve BaGet arasındaki birkaç farka rağmen, her ikisi de açık kaynaklı, konteyner dostu bir NuGet sunucusu için mükemmel bir seçenektir. Her iki seçenek de Windows'ta bir NuGet sunucusuna dalmanıza izin verirken, gelecekte çok fazla ekstra çalışma yapmadan Linux'a veya bir Docker görüntüsüne geçmenize olanak tanır.

BaGet ve ProGet

Kendinizi bir dereceye kadar yuvarlamamayı ve kolay yolu seçmeyi tercih ediyorsanız, her zaman ProGet vardır. Yine de dezavantajları var. ProGet açık kaynak değildir ve hiçbir şekilde ücretsiz değildir. Ancak kurulumu ve çalışması daha kolaydır.

ProGet ve BaGet arasında birkaç önemli fark vardır.

FeatureProGetBaGet
CostProGet Free: Free, ProGet Basic: $1995/yr, ProGet Enterprise: $9995+/yearFree
PlatformWindowsWindows, Linux, Docker
DatabaseSQLInternal
SupportProGet Free: Email and Slack support, ProGet Basic and Enterprise: Defined SLAs with Email, Slack and Phone supportCommunity based through GitHub issues

Inedo'da ayrıca ProGet sürümleri arasındaki tüm özellik farklılıklarının bir dökümü de bulunmaktadır.

Özet

Bu makalede çeşitli NuGet araçları ve teknolojileri hakkında çok şey öğrendiniz. Hangi NuGet sunucusunu kullanacağınız konusunda kararsızsanız artık bu kararı vermenize yardımcı olacak çok daha fazla bilgiye sahip olmalısınız.

Her bir NuGet aracının Windows ile çalışacak şekilde nasıl ayarlanacağını öğrendiniz ve her birinin birçok özelliğinden bahsettik.

İlgili makaleler