summaryrefslogtreecommitdiff
path: root/man/bundle-install.1.txt
diff options
context:
space:
mode:
Diffstat (limited to 'man/bundle-install.1.txt')
-rw-r--r--man/bundle-install.1.txt401
1 files changed, 0 insertions, 401 deletions
diff --git a/man/bundle-install.1.txt b/man/bundle-install.1.txt
deleted file mode 100644
index 4c417b7b19..0000000000
--- a/man/bundle-install.1.txt
+++ /dev/null
@@ -1,401 +0,0 @@
-BUNDLE-INSTALL(1) BUNDLE-INSTALL(1)
-
-
-
-NAME
- bundle-install - Install the dependencies specified in your Gemfile
-
-SYNOPSIS
- bundle install [--binstubs[=DIRECTORY]] [--clean] [--deployment]
- [--frozen] [--full-index] [--gemfile=GEMFILE] [--jobs=NUMBER] [--local]
- [--no-cache] [--no-prune] [--path PATH] [--quiet] [--redownload]
- [--retry=NUMBER] [--shebang] [--standalone[=GROUP[ GROUP...]]]
- [--system] [--trust-policy=POLICY] [--with=GROUP[ GROUP...]]
- [--without=GROUP[ GROUP...]]
-
-DESCRIPTION
- Install the gems specified in your Gemfile(5). If this is the first
- time you run bundle install (and a Gemfile.lock does not exist),
- Bundler will fetch all remote sources, resolve dependencies and install
- all needed gems.
-
- If a Gemfile.lock does exist, and you have not updated your Gemfile(5),
- Bundler will fetch all remote sources, but use the dependencies
- specified in the Gemfile.lock instead of resolving dependencies.
-
- If a Gemfile.lock does exist, and you have updated your Gemfile(5),
- Bundler will use the dependencies in the Gemfile.lock for all gems that
- you did not update, but will re-resolve the dependencies of gems that
- you did update. You can find more information about this update process
- below under CONSERVATIVE UPDATING.
-
-OPTIONS
- To apply any of --binstubs, --deployment, --path, or --without every
- time bundle install is run, use bundle config (see bundle-config(1)).
-
- --binstubs[=<directory>]
- Binstubs are scripts that wrap around executables. Bundler
- creates a small Ruby file (a binstub) that loads Bundler, runs
- the command, and puts it in bin/. This lets you link the binstub
- inside of an application to the exact gem version the
- application needs.
-
- Creates a directory (defaults to ~/bin) and places any
- executables from the gem there. These executables run in
- Bundler's context. If used, you might add this directory to your
- environment's PATH variable. For instance, if the rails gem
- comes with a rails executable, this flag will create a bin/rails
- executable that ensures that all referred dependencies will be
- resolved using the bundled gems.
-
- --clean
- On finishing the installation Bundler is going to remove any
- gems not present in the current Gemfile(5). Don't worry, gems
- currently in use will not be removed.
-
- --deployment
- In deployment mode, Bundler will 'roll-out' the bundle for
- production or CI use. Please check carefully if you want to have
- this option enabled in your development environment.
-
- --redownload
- Force download every gem, even if the required versions are
- already available locally.
-
- --frozen
- Do not allow the Gemfile.lock to be updated after this install.
- Exits non-zero if there are going to be changes to the
- Gemfile.lock.
-
- --full-index
- Bundler will not call Rubygems' API endpoint (default) but
- download and cache a (currently big) index file of all gems.
- Performance can be improved for large bundles that seldom change
- by enabling this option.
-
- --gemfile=<gemfile>
- The location of the Gemfile(5) which Bundler should use. This
- defaults to a Gemfile(5) in the current working directory. In
- general, Bundler will assume that the location of the Gemfile(5)
- is also the project's root and will try to find Gemfile.lock and
- vendor/cache relative to this location.
-
- --jobs=[<number>], -j[<number>]
- The maximum number of parallel download and install jobs. The
- default is 1.
-
- --local
- Do not attempt to connect to rubygems.org. Instead, Bundler will
- use the gems already present in Rubygems' cache or in
- vendor/cache. Note that if a appropriate platform-specific gem
- exists on rubygems.org it will not be found.
-
- --no-cache
- Do not update the cache in vendor/cache with the newly bundled
- gems. This does not remove any gems in the cache but keeps the
- newly bundled gems from being cached during the install.
-
- --no-prune
- Don't remove stale gems from the cache when the installation
- finishes.
-
- --path=<path>
- The location to install the specified gems to. This defaults to
- Rubygems' setting. Bundler shares this location with Rubygems,
- gem install ... will have gem installed there, too. Therefore,
- gems installed without a --path ... setting will show up by
- calling gem list. Accordingly, gems installed to other locations
- will not get listed.
-
- --quiet
- Do not print progress information to the standard output.
- Instead, Bundler will exit using a status code ($?).
-
- --retry=[<number>]
- Retry failed network or git requests for number times.
-
- --shebang=<ruby-executable>
- Uses the specified ruby executable (usually ruby) to execute the
- scripts created with --binstubs. In addition, if you use
- --binstubs together with --shebang jruby these executables will
- be changed to execute jruby instead.
-
- --standalone[=<list>]
- Makes a bundle that can work without depending on Rubygems or
- Bundler at runtime. A space separated list of groups to install
- has to be specified. Bundler creates a directory named bundle
- and installs the bundle there. It also generates a
- bundle/bundler/setup.rb file to replace Bundler's own setup in
- the manner required. Using this option implicitly sets path,
- which is a [remembered option][REMEMBERED OPTIONS].
-
- --system
- Installs the gems specified in the bundle to the system's
- Rubygems location. This overrides any previous configuration of
- --path.
-
- --trust-policy=[<policy>]
- Apply the Rubygems security policy policy, where policy is one
- of HighSecurity, MediumSecurity, LowSecurity, AlmostNoSecurity,
- or NoSecurity. For more details, please see the Rubygems signing
- documentation linked below in SEE ALSO.
-
- --with=<list>
- A space-separated list of groups referencing gems to install. If
- an optional group is given it is installed. If a group is given
- that is in the remembered list of groups given to --without, it
- is removed from that list.
-
- --without=<list>
- A space-separated list of groups referencing gems to skip during
- installation. If a group is given that is in the remembered list
- of groups given to --with, it is removed from that list.
-
-DEPLOYMENT MODE
- Bundler's defaults are optimized for development. To switch to defaults
- optimized for deployment and for CI, use the --deployment flag. Do not
- activate deployment mode on development machines, as it will cause an
- error when the Gemfile(5) is modified.
-
- 1. A Gemfile.lock is required.
-
- To ensure that the same versions of the gems you developed with and
- tested with are also used in deployments, a Gemfile.lock is
- required.
-
- This is mainly to ensure that you remember to check your
- Gemfile.lock into version control.
-
- 2. The Gemfile.lock must be up to date
-
- In development, you can modify your Gemfile(5) and re-run bundle
- install to conservatively update your Gemfile.lock snapshot.
-
- In deployment, your Gemfile.lock should be up-to-date with changes
- made in your Gemfile(5).
-
- 3. Gems are installed to vendor/bundle not your default system
- location
-
- In development, it's convenient to share the gems used in your
- application with other applications and other scripts that run on
- the system.
-
- In deployment, isolation is a more important default. In addition,
- the user deploying the application may not have permission to
- install gems to the system, or the web server may not have
- permission to read them.
-
- As a result, bundle install --deployment installs gems to the
- vendor/bundle directory in the application. This may be overridden
- using the --path option.
-
-
-
-SUDO USAGE
- By default, Bundler installs gems to the same location as gem install.
-
- In some cases, that location may not be writable by your Unix user. In
- that case, Bundler will stage everything in a temporary directory, then
- ask you for your sudo password in order to copy the gems into their
- system location.
-
- From your perspective, this is identical to installing the gems
- directly into the system.
-
- You should never use sudo bundle install. This is because several other
- steps in bundle install must be performed as the current user:
-
- o Updating your Gemfile.lock
-
- o Updating your vendor/cache, if necessary
-
- o Checking out private git repositories using your user's SSH keys
-
-
-
- Of these three, the first two could theoretically be performed by
- chowning the resulting files to $SUDO_USER. The third, however, can
- only be performed by invoking the git command as the current user.
- Therefore, git gems are downloaded and installed into ~/.bundle rather
- than $GEM_HOME or $BUNDLE_PATH.
-
- As a result, you should run bundle install as the current user, and
- Bundler will ask for your password if it is needed to put the gems into
- their final location.
-
-INSTALLING GROUPS
- By default, bundle install will install all gems in all groups in your
- Gemfile(5), except those declared for a different platform.
-
- However, you can explicitly tell Bundler to skip installing certain
- groups with the --without option. This option takes a space-separated
- list of groups.
-
- While the --without option will skip installing the gems in the
- specified groups, it will still download those gems and use them to
- resolve the dependencies of every gem in your Gemfile(5).
-
- This is so that installing a different set of groups on another machine
- (such as a production server) will not change the gems and versions
- that you have already developed and tested against.
-
- Bundler offers a rock-solid guarantee that the third-party code you are
- running in development and testing is also the third-party code you are
- running in production. You can choose to exclude some of that code in
- different environments, but you will never be caught flat-footed by
- different versions of third-party code being used in different
- environments.
-
- For a simple illustration, consider the following Gemfile(5):
-
-
-
- source 'https://rubygems.org'
-
- gem 'sinatra'
-
- group :production do
- gem 'rack-perftools-profiler'
- end
-
-
-
- In this case, sinatra depends on any version of Rack (>= 1.0), while
- rack-perftools-profiler depends on 1.x (~> 1.0).
-
- When you run bundle install --without production in development, we
- look at the dependencies of rack-perftools-profiler as well. That way,
- you do not spend all your time developing against Rack 2.0, using new
- APIs unavailable in Rack 1.x, only to have Bundler switch to Rack 1.2
- when the production group is used.
-
- This should not cause any problems in practice, because we do not
- attempt to install the gems in the excluded groups, and only evaluate
- as part of the dependency resolution process.
-
- This also means that you cannot include different versions of the same
- gem in different groups, because doing so would result in different
- sets of dependencies used in development and production. Because of the
- vagaries of the dependency resolution process, this usually affects
- more than the gems you list in your Gemfile(5), and can (surprisingly)
- radically change the gems you are using.
-
-THE GEMFILE.LOCK
- When you run bundle install, Bundler will persist the full names and
- versions of all gems that you used (including dependencies of the gems
- specified in the Gemfile(5)) into a file called Gemfile.lock.
-
- Bundler uses this file in all subsequent calls to bundle install, which
- guarantees that you always use the same exact code, even as your
- application moves across machines.
-
- Because of the way dependency resolution works, even a seemingly small
- change (for instance, an update to a point-release of a dependency of a
- gem in your Gemfile(5)) can result in radically different gems being
- needed to satisfy all dependencies.
-
- As a result, you SHOULD check your Gemfile.lock into version control,
- in both applications and gems. If you do not, every machine that checks
- out your repository (including your production server) will resolve all
- dependencies again, which will result in different versions of
- third-party code being used if any of the gems in the Gemfile(5) or any
- of their dependencies have been updated.
-
- When Bundler first shipped, the Gemfile.lock was included in the
- .gitignore file included with generated gems. Over time, however, it
- became clear that this practice forces the pain of broken dependencies
- onto new contributors, while leaving existing contributors potentially
- unaware of the problem. Since bundle install is usually the first step
- towards a contribution, the pain of broken dependencies would
- discourage new contributors from contributing. As a result, we have
- revised our guidance for gem authors to now recommend checking in the
- lock for gems.
-
-CONSERVATIVE UPDATING
- When you make a change to the Gemfile(5) and then run bundle install,
- Bundler will update only the gems that you modified.
-
- In other words, if a gem that you did not modify worked before you
- called bundle install, it will continue to use the exact same versions
- of all dependencies as it used before the update.
-
- Let's take a look at an example. Here's your original Gemfile(5):
-
-
-
- source 'https://rubygems.org'
-
- gem 'actionpack', '2.3.8'
- gem 'activemerchant'
-
-
-
- In this case, both actionpack and activemerchant depend on
- activesupport. The actionpack gem depends on activesupport 2.3.8 and
- rack ~> 1.1.0, while the activemerchant gem depends on activesupport >=
- 2.3.2, braintree >= 2.0.0, and builder >= 2.0.0.
-
- When the dependencies are first resolved, Bundler will select
- activesupport 2.3.8, which satisfies the requirements of both gems in
- your Gemfile(5).
-
- Next, you modify your Gemfile(5) to:
-
-
-
- source 'https://rubygems.org'
-
- gem 'actionpack', '3.0.0.rc'
- gem 'activemerchant'
-
-
-
- The actionpack 3.0.0.rc gem has a number of new dependencies, and
- updates the activesupport dependency to = 3.0.0.rc and the rack
- dependency to ~> 1.2.1.
-
- When you run bundle install, Bundler notices that you changed the
- actionpack gem, but not the activemerchant gem. It evaluates the gems
- currently being used to satisfy its requirements:
-
- activesupport 2.3.8
- also used to satisfy a dependency in activemerchant, which is
- not being updated
-
- rack ~> 1.1.0
- not currently being used to satisfy another dependency
-
- Because you did not explicitly ask to update activemerchant, you would
- not expect it to suddenly stop working after updating actionpack.
- However, satisfying the new activesupport 3.0.0.rc dependency of
- actionpack requires updating one of its dependencies.
-
- Even though activemerchant declares a very loose dependency that
- theoretically matches activesupport 3.0.0.rc, Bundler treats gems in
- your Gemfile(5) that have not changed as an atomic unit together with
- their dependencies. In this case, the activemerchant dependency is
- treated as activemerchant 1.7.1 + activesupport 2.3.8, so bundle
- install will report that it cannot update actionpack.
-
- To explicitly update actionpack, including its dependencies which other
- gems in the Gemfile(5) still depend on, run bundle update actionpack
- (see bundle update(1)).
-
- Summary: In general, after making a change to the Gemfile(5) , you
- should first try to run bundle install, which will guarantee that no
- other gem in the Gemfile(5) is impacted by the change. If that does not
- work, run bundle update(1) bundle-update.1.html.
-
-SEE ALSO
- o Gem install docs
- http://guides.rubygems.org/rubygems-basics/#installing-gems
-
- o Rubygems signing docs http://guides.rubygems.org/security/
-
-
-
-
-
-
- July 2020 BUNDLE-INSTALL(1)