【问题标题】:Private gem server - dependencies not being found on server (404)私有 gem 服务器 - 在服务器上找不到依赖项 (404)
【发布时间】:2016-07-01 04:29:27
【问题描述】:

RubyGems site 让运行私有 gem 服务器听起来很容易!

我的测试设置是这样的:一个 AWS EC2 实例是我的工作站,我已经设置了另一个作为 gem 服务器。

在 gem 服务器实例上,我安装了 pry gem。如果我在该实例上运行 gem server 并在我的 Web 浏览器中访问公共 DNS,我可以看到 pry 以及 gem 列表中的所有依赖项。

在我的工作站上,我用一个简单的 Gemfile 创建了一个假应用目录:

source "http://ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com:8808"

gem "pry"

看起来很简单!但是当我在工作站上运行bundle install 时,出现以下错误:

[ec2-user@ip-172-31-20-246 my_app]$ bundle
Fetching source index from http://ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com:8808/
Resolving dependencies...

Gem::RemoteFetcher::FetchError: bad response Not Found  404 (http://ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com:8808/gems/coderay-1.1.1.gem)

Gem::RemoteFetcher::FetchError: bad response Not Found  404 (http://ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com:8808/gems/method_source-0.8.2.gem)

Gem::RemoteFetcher::FetchError: bad response Not Found  404 (http://ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com:8808/gems/slop-3.6.0.gem)
Using bundler 1.12.5
An error occurred while installing coderay (1.1.1), and Bundler cannot continue.
Make sure that `gem install coderay -v '1.1.1'` succeeds before bundling.

所以它似乎识别出pry 可用,但找不到以coderay 开头的依赖项(404 错误)。

我在运行gem server 时修改了--dir 标志,使其看起来像这样:

gem server --dir=/home/ec2-user/.gem/ruby/2.0 --dir=/usr/share/ruby/gems/2.0 --dir=/home/ec2-user/.gem/ruby/2.0/cache/

...我什至已经进入这些目录并运行gem generate_index,正如我在另一个问题上看到的那样,但我仍然无法在我的工作站上安装pry,使用这个私人服务器作为source .

我有什么遗漏吗??

【问题讨论】:

    标签: ruby amazon-ec2 rubygems bundler


    【解决方案1】:

    几乎每颗宝石都依赖于其他宝石。如果您只想从私有 gem 服务器安装 gem,并且不允许使用 https://rubygems.org 的默认服务器作为后备,那么您必须确保正确版本的所有其他 gem 在您的私有 gem 上可用服务器也是。

    您可以检查the pry page on rubygems 以查看其依赖项。目前pry ('0.10.3') 依赖于:

    • coderay ('~> 1.0.0')
    • method_source ('~> 0.8.1')
    • slot ('~> 3.4')

    在您的私有 gem 服务器上也提供此依赖项,以删除该 gem 的 Gem::RemoteFetcher::FetchError: bad response Not Found 404 错误。

    在下一步中,您需要深入挖掘并使所有 gem 可用,这三个 gem 依赖于:coderay 没有外部依赖项,但 method_source 有一些,也安装它们。继续,直到依赖关系树中不再缺少 gem。

    【讨论】:

    • 是的,我意识到所有依赖项也需要在我的 gem 服务器上。显然coderaypry 的其他直接依赖项在我的服务器上;否则不会安装pry。所以问题是:为什么没有找到coderay
    猜你喜欢
    • 2018-12-23
    • 1970-01-01
    • 2019-03-22
    • 2018-11-01
    • 2021-06-02
    • 2021-07-02
    • 1970-01-01
    • 2017-01-03
    • 2012-07-02
    相关资源
    最近更新 更多