0

ここでは初めてのRubyユーザーであり、Jekyllがその理由です。

まず、RVMを(Ubuntu Server 12.04 64ビットに)インストールしました。

\curl -L https://get.rvm.io | bash -s stable

source ~/.profileそして、インストールプロセス(たとえば、に追加する)のガイドに従って、後続の指示に従います~/.bash_profile私が従った完全な指示はここにあります。

コマンドの出力を読み取りrvm requirements、必要なすべてのバイナリをインストールしました。

次のコマンドを次々に発行して、Ruby 1.9.3をインストールし、それを使用するようにRVMを構成してから、RubyGemsをインストールしました。

rvm install 1.9.3
rvm use 1.9.3
rvm rubygems current

Ruby1.9.3ruby --versionを使用していることを確認するために実行しました。

次に、gemを使用してJekyllをインストールしました。

gem install jekyll

公式のJekyllリポジトリから提供されたjekyll/siteのコンテンツをコピーして基本的なサイト構造を設定し、に必要な変更を加え_config.ymlますCNAME

つまりね!実行するjekyll --serverと、同じ古いTCP / Webrickエラーが発生します(ただし、どのソリューションも機能しません)。

したがって、Jekyll wikiが言うように、それはおそらくこれです:

DebianまたはUbuntuでは、パスに追加する必要がある場合があり/var/lib/gems/1.8/bin/ます。

問題は:

  1. 私の場合、/var/lib/gems/...存在しません。おそらく、Ruby、RubyGemsをすべてRVMを使用してインストールしたためです。それで、私の場合の道は何でしょうか?

  2. 繰り返しますが、私がパスを知っている場合、どのように「あなたのパスに追加する」こと/var/lib/gems/*.*/bin/になっていますか?

4

1 に答える 1

1

まず第一に、あなたが意味するなら、あなたはこの問題を無視することができます

[2012-04-21 13:46:40] WARN  TCPServer Error: Address already in use - bind(2)

これは、RubyGemsの最新バージョンのjekyllにあるバグのあるコードが原因ですが、githubの最新コードでは修正されているようです。jekyllによって作成されたサーバーは、IPv4( '0.0.0.0')とIPv6('::')の両方でバインドしようとするため、最初のバインドは成功し、IPv6でのバインドは失敗し、警告がログに記録されます。

~/.rvmディレクトリ内のjekyll実行可能ファイルを見てください。おそらく~/.rvm/gems/ruby-1.9.3-p392/gems/jekyll-0.12.1/bin/jekyll288行目です。

s = HTTPServer.new(
  :Port            => options['server_port'],
  :MimeTypes       => mime_types
)

これHTTPServerがですWEBrick::HTTPServer。jekyllは:BindAddress設定を指定せずにサーバーを作成します。また、バインドアドレスはnilデフォルトとして設定されています。

WEBrickはSocket.getaddrinfo、指定されたバインドアドレスから実際のアドレスを取得するために呼び出します。バインドアドレスは、アドレスで渡されると、nilIPv4( '0.0.0.0')とIPv6('::')の両方のワイルドカードアドレスを返します。その後、WEBrickはTCPServer.new(address, port)TCPServerを作成するために呼び出します。そして、これがTCPServer Error発生する場所です。

詳細については、WEBrick::Utils.create_listeners

于 2013-03-25T16:36:08.970 に答える