bundle-update - başvuru kılavuzu, seçenekler, komut örnekleri


İSİM

bundle-update - Taşlarınızı mevcut en son sürümlere güncelleyin

ÖZET

bundle update *gems [--all] [--group=NAME] [--source=NAME] [--local] [--ruby] [--bundler[=VERSION]] [--full-index] [--jobs=JOBS] [--quiet] [--patch|--minor|--major] [--redownload] [--strict] [--conservative]

TANIM

Gemfile.lock içinde belirtilen önceden yüklenmiş taşları yok sayarak, belirtilen değerli taşları (--all bayrağı kullanılıyorsa tüm değerli taşlar) güncelleyin. Genel olarak, makineler arasında tam olarak aynı taşları ve sürümleri kurmak için package install(1) bundle-install.1.html kullanmalısınız.

Bir mücevherin sürümünü açıkça güncellemek için paket güncelleme'yi kullanırsınız.

SEÇENEKLER

--all

Gemfile'de belirtilen tüm taşları güncelleyin.

--group=<name>, -g=[<name>]

Yalnızca belirtilen gruptaki taşları güncelleyin. Örneğin, geliştirme grubundaki tüm mücevherleri paket güncelleme -- grup geliştirme ile güncelleyebilirsiniz. Örneğin, Rails gem'i ve test grubundaki tüm gem'leri güncellemek için bundle update Rails --group test'i de arayabilirsiniz.

--source=<name>

Gemfile(5) içinde kullanılan bir :git veya :path kaynağının adı. Örneğin, :git bir http://github.com/rails/rails.git kaynağıyla, bundle update --source rails adını verirsiniz.

--local

Mücevherleri uzaktan getirmeye çalışmayın ve bunun yerine mücevher önbelleğini kullanın.

--ruby

Ruby'nin kilitli sürümünü güncel Ruby sürümüne güncelleyin.

--bundler

Paketleyicinin kilitli sürümünü çağrılan paketleyici sürümüne güncelleyin.

--full-index

Tüm mücevherlerin tek dosya dizinini kullanmaya geri dönün.

--jobs=[<number>], -j[<number>]

Paralel olarak çalıştırılacak işlerin sayısını belirtin. Varsayılan, kullanılabilir işlemcilerin sayısıdır.

--retry=[<number>]

Başarısız ağ veya git isteklerini sayı kez yeniden deneyin.

--quiet

Yalnızca uyarıları ve hataları yazdırın.

--redownload

Her taşı indirmeye zorla.

--patch

Yalnızca bir sonraki yama sürümüne güncellemeyi tercih edin.

--minor

Yalnızca bir sonraki küçük sürüme güncellemeyi tercih edin.

--major

Bir sonraki ana sürüme güncellemeyi tercih et (varsayılan).

--strict

En son --patch | --minör | --büyük.

--conservative

Paket yükleme muhafazakar güncelleme davranışını kullanın ve dolaylı bağımlılıkların güncellenmesine izin vermeyin.

TÜM TAŞLARI GÜNCELLEME

bundle update --all'ı çalıştırırsanız, paketleyici önceden yüklenmiş değerli taşları yok sayar ve kaynaklarda bulunan tüm değerli taşların en son sürümlerine dayalı olarak tüm bağımlılıkları yeniden çözer.

Aşağıdaki Gemfile(5)'i göz önünde bulundurun:

source "https://rubygems.org"

gem "rails", "3.0.0.rc"
gem "nokogiri"

package install(1) bundle-install.1.html dosyasını ilk kez çalıştırdığınızda, paketleyici tüm bağımlılıkları baştan sona çözecek ve ihtiyacınız olanı yükleyecektir:

Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
Installing builder 2.1.2
Installing abstract 1.0.0
Installing rack 1.2.8
Using bundler 1.7.6
Installing rake 10.4.0
Installing polyglot 0.3.5
Installing mime-types 1.25.1
Installing i18n 0.4.2
Installing mini_portile 0.6.1
Installing tzinfo 0.3.42
Installing rack-mount 0.6.14
Installing rack-test 0.5.7
Installing treetop 1.4.15
Installing thor 0.14.6
Installing activesupport 3.0.0.rc
Installing erubis 2.6.6
Installing activemodel 3.0.0.rc
Installing arel 0.4.0
Installing mail 2.2.20
Installing activeresource 3.0.0.rc
Installing actionpack 3.0.0.rc
Installing activerecord 3.0.0.rc
Installing actionmailer 3.0.0.rc
Installing railties 3.0.0.rc
Installing rails 3.0.0.rc
Installing nokogiri 1.6.5

