Binbundle
Creates a “bundle” file of all installed gems with executables for easy restore on a new system.
Creates a “bundle” file of all installed gems with executables. The resulting file is an executable script that can be run standalone, or in combination with this script to add options like sudo
or --user-install
to the gem install
commands. These options can be specified when creating the file as well. A file created with sudo
or --user-install
commands can still be overridden when running via this script and --install
.
Created file is called Binfile
in the current directory unless another path is specified with --file
.
Installation
Install with:
$ gem install binbundle
If this causes errors, use:
$ gem install --user-install binbundle
Usage
Run binbundle bundle
to create a Binfile in the current directory, or with --file FILENAME
to specify a path/filename. That file can optionally be made executable (you’ll be prompted). In the future when doing a clean install or using a new system, you can just run that file as a standalone to reinstall all of your gem binaries.
Example:
binbundle bundle --file ~/dotfiles/Binfile
Using this script with the install
subcommand will read the Binfile and execute it line by line, adding options like version numbers, sudo, or the --user-install
flag, overriding any of these specified when bundling.
Example:
binbundle install --no-versions --user-install --file ~/dotfiles/Binfile
You can also run with subcommands bundle
or install
, e.g. bundle_gem_bins install
.
Options
Usage: binbundle [options] [bundle|install]
--[no-]versions Include version info in output (default true)
--dry-run Output to STDOUT instead of file
-s, --sudo Install gems with sudo
-u, --user-install Use --user-install to install gems
-f, --file FILE Output to alternative filename (default Binfile)
-l, --local Use installed gems instead of Binfile for gem_for and bins_for
-v, --version Display version
-h, --help Display this screen
Info commands
You can retrieve some basic info about gems and their binaries using binbundle gem for BIN
or binbundle bins for GEM
. This will read Binfile
or any file specified by --file
and return the requested info, either the gem associated with the given binary (BIN), or the binaries associated with the given gem name (GEM).
Use either info command with --local
to parse installed gems rather than a Binfile.
Recommendations
I recommend using Binbundle along with a tool like Dotbot. Commit your bundle to a repo that you can easily clone to a new machine and then make gem install binbundle
and binbundle install ~/dotfiles/Binfile
part of your restore process.
Changelog
Click to expand
1.0.10
2024-08-04 13:00
IMPROVED
- When installing, test if the gem/version is already installed and skip
- When installing, verify that the specified gem exists on the host before running the install command. Adds a pause before execution, but saves a lot of time looking up missing gems.
1.0.9
2024-08-02 10:42
NEW
binbundle gem for BIN
will show what gem is responsible for a binarybinbundle bins for GEM
will show what binaries a gem installs
1.0.8
2024-08-02 09:23
IMPROVED
- Updates for automation
- Fix tests and rubocop warnings
1.0.7
2024-08-02 09:15
IMPROVED
- Updates for automation
- Fix tests and rubocop warnings
1.0.6
- Add spinners
[0.1.0] - 2024-08-01
- Initial release
Speaking of Binbundle…