慣れないことをする時に、慎重になり過ぎてなかなか進捗しないということがある。慣れている人からしたら、それをするとどうなるか予見できるので、ぐずぐずしてる人を見るとイライラしてしまうもの。ただ、本人からすれば、これを実行して大丈夫なのか心配でしょうがなかったりする。サーバーの遠隔操作もしかりで、rm -rf directory
とか、打ってしまうともう後戻りできない部類のものがある。
最近、さくらレンタルサーバでSSHでログインして、色んなプログラム導入しようと色々弄っていた。VPSではない共用サーバーなので、パーミションなど制約が多いなかで実現させようとするとかなりハードルが高くなる。そんな中、ホスト側で用意してくれている Git コマンドでは、サブモジュールがインストールできないということで、最新版の Git 2.19.0 を自分専用で使えるように試みた。Git をコンパイルしたのは良いが、SSL のライブラリの紐付けがうまく行かなかったようで、https で始まるリポジトリにアクセスするとエラーが出るようになった。そこで、cURL をコンパイルして、Git に紐付けしながら Git をコンパイルさせようとしていたのだが、問題が生じた。
cURL は 7.62.0。これをコンパイルすることはできたが、いざ実行すると、エラーも吐かず、動作しない。7.61.1 だとコンパイル時にエラー。7.46.0 に落とすとコンパイルできた。しかし、実行すると、Certificate が無いというエラーが出る。一旦やり直そうと、git, curl のファイルを ~/local/bin から削除。再ログイン。これで、サーバー側のデフォルトのコマンドが使用されるはず。しかし、git のコマンドを打つと、ssl 関連のエラーが出るようになった。
1 2 3 4 |
% git clone https://github.com/WordPress/WordPress.git Cloning into 'WordPress'... fatal: unable to access 'https://github.com/WordPress/WordPress.git/': SSL certificate problem: unable to get local issuer certificate |
これはさくらサーバが用意した初期状態の git コマンドでは起こらない。
1 2 3 4 5 |
% git --version git version 2.7.0 % which git /usr/local/bin/git |
何もカスタマイズしていない他の契約アカウントでログインし、同じように git clone
をしてみても正常に動く。つまり、何か良からぬ変更を加えてしまったということだ。
当面の対処として、
1 2 |
setenv GIT_SSL_NO_VERIFY 1 |
を .cshrc
に加えることでエラーは回避できるが、根本的な解決にはならない。cURL 関連の変更で、PHP の方に影響を与えていなければ良いのだが・・・(参考: Skip GIT SSL Verification)
とにかく、取り返しのつかない作業というものがあり、「ま、やってみてだめだったらやり直せばいい」という考えが通用しないことがある。特に、PC周りはそういう落とし穴が結構ある。PC初心者が、「これ、わかんな~い」と投げ出してしまうのをよく見るが、それは、未知の危険に対する自己防衛であり、生物として真っ当な反応である。