Bundle complete! 2 Gemfile dependencies, 26 gems total.
Use `bundle show [gemname]` to see where a bundled gem is installed.

Gördüğünüz gibi, Gemfile(5) içinde iki gem olmasına rağmen, uygulamanızın çalışabilmesi için 26 farklı gem'e ihtiyacı var. Bundler, Gemfile.lock'ta yüklediği sürümleri tam olarak hatırlar. package install(1) bundle-install.1.html'yi bir sonraki çalıştırışınızda, paketleyici bağımlılık çözümlemesini atlar ve en son yüklediği taşların aynısını yükler.

Gemfile.lock dosyasını sürüm kontrolünde kontrol ettikten ve onu başka bir makinede klonladıktan sonra, package install(1) bundle-install.1.html çalıştırıldığında, geçen sefer kurduğunuz taşlar yine kurulacaktır. Yeni bir erubis veya mail sürümünün kullandığınız değerli taşları değiştireceği konusunda endişelenmenize gerek yok.

Ancak, zaman zaman, kullanmakta olduğunuz taşları, Gemfile(5) dosyanızdaki taşlarla hâlâ eşleşen en yeni sürümlere güncellemek isteyebilirsiniz.

Bunu yapmak için, Gemfile.lock'u yok sayan bundle update --all komutunu çalıştırın ve tüm bağımlılıkları yeniden çözün. Bu işlemin, bundle update --all'ı en son çalıştırdığınızdan bu yana mücevher yazarlarının piyasaya sürdüğü yeni cevherlerin gereksinimlerine bağlı olarak, 25 cevherden oluşan önemli ölçüde farklı bir setle sonuçlanabileceğini unutmayın.

MÜCEVHER LİSTESİNİ GÜNCELLEME

Bazen, Gemfile(5) içindeki tek bir gem'i güncellemek ve belirttiğiniz diğer gemleri Gemfile.lock içindeki sürümlere kilitli bırakmak istersiniz.

Örneğin, yukarıdaki senaryoda, nokogiri'nin 1.4.4 sürümünü yayınladığını ve Rails'i ve tüm bağımlılıklarını güncellemeden güncellemek istediğinizi düşünün. Bunu yapmak için bundle update nokogiri'yi çalıştırın.

Bundler, nokogiri'yi ve bağımlılıklarından herhangi birini güncelleyecek, ancak Rails ve bağımlılıklarını tek başına bırakacaktır.

ÇATIŞAN BAĞIMLILIKLAR

Bazen, Gemfile(5) içinde bildirilmiş olan birden çok taş, aynı ikinci düzey bağımlılık tarafından karşılanır. Örneğin, thin ve rack-perftools-profiler durumunu ele alalım.

source "https://rubygems.org"

gem "thin"
gem "rack-perftools-profiler"

ince cevher rack >= 1.0'a, rack-perftools-profiler ise rack ~> 1.0'a bağlıdır. Paket kurulumunu çalıştırırsanız şunları elde edersiniz:


Fetching source index for https://rubygems.org/
Installing daemons (1.1.0)
Installing eventmachine (0.12.10) with native extensions
Installing open4 (1.0.1)
Installing perftools.rb (0.4.7) with native extensions
Installing rack (1.2.1)
Installing rack-perftools_profiler (0.0.2)
Installing thin (1.2.7) with native extensions
Using bundler (1.0.0.rc.3)

