.\" generated with Ronn-NG/v0.10.1 .\" http://github.com/apjanke/ronn-ng/tree/0.10.1 .TH "BUNDLE\-UPDATE" "1" "September 2025" "" .SH "نام (NAME)" \fBbundle\-update\fR \- به‌روزرسانی gemها به آخرین نسخه‌های موجود .SH "خلاصه دستور (SYNOPSIS)" \fBbundle update\fR \fI*gems\fR [\-\-all] [\-\-group=NAME] [\-\-source=NAME] [\-\-local] [\-\-ruby] [\-\-bundler[=VERSION]] [\-\-force] [\-\-full\-index] [\-\-gemfile=GEMFILE] [\-\-jobs=NUMBER] [\-\-quiet] [\-\-patch|\-\-minor|\-\-major] [\-\-pre] [\-\-strict] [\-\-conservative] .SH "توضیحات (DESCRIPTION)" gemهای مشخص‌شده (در صورت استفاده از پرچم \fB\-\-all\fR تمام gemها) را به‌روزرسانی می‌کند و gemهای نصب‌شدهٔ پیشین مشخص‌شده در \fBGemfile\.lock\fR را نادیده می‌گیرد\. به‌طور کلی، باید از bundle install(1) \fIbundle\-install\.1\.html\fR برای نصب دقیقاً همان gemها و نسخه‌ها در تمامی ماشین‌ها استفاده کنید\. .P برای به‌روزرسانی صریح نسخهٔ یک gem، از \fBbundle update\fR استفاده می‌کنید\. .SH "گزینه‌ها (OPTIONS)" .TP \fB\-\-all\fR به‌روزرسانی تمامی gemهای مشخص‌شده در Gemfile\. .TP \fB\-\-group=\fR, \fB\-g=\fR تنها gemهای موجود در گروه مشخص‌شده را به‌روزرسانی می‌کند\. برای نمونه، می‌توانید تمام gemهای گروه development را با دستور \fBbundle update \-\-group development\fR به‌روزرسانی کنید\. همچنین می‌توانید برای مثال دستور \fBbundle update rails \-\-group test\fR را فراخوانی کنید تا gem مربوط به rails و تمام gemهای گروه test به‌روزرسانی شوند\. .TP \fB\-\-source=\fR نام منبع \fB:git\fR یا \fB:path\fR استفاده‌شده در Gemfile(5)\. برای نمونه، با منبع \fB:git\fR به نشانی \fBhttp://github\.com/rails/rails\.git\fR، دستور \fBbundle update \-\-source rails\fR را فراخوانی می‌کنید\. .TP \fB\-\-local\fR از تلاش برای دریافت gemها از راه دور خودداری کرده و به‌جای آن از حافظهٔ موقت (کَش) gem استفاده می‌کند\. .TP \fB\-\-ruby\fR نسخهٔ قفل‌شدهٔ Ruby را به نسخهٔ فعلی Ruby به‌روزرسانی می‌کند\. .TP \fB\-\-bundler[=BUNDLER]\fR نسخهٔ قفل‌شدهٔ bundler را به نسخهٔ فعلی اجراشده از bundler به‌روزرسانی می‌کند\. .TP \fB\-\-force\fR, \fB\-\-redownload\fR نصب مجدد اجباری تمام gemها، حتی اگر از قبل نصب شده باشند\. .TP \fB\-\-full\-index\fR بازگشت به استفاده از نمایهٔ تک‌فایلی تمام gemها\. .TP \fB\-\-gemfile=GEMFILE\fR استفاده از فایل gem مشخص‌شده به‌جای [\fBGemfile(5)\fR][Gemfile(5)]\. .TP \fB\-\-jobs=\fR, \fB\-j=\fR مشخص کردن تعداد کارهایی که به‌طور هم‌زمان اجرا می‌شوند\. مقدار پیش‌فرض برابر با تعداد پردازنده‌های در دسترس است\. .TP \fB\-\-retry=[]\fR تلاش مجدد برای درخواست‌های ناموفق شبکه یا git به تعداد \fInumber\fR بار\. .TP \fB\-\-quiet\fR تنها هشدارها و خطاها را در خروجی نمایش می‌دهد\. .TP \fB\-\-patch\fR ترجیح دادن به‌روزرسانی تنها به نسخهٔ وصله (patch) بعدی\. .TP \fB\-\-minor\fR ترجیح دادن به‌روزرسانی تنها به نسخهٔ فرعی (minor) بعدی\. .TP \fB\-\-major\fR ترجیح دادن به‌روزرسانی به نسخهٔ اصلی (major) بعدی (پیش‌فرض)\. .TP \fB\-\-pre\fR همواره بالاترین نسخهٔ مجاز را بدون در نظر گرفتن وضعیت پیش‌انتشار (prerelease) انتخاب می‌کند\. .TP \fB\-\-strict\fR اجازه نمی‌دهد هیچ gemای فراتر از آخرین نسخه بر اساس \fB\-\-patch\fR | \fB\-\-minor\fR | \fB\-\-major\fR به‌روزرسانی شود\. .TP \fB\-\-conservative\fR استفاده از رفتار به‌روزرسانی محتاطانهٔ bundle install و عدم اجازه برای به‌روزرسانی وابستگی‌های غیرمستقیم\. .SH "به‌روزرسانی تمامی GEMها (UPDATING ALL GEMS)" اگر دستور \fBbundle update \-\-all\fR را اجرا کنید، bundler هرگونه gem نصب‌شدهٔ قبلی را نادیده گرفته و تمام وابستگی‌ها را مجدداً بر اساس آخرین نسخه‌های موجود تمامی gemها در منابع حل (resolve) می‌کند\. .P Gemfile(5) زیر را در نظر بگیرید: .IP "" 4 .nf source "https://rubygems\.org" gem "rails", "3\.0\.0\.rc" gem "nokogiri" .fi .IP "" 0 .P هنگامی که برای نخستین بار bundle install(1) \fIbundle\-install\.1\.html\fR را اجرا می‌کنید، bundler تمام وابستگی‌ها را تا پایین‌ترین سطح حل کرده و آنچه را نیاز دارید نصب می‌کند: .IP "" 4 .nf 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\. .fi .IP "" 0 .P همان‌طور که مشاهده می‌کنید، اگرچه تنها دو gem در Gemfile(5) دارید، اما برنامه شما برای اجرا به ۲۶ gem مختلف نیاز دارد\. برنامهٔ bundler نسخه‌های دقیق نصب‌شده را در \fBGemfile\.lock\fR ذخیره می‌کند\. دفعهٔ بعد که bundle install(1) \fIbundle\-install\.1\.html\fR را اجرا کنید، bundler از مرحلهٔ حل وابستگی‌ها صرف‌نظر کرده و همان gemهایی را نصب می‌کند که دفعه پیش نصب کرده بود\. .P پس از ثبت کردن (commit) فایل \fBGemfile\.lock\fR در سامانهٔ کنترل نسخه و کلون کردن آن روی ماشینی دیگر، اجرای bundle install(1) \fIbundle\-install\.1\.html\fR \fIهمچنان\fR همان gemهایی را نصب خواهد کرد که دفعه پیش نصب کرده بودید\. لازم نیست نگران باشید که نسخه جدیدی از \fBerubis\fR یا \fBmail\fR باعث تغییر gemهای مورداستفاده شما شود\. .P با این حال، هر از چند گاهی ممکن است بخواهید gemهای مورد استفادهٔ خود را به جدیدترین نسخه‌هایی که همچنان با مشخصات Gemfile(5) شما مطابقت دارند به‌روزرسانی کنید\. .P برای انجام این کار، دستور \fBbundle update \-\-all\fR را اجرا کنید که \fBGemfile\.lock\fR را نادیده گرفته و تمام وابستگی‌ها را مجدداً حل می‌کند\. به یاد داشته باشید که این فرایند می‌تواند بر اساس نیازمندی‌های gemهای جدیدی که سازندگان آن‌ها از زمان آخرین اجرای \fBbundle update \-\-all\fR منتشر کرده‌اند، به مجموعه‌ای کاملاً متفاوت از آن ۲۵ gem منجر شود\. .SH "به‌روزرسانی فهرستی از GEMها (UPDATING A LIST OF GEMS)" گاهی اوقات می‌خواهید یک gem منفرد را در Gemfile(5) به‌روزرسانی کنید و بقیهٔ gemهایی را که مشخص کرده‌اید روی همان نسخه‌های موجود در \fBGemfile\.lock\fR قفل نگه دارید\. .P برای نمونه، در سناریوی بالا تصور کنید نسخهٔ \fB1\.4\.4\fR از \fBnokogiri\fR منتشر شده است و شما می‌خواهید آن را \fIبدون\fR به‌روزرسانی Rails و تمام وابستگی‌هایش به‌روز کنید\. برای این کار، دستور \fBbundle update nokogiri\fR را اجرا کنید\. .P برنامهٔ bundler بستهٔ \fBnokogiri\fR و هر یک از وابستگی‌های آن را به‌روزرسانی می‌کند، اما به Rails و وابستگی‌های آن کاری نخواهد داشت\. .SH "وابستگی‌های هم‌پوشان (OVERLAPPING DEPENDENCIES)" گاهی اوقات، چندین gem تعریف‌شده در Gemfile(5) شما با یک وابستگی سطح دوم مشترک برآورده می‌شوند\. برای نمونه، مورد \fBthin\fR و \fBrack\-perftools\-profiler\fR را در نظر بگیرید: .IP "" 4 .nf source "https://rubygems\.org" gem "thin" gem "rack\-perftools\-profiler" .fi .IP "" 0 .P بستهٔ \fBthin\fR به \fBrack >= 1\.0\fR وابسته است، در حالی که \fBrack\-perftools\-profiler\fR به \fBrack ~> 1\.0\fR وابستگی دارد\. اگر bundle install را اجرا کنید، نتیجه به این صورت خواهد بود: .IP "" 4 .nf 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) .fi .IP "" 0 .P در این مورد، این دو gem هر کدام مجموعه‌ای از وابستگی‌های خود را دارند، اما در \fBrack\fR مشترک هستند\. اگر دستور \fBbundle update thin\fR را اجرا کنید، bundler بسته‌های \fBdaemons\fR، \fBeventmachine\fR و \fBrack\fR را که وابستگی‌های \fBthin\fR هستند به‌روزرسانی می‌کند، اما به سراغ \fBopen4\fR یا \fBperftools\.rb\fR که وابستگی‌های \fBrack\-perftools_profiler\fR هستند نمی‌رود\. توجه داشته باشید که \fBbundle update thin\fR بستهٔ \fBrack\fR را به‌روزرسانی خواهد کرد، هرچند که این بسته \fIهم‌زمان\fR وابستگی \fBrack\-perftools_profiler\fR نیز محسوب می‌شود\. .P به‌طور خلاصه، به‌طور پیش‌فرض زمانی که یک gem را با \fBbundle update\fR به‌روزرسانی می‌کنید، bundler تمام وابستگی‌های آن gem را به‌روزرسانی خواهد کرد، از جمله مواردی که هم‌زمان وابستگی gem دیگری نیز هستند\. .P برای جلوگیری از به‌روزرسانی وابستگی‌های غیرمستقیم، پیش از نسخهٔ 1.14 تنها گزینه رفتار \fBCONSERVATIVE UPDATING\fR در bundle install(1) \fIbundle\-install\.1\.html\fR بود: .P در این سناریو، به‌روزرسانی دستی نسخهٔ \fBthin\fR در Gemfile(5) و سپس اجرای bundle install(1) \fIbundle\-install\.1\.html\fR تنها \fBdaemons\fR و \fBeventmachine\fR را به‌روزرسانی می‌کند و دست به \fBrack\fR نمی‌زند\. برای اطلاعات بیشتر، بخش \fBCONSERVATIVE UPDATING\fR از bundle install(1) \fIbundle\-install\.1\.html\fR را ببینید\. .P از نسخهٔ 1.14 به بعد، مشخص کردن گزینهٔ \fB\-\-conservative\fR نیز مانع از به‌روزرسانی وابستگی‌های غیرمستقیم می‌شود\. .SH "گزینه‌های سطح وصله (PATCH LEVEL OPTIONS)" نسخهٔ 1.14 چهار گزینه در سطح وصله (patch-level) معرفی کرد که بر چگونگی حل نسخه‌های gem اثر می‌گذارند\. یکی از گزینه‌های زیر را می‌توان استفاده کرد: \fB\-\-patch\fR، \fB\-\-minor\fR یا \fB\-\-major\fR\. گزینهٔ \fB\-\-strict\fR را می‌توان برای تأثیر بیشتر بر فرایند حل نسخه اضافه کرد\. .TP \fB\-\-patch\fR ترجیح دادن به‌روزرسانی تنها به نسخهٔ وصله (patch) بعدی\. .TP \fB\-\-minor\fR ترجیح دادن به‌روزرسانی تنها به نسخهٔ فرعی (minor) بعدی\. .TP \fB\-\-major\fR ترجیح دادن به‌روزرسانی به نسخهٔ اصلی (major) بعدی (پیش‌فرض)\. .TP \fB\-\-strict\fR اجازه نمی‌دهد هیچ gemای فراتر از آخرین نسخه بر اساس \fB\-\-patch\fR | \fB\-\-minor\fR | \fB\-\-major\fR به‌روزرسانی شود\. .P هنگامی که Bundler در حال حل این مسئله است که چه نسخه‌هایی باید برای برآورده کردن پیش‌نیازهای تعریف‌شده در Gemfile یا در gemهای والد استفاده شوند، تمام نسخه‌های موجود را بررسی می‌کند، هر نسخه‌ای را که پیش‌نیاز را برآورده نکند پالایش (فیلتر) می‌کند، و سپس به‌طور پیش‌فرض آن‌ها را از جدیدترین به قدیمی‌ترین مرتب کرده و به همان ترتیب بررسی می‌کند\. .P ارائهٔ یکی از گزینه‌های سطح وصله (مانند \fB\-\-patch\fR) ترتیب مرتب‌سازی نسخه‌های منطبق را تغییر می‌دهد و سبب می‌شود Bundler آخرین نسخهٔ \fB\-\-patch\fR یا \fB\-\-minor\fR موجود را پیش از دیگر نسخه‌ها در نظر بگیرد\. توجه داشته باشید که در صورت نیاز برای یافتن یک گراف وابستگی مناسب، همچنان ممکن است نسخه‌های خارج از سطح وصلهٔ تعیین‌شده انتخاب و حل شوند\. .P برای نمونه، اگر gem 'foo' روی 1.0.2 قفل شده باشد، بدون اینکه پیش‌نیاز خاصی در Gemfile تعیین شده باشد، و نسخه‌های 1.0.3، 1.0.4، 1.1.0، 1.1.1، 2.0.0 همگی وجود داشته باشند، ترتیب اولویت پیش‌فرض (\fB\-\-major\fR) به صورت "2.0.0, 1.1.1, 1.1.0, 1.0.4, 1.0.3, 1.0.2" خواهد بود\. .P اگر گزینهٔ \fB\-\-patch\fR استفاده شود، ترتیب اولویت به "1.0.4, 1.0.3, 1.0.2, 1.1.1, 1.1.0, 2.0.0" تغییر خواهد کرد\. .P اگر گزینهٔ \fB\-\-minor\fR استفاده شود، ترتیب اولویت به "1.1.1, 1.1.0, 1.0.4, 1.0.3, 1.0.2, 2.0.0" تغییر خواهد یافت\. .P ترکیب گزینهٔ \fB\-\-strict\fR با هر یک از گزینه‌های سطح وصله، هرگونه نسخه‌ای فراتر از دامنهٔ گزینهٔ سطح وصله را حذف می‌کند تا اطمینان حاصل شود هیچ gemای تا آن حد به‌روزرسانی نشود\. .P در ادامهٔ مثال پیشین، اگر هر دو گزینهٔ \fB\-\-patch\fR و \fB\-\-strict\fR استفاده شوند، نسخه‌های موجود برای حل وابستگی "1.0.4, 1.0.3, 1.0.2" خواهند بود\. اگر \fB\-\-minor\fR و \fB\-\-strict\fR استفاده شوند، این نسخه‌ها "1.1.1, 1.1.0, 1.0.4, 1.0.3, 1.0.2" خواهند بود\. .P پیش‌نیازهای gem همان‌طور که در Gemfile تعریف شده‌اند، همچنان نخستین عامل تعیین‌کننده برای مشخص کردن نسخه‌های موجود خواهند بود\. اگر پیش‌نیاز gem برای \fBfoo\fR در Gemfile برابر با '~> 1.0' باشد، همان نتیجه‌ای را در بر خواهد داشت که ارائهٔ گزینه‌های \fB\-\-minor\fR و \fB\-\-strict\fR ایجاد می‌کند\. .SH "مثال‌های سطح وصله (PATCH LEVEL EXAMPLES)" با فرض تعاریف gemهای زیر: .IP "" 4 .nf 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 .fi .IP "" 0 .P فایل Gemfile: .IP "" 4 .nf gem 'foo' .fi .IP "" 0 .P فایل Gemfile\.lock: .IP "" 4 .nf foo (1\.4\.3) bar (~> 2\.0) bar (2\.0\.3) .fi .IP "" 0 .P حالت‌ها: .IP "" 4 .nf # 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' .fi .IP "" 0 .P در حالت ۱، bar به 2.1.1 ارتقا می‌یابد (یک افزایش در نسخهٔ فرعی)، زیرا وابستگی از سمت foo 1.4.5 به آن نیاز داشت\. .P در حالت ۲، تنها برای foo درخواست باز شدن قفل نسخه شده است، اما bar نیز اجازه جابه‌جایی دارد چرا که به عنوان وابستگی مستقیم در Gemfile تعریف نشده است\. .P در حالت ۳، بستهٔ bar یک نسخهٔ اصلی کامل ارتقا می‌یابد، زیرا در حال حاضر ارتقای فرعی برای foo ترجیح داده شده است، و زمانی که به 1.5.1 می‌رود، به نسخهٔ 3.0.0 از bar نیاز دارد\. .P در حالت ۴، برای foo ارتقا تا یک نسخهٔ فرعی ترجیح داده شده است، اما 1.5.1 کار نخواهد کرد زیرا پرچم \-\-strict نسخهٔ bar 3.0.0 را از گزینه‌ها حذف می‌کند چرا که یک افزایش در نسخهٔ اصلی محسوب می‌شود\. .P در حالت ۵، به دلیل وجود پرچم \-\-strict برای هر دو بستهٔ foo و bar هرگونه افزایش نسخهٔ فرعی یا اصلی از دامنهٔ بررسی حذف می‌شود، بنابراین بیشترین مقداری که می‌توانند ارتقا یابند 1.4.4 و 2.0.4 است\. .SH "گردش کار توصیه‌شده (RECOMMENDED WORKFLOW)" به‌طور کلی، هنگام کار با برنامه‌ای که با bundler مدیریت می‌شود، باید از گردش کار زیر استفاده کنید: .IP "\(bu" 4 پس از آن‌که Gemfile(5) خود را برای نخستین بار ایجاد کردید، اجرا کنید: .IP $ bundle install .IP "\(bu" 4 فایل \fBGemfile\.lock\fR حاصل را در سامانهٔ کنترل نسخه ثبت (commit) کنید: .IP $ git add Gemfile\.lock .IP "\(bu" 4 هنگام دریافت (checkout) این مخزن در یک ماشین توسعهٔ دیگر، اجرا کنید: .IP $ bundle install .IP "\(bu" 4 هنگام دریافت این مخزن در یک ماشین استقرار (deployment)، اجرا کنید: .IP $ bundle install \-\-deployment .IP "\(bu" 4 پس از تغییر دادن Gemfile(5) برای اعمال یک وابستگی جدید یا به‌روزرسانی‌شده، اجرا کنید: .IP $ bundle install .IP "\(bu" 4 اطمینان حاصل کنید که \fBGemfile\.lock\fR به‌روزرسانی‌شده را در سامانهٔ کنترل نسخه ثبت کنید: .IP $ git add Gemfile\.lock .IP "\(bu" 4 اگر bundle install(1) \fIbundle\-install\.1\.html\fR تداخلی را گزارش کرد، gemهای خاصی را که در Gemfile(5) تغییر داده‌اید به‌صورت دستی به‌روزرسانی کنید: .IP $ bundle update rails thin .IP "\(bu" 4 اگر می‌خواهید تمام gemها را به آخرین نسخه‌های ممکنی که همچنان با gemهای فهرست‌شده در Gemfile(5) هم‌خوانی دارند به‌روزرسانی کنید، اجرا کنید: .IP $ bundle update \-\-all .IP "" 0