2011年5月29日日曜日

git-upload-pack: not found のとき

自分でgitをインストールしたサーバーにレポジトリを作って、ローカルからgit+sshでcloneしたら怒られた。そんな時の対策。

現象
$ git clone ssh://username@server/~/myrepo.git
bash: git-upload-pack: command not found
fatal: The remote end hung up unexpectedly

サーバーにログインして確認してみると、git-upload-packへのパスはちゃんと通っている。
$ which git-upload-pack
/home/username/local/bin/git-upload-pack

なぜ?
それは、ssh経由でログインした場合、PATHを.bashrcに設定したとしても読み込まれないのが原因。

対策A
--upload-packオプションで毎回指定する

git clone --upload-pack=/home/username/local/bin/git-upload-pack ssh://username@server/~/myrepo.git


対策B
git-configでサーバーのgit-upload-packのパスをconfigに書きこむ
git config remote.origin.uploadpack /home/username/local/bin/git-upload-pack

2011年5月22日日曜日

さくらのスタンダードプランでWebSocket

さくらインターネットのスタンダードプランで、WebSocketサーバーを実行してみたらうまく行った、という話。

使う物
  1. Ruby 最新版でいいだろう。

  2. RubyGems これも最新版でいいだろう。

  3. rev-websocket



手順
  1. node.jsのインストール → 失敗
  2. 定番WebSocketサーバーのnode.jsはport絡みのファイルの書き込み権限の問題で断念。
    きっとVPSならそんな心配はないのだろう。
  3. ローカルへのRubyのインストール

  4. $ wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p180.tar.bz2
    $ tar jxvf ruby-1.9.2-p180.tar.bz2
    $ cd ruby-1.9.2-p180
    ホームディレクトリ直下のlocalにインストールする。
    $ ./configure --prefix=$HOME/local
    $ make
    $ make install

  5. インストールしたRubyへのパスを設定する

  6. .bash_profile(.bashrc派の人もいるかな)に以下を記述
    前略
    export PATH=$HOME/local/bin:$PATH

    $ . .bash_profile

  7. RubyGemsをインストール

  8. $ wget http://rubyforge.org/frs/download.php/74886/rubygems-1.8.3.tgz
    $ tar zxvf rubygems-1.8.3.tgz
    $ cd rubygems-1.8.3
    $ ruby setup.rb

  9. rev-websocketをインストール

  10. $ gem install rev-websocket


    以下は動作テスト。

  11. rev-websocketのサンプルを~/wwwにコピー

  12. $ cp -r ~/local/lib/ruby/gems/1.9.1/gems/rev-websocket-0.1.3/examples/public ~/www
    $ cd ~/www/public

    エディタでecho.htmlを開く
    WS_URL = "ws://localhost:8081"; を WS_URL = "ws://サーバーのホスト名:8081"; に修正

  13. rev-websocketのサンプルのechoサーバーを起動

  14. $ ruby ~/local/lib/ruby/gems/1.9.1/gems/rev-websocket-0.1.3/examples/echo.rb
    start on 0.0.0.0:8081

  15. Webブラウザーでrev-websocketのサンプルにアクセス

  16. http://ホスト名/public/echo.html
    こんな表示が出ればOKだ。
    server: Hello, world!
    client: hello
    Sun May 22 2011 09:41:40 GMT+0900 (JST)connecting to ws://ホスト名:8081...
    Sun May 22 2011 09:41:40 GMT+0900 (JST)connected.
    Sun May 22 2011 09:41:40 GMT+0900 (JST)message sent: client: hello
    Sun May 22 2011 09:41:40 GMT+0900 (JST)message received: server: Hello, world!
    Sun May 22 2011 09:41:40 GMT+0900 (JST)message received: client: hello
    Sun May 22 2011 10:17:32 GMT+0900 (JST)disconnected...


さて、何を作ろうか?