Bu durumda, iki cevherin kendi bağımlılıkları vardır, ancak rafı ortak olarak paylaşırlar. bundle update thin'i çalıştırırsanız, paketleyici, thin'in bağımlılıkları olan daemons, eventmachine ve rack'ı günceller, ancak rack-perftools_profiler'ın bağımlılıkları olan open4 veya perftools.rb'yi güncellemez. Bundle update thin'in rack'ı aynı zamanda bir rack-perftools_profiler bağımlılığı olmasına rağmen güncelleyeceğini unutmayın.

Kısacası, varsayılan olarak, bundle update kullanarak bir gem'i güncellediğinizde, paketleyici, başka bir gem'in bağımlılıkları da dahil olmak üzere o gem'in tüm bağımlılıklarını günceller.

Dolaylı bağımlılıkların güncellenmesini önlemek için, sürüm 1.14'ten önce tek seçenek, kurulum paketindeki(1) bundle-install.1.html KORUYUCU GÜNCELLEME davranışıydı:

Bu senaryoda, Gemfile(5) içinde ince sürümü manuel olarak güncellemek ve ardından package install(1) bundle-install.1.html'i çalıştırmak yalnızca arka plan programı ve eventmachine'i günceller, ancak rafı güncellemez. Daha fazla bilgi için paket kurulumunun(1) bundle-install.1.html KORUYUCU GÜNCELLEME bölümüne bakın.

1.14'ten başlayarak, --conservative seçeneğinin belirtilmesi dolaylı bağımlılıkların güncellenmesini de engelleyecektir.

YAMA SEVİYESİ SEÇENEKLERİ

Sürüm 1.14, gem sürümlerinin nasıl çözümlendiğini etkileyecek 4 yama düzeyinde seçenek sunuyor. Şu seçeneklerden biri kullanılabilir: --patch, --minor veya --major. Daha fazla etki çözümü için --strict eklenebilir.

--patch

Yalnızca bir sonraki yama sürümüne güncellemeyi tercih edin.

--minor

Yalnızca bir sonraki küçük sürüme güncellemeyi tercih edin.

--major

Bir sonraki ana sürüme güncellemeyi tercih et (varsayılan).

--strict

En son --patch | --minör | --büyük.

Bundler, Gemfile veya üst mücevherlerde beyan edilen gereksinimleri karşılamak için hangi sürümlerin kullanılacağına karar verirken, mevcut tüm sürümleri arar, gereksinimi karşılamayan sürümleri filtreler ve ardından varsayılan olarak, onları bu sırayla dikkate alarak en yeniden en eskiye doğru sıralar.

Yama seviyesi seçeneklerinden birinin (ör. --patch) sağlanması, tatmin edici sürümlerin sıralama düzenini değiştirerek Bundler'ın diğer sürümlerden önce mevcut olan en son --patch veya --minor sürümünü dikkate almasına neden olur. Uygun bir bağımlılık grafiği bulmak için gerekirse belirtilen yama seviyesinin dışındaki sürümlerin yine de çözülebileceğini unutmayın.

Örneğin, gem 'foo' 1.0.2'de kilitliyse, Gemfile'de gem gereksinimi tanımlanmamışsa ve 1.0.3, 1.0.4, 1.1.0, 1.1.1, 2.0.0 sürümlerinin tümü mevcutsa, varsayılan tercih sırası (--major) "2.0.0, 1.1.1, 1.1.0, 1.0.4, 1.0" olacaktır. .3, 1.0.2".

--patch seçeneği kullanılırsa tercih sırası "1.0.4, 1.0.3, 1.0.2, 1.1.1, 1.1.0, 2.0.0" olarak değişecektir.

--minor seçeneği kullanılırsa tercih sırası "1.1.1, 1.1.0, 1.0.4, 1.0.3, 1.0.2, 2.0.0" olarak değişecektir.

--strict seçeneğini herhangi bir yama seviyesi seçeneğiyle birleştirmek, yama seviyesi seçeneğinin kapsamı dışındaki tüm sürümleri kaldırarak, o ana kadar hiçbir mücevherin güncellenmemesini sağlar.

Önceki örneğe devam edecek olursak, hem --patch hem de --strict seçenekleri kullanılırsa, çözünürlük için mevcut sürümler "1.0.4, 1.0.3, 1.0.2" olacaktır. --minor ve --strict kullanılırsa "1.1.1, 1.1.0, 1.0.4, 1.0.3, 1.0.2" olur.

