Tar 一个打包器项目并发送到另一个系统
Tar a bundler project and send to another system
我有两个系统使用用 ruby 编写的相同命令行界面。一个系统正在使用与我们编写的脚本不兼容的旧版本。我们想使用 bundler 在我们自己的系统上下载 2.0
的所有依赖项,然后将 bundle
迁移到具有旧版本的系统,以便我们可以使用 2.0
还有。
我们无法在其他系统上选择 运行 bundle install
,因为它不对 Internet 开放。
所以这个想法在我的系统中:
bundle init
...写Gemfile
...
bundle install
tar -czf cli2.0.tar.gz ./Gemfile ./Gemfile.lock ./.bundle ./bundle
...移动cli2.0.tar.gz
到另一个系统...
在系统 B 上:
tar -zxf cli2.0.tar.gz
bundle exec cli2.0 version
但是此时我们收到一条错误消息,指出 bundler
找不到任何宝石,即使它们就在 ./bundle/ruby/2.3.0/
下!!
看起来他们安装了不同版本的 ruby
和 ruby-gems
。
可能值得尝试使您的第二个 Gemfile(无法访问互联网的那个)使用路径引用这些 Gem。
即
gem some_gem, path: "/home/you/some_path/some_gem"
有关详细信息,请参阅 this question。
如果您无法访问 Internet 但可以传输文件,那么也值得传输新版本 bundler/RubyGems 的源代码。
从同事那里得到了一些帮助,要点是我做错了。
如果您想传输 gems
并查看与 bundler
一致的性能,请执行此操作。
bundle install <gem>
bundle package
- 这会为已下载的 gem 创建缓存以供传输。
tar -czf ./transport.tar.gz ./Gemfile ./Gemfile.lock ./vendor
在下一台机器上:
tar -xzf ./transport.tar.gz
bundle exec <command>
我有两个系统使用用 ruby 编写的相同命令行界面。一个系统正在使用与我们编写的脚本不兼容的旧版本。我们想使用 bundler 在我们自己的系统上下载 2.0
的所有依赖项,然后将 bundle
迁移到具有旧版本的系统,以便我们可以使用 2.0
还有。
我们无法在其他系统上选择 运行 bundle install
,因为它不对 Internet 开放。
所以这个想法在我的系统中:
bundle init
...写Gemfile
...
bundle install
tar -czf cli2.0.tar.gz ./Gemfile ./Gemfile.lock ./.bundle ./bundle
...移动cli2.0.tar.gz
到另一个系统...
在系统 B 上:
tar -zxf cli2.0.tar.gz
bundle exec cli2.0 version
但是此时我们收到一条错误消息,指出 bundler
找不到任何宝石,即使它们就在 ./bundle/ruby/2.3.0/
下!!
看起来他们安装了不同版本的 ruby
和 ruby-gems
。
可能值得尝试使您的第二个 Gemfile(无法访问互联网的那个)使用路径引用这些 Gem。
即
gem some_gem, path: "/home/you/some_path/some_gem"
有关详细信息,请参阅 this question。
如果您无法访问 Internet 但可以传输文件,那么也值得传输新版本 bundler/RubyGems 的源代码。
从同事那里得到了一些帮助,要点是我做错了。
如果您想传输 gems
并查看与 bundler
一致的性能,请执行此操作。
bundle install <gem>
bundle package
- 这会为已下载的 gem 创建缓存以供传输。
tar -czf ./transport.tar.gz ./Gemfile ./Gemfile.lock ./vendor
在下一台机器上:
tar -xzf ./transport.tar.gz
bundle exec <command>