2012-06-20 1 views
17

を発見していない私は、八から五倍程度のこの答えを読んだが、私が正しく理解していないよ何かがあります:gitのアップロードパック:コマンド

git-upload-pack: command not found, how to fix this correctly

私はリポジトリのクローンを作成しようとすると、私のサーバー上で、私は次の取得:

bash: git-upload-pack: command not found 

しかし、私はクローンに-u /usr/local/bin/git-upload-packオプションを与えることによって、クローンを作成する場合、すべてがうまく動作します。

これは私のサーバー上のgit-upload-packの位置なので、これは意味があると思います。

ssh [email protected] echo \$PATHの結果が/usr/local/binを返さないため、トップの回答はサーバーの私の.bashrcファイルを更新する必要があることを示しています。 (それは/usr/bin:/bin:/usr/sbin:/sbinを返します)。

しかし、私は私の.bashrcファイルを見ると、それは含まれています

export PATH=/usr/local/bin:$PATH 

は、だから今、私は混乱しています。

いつでも-u /usr/local/bin/git-upload-packオプションを使用しないようにするにはどうすればよいですか? ssh [email protected] echo \$PATHはなぜ返されません/usr/local/bin?これはログインと非ログインのシェルと関係がありますか?

助けてください!前もって感謝します。

+0

参照[ 'bash'マニュアルのこの部分](http://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files) – kostix

答えて

23

を見つけることができます:対話モードに行かずにコマンドを送信するときに

https://serverfault.com/questions/130834/svnssh-getting-bash-to-load-my-path-over-ssh

SSHは、デフォルトでは、ご使用の環境をロードしていません。中

は、/ etc/ssh/sshd_config追加:

良い解決策はの.ssh/environmentファイルを有するものである

PermitUserEnvironment yes 

は、それからちょうどの.ssh /ディレクトリを作成しにenvronmentをダンプします。SSH /的環境:

cd ~/ 
mkdir .ssh 
env > .ssh/environment 

再起動SSH

/etc/init.d/sshd restart 

あなたがローカルマシンからこれを行うとき:今

ssh [email protected] "which git-upload-pack" 

あなたは

/usr/local/bin/git-upload-pack 

を取得s'dし、 git clone s'd work。

+1

私はsshを使って私のMacでgit repoにアクセスしようとしていました。私は/ etc/ssh/sshd_configを編集して "PermitUserEnvironment yes"を追加し、システム環境設定 - >共有 - >ログインの削除を通してsshdを再起動しなければなりませんでした。 .ssh /環境ファイルを作成する必要はありませんでした。 – user674669

+0

restartコマンドの入力ミスのようです。それはしないでください:/etc/init.d/ssh restart? – javydreamercsw

11

はい、これはログインシェルと非ログインシェルとの関係です。 .bashrcファイルは、ログインしていないシェルでのみ読み込まれます。ログインシェルには.bash_profileを使用できます。 .bash_profileファイルのPATHに同じ修正を加えるだけでよいはずです。

export PATH=/usr/local/bin:$PATH 

あなたはこれが、この問題に接続されているthis is an interesting article on the difference between .bashrc and .bash_profile, and login and non-login shells.

+0

ありがとう!理にかなっていますが、私にとってはうまくいかないようです。私の '.bash_profile'と' .bashrc'には 'export PATH =/usr/local/bin:$ PATH'というコードが含まれていますが、これはやっていません。 '/ usr/bin:/ bin:/ usr/sbin:/ sbin'を' ssh you @ remotemachine echo \ $ PATH'はまだ返します。 考えられる理由は? (推測) 1.私はMedia Templeサーバー上にあり、.bash_mt_profileファイルがあります。 2.私は、rootとしてログインしています:(良い測定のための$ PATH'、動作していないようでした。しかし、私は '輸出PATH =/usr/local/binを追加しました。)。 3. I bashを使用して(しかし、ときに私がログインしていないよ、それは私がシステムメッセージを削除するには、私の '.bash_profile'を編集することができます言う – Chris

+0

@クリス:。関心のうち、あなたの' .bash_profile'/'.bashrcのを行います'ファイルはパーマネントが644に設定され、正しいユーザーが所有し、実行可能ビットは設定されていませんか? ファイルはソースで実行されませんが、ソースを試行しているユーザーが所有し、 これらをチェックしても問題が解決しない場合は、PATHの変更を '/ etc/profile'や'/etc/profile.d/* '(あなたのディストリビューションに応じて)に追加してみてください。 –

+0

もう一度ありがとうございました。はい、permsは644です。とにかくリセットしました。動作しませんでした。 '/ etc/profile.d /'に 'export PATH =/usr/local/bin:$ PATH'(これは正しいものですd o?)、どちらもうまくいきませんでした。私は盲目的に何かをしていないと仮定することができます。 – Chris

0

私は次のエラーを得ていた。 git-credential-osxkeychain died of signal 11 私はgitのプルやっていた、私はそれがキーチェーンに私の前の無効githubの資格としなければならなかった推測してい fatal: https://github.com/.../../info/refs?service=git-upload-pack not found: did you run git update-server-info on the server?

になるだろう。

  • は、キーチェーンアクセスツールにgithubの検索コマンド・スペースを使用して
  • オープンキーチェーンアクセスツール
  • は、セットアップのgitパスワードを踏襲し(私はもはやそれを必要としないので)githubのに関連するすべてのエントリを削除キャッシングのセクションには、再びsetup git
  • それは上記の回答のいずれかの問題が解決しない包みなさい

を働きました。

1

この問題に対する私の解決策リモートマシン上のgit - アップロードパック用

  1. チェックパス:

    ssh [email protected] 'which git-upload-pack' 
    

それがパスを与える場合 - それをコピー(git-upload-packおよび末尾のスラッシュなし。例:/usr/bin,,/whatever/gituploadpack/pathなど)。

  1. は、ログインシェルの間に、リモートマシン上のPATHを確認します。

    ssh [email protected] 'echo $PATH' 
    

を、このようなパス(/whatever/gituploadpack/path)決してありませんが、そうではありませんか?良い!あなたのリモートマシンへ

  1. ログイン:

    ssh [email protected] 
    
  2. オープン。bashrc_profile:

    nano /home/yourname/.bashrc_profile 
    
  3. は、これらの行があれば検索:

    if [ -f ~/.bashrc ]; then 
        ~/.bashrc 
    fi 
    

を...とのためにそれらを変更します。

if [ -f ~/.bashrc ]; then 
     source ~/.bashrc 
    fi 
  1. オープンの.bashrc:

    nano /home/yourname/.bashrc 
    
  2. これらの4行を追加します。

    if [ -d "/whatever/gituploadpack/path" ] ; then 
        PATH="$PATH:/whatever/gituploadpack/path" 
    fi 
    export PATH 
    
  3. 終了し、リモートマシン:

    exit 
    
  4. は、リモートマシン上であなたのPATHを確認し、ログインシェルの間:

    ssh [email protected] 'echo $PATH' 
    

/whatever/gituploadpack/pathが表示されますか?おめでとう!

ここではgit-upload-packの問題だけでなく、git-receive-packと他の実行ファイルも/whatever/gituploadpack/pathに解決しました。

2

私は、リモートマシンにログインすることで、私の場合にはUbuntuのボックスをこの問題を解決し、そしてsudo apt-get install gitを行います。これが過不足であるかどうかはわかりませんが、すぐに私の問題を解決しました。

関連する問題