3

超初心者で何を言っているのかわからないのでご容赦ください。

ここで説明されているように、Jekyll サイトをデプロイするために Git post-receive フックをセットアップしようとしています。その内容は

#!/usr/bin/env sh

GIT_REPO=$HOME/git/jekyll.git
TMP_GIT_CLONE=$HOME/tmp/jekyll
PUBLIC_WWW=$HOME/public_html

echo $PATH

git clone $GIT_REPO $TMP_GIT_CLONE
cd $TMP_GIT_CLONE
echo "Run jekyll"
jekyll --no-auto $TMP_GIT_CLONE $PUBLIC_WWW
cd $HOME
echo "Remove temporary dir..."
rm -Rf $TMP_GIT_CLONE
echo "Temporary dir removed."
exit

PATHトラブルシューティングの目的でエコーしています。ssh経由でログインし、スクリプトを手動で実行すると~/git/jekyll.git/hooks/post-receive、すべてが正常に機能し、コンソールが読み取ります

remote$ ~/git/jekyll.git/hooks/post-receive
/usr/local/jdk/bin:/home7/contenw6/.rvm/gems/ruby-1.9.3-p194/bin:/home7/contenw6/.rvm/gems/ruby-1.9.3-p194@global/bin:/home7/contenw6/.rvm/rubies/ruby-1.9.3-p194/bin:/home7/contenw6/.rvm/bin:/usr/local/jdk/bin:/home7/contenw6/perl5/bin:/usr/lib64/qt-3.3/bin:/home7/contenw6/perl5/bin:/ramdisk/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11R6/bin:/home7/contenw6/ruby/gems/bin:/home7/contenw6/bin:/usr/local/bin:/usr/X11R6/bin:/home7/contenw6/ruby/gems/bin:/home7/contenw6/.rvm/bin
Cloning into '/home7/contenw6/tmp/jekyll'...
done.
Run jekyll
Configuration from /home7/contenw6/tmp/jekyll/_config.yml
Building site: /home7/contenw6/tmp/jekyll -> /home7/contenw6/public_html
Successfully generated site: /home7/contenw6/tmp/jekyll -> /home7/contenw6/public_html
Remove temporary dir...
Temporary dir removed.

ただし、git push deploy masterラップトップからすると、次のエラーが表示されます。

laptop$ git push deploy master
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 305 bytes, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: /usr/libexec/git-core:/usr/local/jdk/bin:/ramdisk/bin:/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin:/home7/contenw6/ruby/gems/bin:/home7/contenw6/.rvm/bin:/home7/contenw6/.rvm/bin
remote: Cloning into '/home7/contenw6/tmp/jekyll'...
remote: done.
remote: Run jekyll
remote: /home7/contenw6/ruby/gems/gems/yajl-ruby-1.1.0/lib/yajl/yajl.so: [BUG] Segmentation fault
remote: ruby 1.8.7 (2012-02-08 MBARI 8/0x6770 on patchlevel 358) [x86_64-linux], MBARI 0x6770, Ruby Enterprise Edition 2012.02
remote: 
remote: hooks/post-receive: line 14: 30293 Aborted                 jekyll --no-auto $TMP_GIT_CLONE $PUBLIC_WWW
remote: Remove temporary dir...
remote: Temporary dir removed.
To contenw6@contentioninvain.com:~/git/jekyll.git
   154f467..80c8fcb  master -> master

post-receiveの結果としてフックが実行されるとgit push、間違ったルビ (1.8.7、おそらくシステムのもの?) が使用されているようです。PATH変数はインスタンスごとに異なることに注意してください。

それが問題なら、それは私が理解できる限りです。これを修正するにはどうすればよいですか?

4

2 に答える 2

2

それで:

1) あなたのシバンは/usr/bin/env sh- これは RVM と互換性のあるシェルではありませんzshbash

2) 何らかの方法で RVM を使用する必要がありsshます。既に RVM を使用してログインしている~/.bash_profileが、スクリプトで RVM をロードしていない場合は、次のシェバンを試してください。

/home7/contenw6/.rvm/bin/rvm-shell 1.9.3-p194
于 2013-02-20T11:52:20.060 に答える
0

git master を実行しているユーザーは、rvm で適切に Ruby をセットアップしていません。

まず、リモートで Git を実行しているユーザーを特定する必要があります ("git" というユーザーである可能性があります)。ユーザーが見つかったら、~/.rvm/ディレクトリをそのユーザーのホーム ディレクトリにコピーします。たとえば、ユーザー名が bob で、git を実行しているユーザーの名前が gitter の場合、次の手順を実行する必要があります。

sudo rm -rf /home/gitter/.rvm
sudo cp -R /home/bob/.rvm/ /home/gitter

ホームに .rvm ディレクトリがない場合は、次の方法が役に立ちます。

sudo rm -rf /home/gitter/.rvm

お役に立てれば。

于 2013-02-20T07:38:35.090 に答える