Gemfile'de tanımlandığı şekliyle Gem gereksinimleri, hangi sürümlerin mevcut olduğunu belirleyen ilk faktör olmaya devam edecektir. Gemfile'de foo için gem gereksinimi '~> 1.0' ise, bu, --minor ve --strict seçeneklerini sağlamakla aynı şeyi yapacaktır.

YAMA DÜZEYİ ÖRNEKLERİ

Aşağıdaki taş özellikleri göz önüne alındığında:

foo 1.4.3, requires: ~> bar 2.0
foo 1.4.4, requires: ~> bar 2.0
foo 1.4.5, requires: ~> bar 2.1
foo 1.5.0, requires: ~> bar 2.1
foo 1.5.1, requires: ~> bar 3.0
bar with versions 2.0.3, 2.0.4, 2.1.0, 2.1.1, 3.0.0

Gem dosyası:


gem 'foo'

Gemfile.lock:


foo (1.4.3)
  bar (~> 2.0)
bar (2.0.3)

Vakalar:


#  Command Line                     Result
------------------------------------------------------------
1  bundle update --patch            'foo 1.4.5', 'bar 2.1.1'
2  bundle update --patch foo        'foo 1.4.5', 'bar 2.1.1'
3  bundle update --minor            'foo 1.5.1', 'bar 3.0.0'
4  bundle update --minor --strict   'foo 1.5.0', 'bar 2.1.1'
5  bundle update --patch --strict   'foo 1.4.4', 'bar 2.0.4'

1. durumda, bar 2.1.1'e yükseltilir, foo 1.4.5'ten gelen bağımlılık gerektirdiğinden küçük bir sürüm artışı.

2. durumda, yalnızca foo'nun kilidinin açılması istenir, ancak Gemfile'de beyan edilmiş bir bağımlılık olmadığı için bar'ın da hareket etmesine izin verilir.

3. durumda, bar tam bir majör sürüm yükselir, çünkü şimdi foo için küçük bir artış tercih edilir ve 1.5.1'e gittiğinde, 3.0.0 bar gerektirir.

4. durumda, alt sürüme kadar foo tercih edilir, ancak --strict bayrağı, büyük bir artış olduğu için bar 3.0.0'ı dikkate almadığından 1.5.1 çalışmaz.

5. durumda, hem foo hem de bar, --strict bayrağı nedeniyle dikkate alınmayan küçük veya büyük artışlara sahiptir, bu nedenle hareket edebilecekleri en fazla 1.4.4 ve 2.0.4'e kadardır.

ÖNERİLEN İŞ AKIŞI

Genel olarak, paketleyici ile yönetilen bir uygulama ile çalışırken aşağıdaki iş akışını kullanmalısınız:

  • Gemfile(5)'inizi ilk kez oluşturduktan sonra çalıştırın.

  • bundle install
  • Ortaya çıkan Gemfile.lock dosyasını sürüm kontrolünde kontrol edin

  • git add Gemfile.lock
  • Bu depoyu başka bir geliştirme makinesinde kontrol ederken, şunu çalıştırın:

  • bundle install
  • Bir konuşlandırma makinesinde bu depoyu kontrol ederken şunu çalıştırın:

  • bundle install --deployment
  • Gemfile(5)'i yeni veya güncelleme bağımlılığını yansıtacak şekilde değiştirdikten sonra, çalıştırın

  • bundle install
  • Güncellenmiş Gemfile.lock'u sürüm kontrolünde kontrol ettiğinizden emin olun

  • git add Gemfile.lock
  • package install(1) bundle-install.1.html bir çakışma bildirirse, Gemfile(5) içinde değiştirdiğiniz belirli taşları manuel olarak güncelleyin.

  • bundle update rails thin
  • Tüm taşları, Gemfile(5)'te listelenen taşlarla hâlâ eşleşen en son olası sürümlere güncellemek istiyorsanız, şunu çalıştırın:

  • bundle update --all