解決したいこと
EC2にrubyをインストールするため「rbenv」をgit cloneしてパスを通すはずだったが、「-bash: rbenv: コマンドが見つかりません」と怒られていました。
環境
- EC2インスタンス
- Amazon Linux2
- t2.micro
- Git:git version 2.23.3
原因
そもそも、git cloneするものを間違えていた。git cloneするものが、自分がデプロイするプロジェクトと勘違いしていました。
解決策
ディレクトリを削除し追加!ここからは私の思考過程をご覧ください。
[ec2-user@IPアドレス ~]$ ls
portfolio_development
# これを消したい。
[ec2-user@IPアドレス ~]$ rm portfolio_development
rm: `portfolio_development' を削除できません: Is a directory
# なぬ。
[ec2-user@IPアドレス ~]$ rm -rf portfolio_development/
# ディレクトリごと消したい場合は、「-rf」なのね。
[ec2-user@IPアドレス ~]$ ls
# 消したことを確認。
[ec2-user@IPアドレス ~]$ git status
# git statusでgit管理下にあるファイル・ディレクトリを確認したが、結構ファイル残ってるな。
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
.bash_history
.bash_logout
.bash_profil
.bash_profile
.bashrc
.cache/
.rbenv/
.ssh/
.viminfo
nothing added to commit but untracked files present (use "git add" to track)
[ec2-user@IPアドレス ~]$ git clean -f
# 強制的に消去!
Removing .bash_history
Removing .bash_logout
Removing .bash_profil
Removing .bash_profile
Removing .bashrc
Removing .viminfo
[ec2-user@IPアドレス ~]$ git status
# 再度確認。しかしディレクトリが残っている。
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
.cache/
.rbenv/
.ssh/
nothing added to commit but untracked files present (use "git add" to track)
[ec2-user@IPアドレス ~]$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
fatal: destination path '/home/ec2-user/.rbenv' already exists and is not an empty directory.
# 当然空のディレクトリじゃないので怒られる。
[ec2-user@IPアドレス ~]$ git clean -df
Removing .cache/
Skipping repository .rbenv/
Removing .ssh/
[ec2-user@IPアドレス ~]$ git status
# 最後にこれが残っていたか、、、
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
.rbenv/
nothing added to commit but untracked files present (use "git add" to track)
[ec2-user@IPアドレス ~]$ git clean .rbenv/
# これで消せるか?
fatal: clean.requireForce defaults to true and neither -i, -n, nor -f given; refusing to clean
# だめか。消したいなら強制的に消すコマンド使えよって。
[ec2-user@IPアドレス ~]$ git clean -f .rbenv/
Removing .rbenv/.DS_Store
Removing .rbenv/.browserslistrc
Removing .rbenv/.gitignore
Removing .rbenv/.ruby-version
Removing .rbenv/Gemfile
Removing .rbenv/Gemfile.lock
Removing .rbenv/README.md
Removing .rbenv/Rakefile
Removing .rbenv/babel.config.js
Removing .rbenv/config.ru
Removing .rbenv/ja.js
Removing .rbenv/package.json
Removing .rbenv/postcss.config.js
Removing .rbenv/yarn.lock
# やったか・・・?
[ec2-user@IPアドレス ~]$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
.rbenv/
nothing added to commit but untracked files present (use "git add" to track)
# なぜまだ生きている(残っている)・・・?!
[ec2-user@IPアドレス ~]$ git clean -n
# ステージングでないファイル・ディレクトリをこのコマンドで一掃。
[ec2-user@ip-10-0-0-235 ~]$ git init
# 初期化してみる。
Reinitialized existing Git repository in /home/ec2-user/.git/
[ec2-user@ip-10-0-0-235 ~]$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
.rbenv/
nothing added to commit but untracked files present (use "git add" to track)
# なん・・・だと?!
[ec2-user@ip-10-0-0-235 ~]$ git clean -dfn
Would skip repository .rbenv/
# 消去したいファイル・ディレクトリを確認
[ec2-user@ip-10-0-0-235 ~]$ git clean -f
# ステージングでないファイル・ディレクトリをこのコマンドで一掃。
[ec2-user@ip-10-0-0-235 ~]$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
.rbenv/
nothing added to commit but untracked files present (use "git add" to track)
[ec2-user@ip-10-0-0-235 ~]$ rm -rf ~/.rbenv
# ディレクトリを指定し強制消去。
[ec2-user@ip-10-0-0-235 ~]$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
Cloning into '/home/ec2-user/.rbenv'...
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 2852 (delta 0), reused 1 (delta 0), pack-reused 2847
Receiving objects: 100% (2852/2852), 550.44 KiB | 782.00 KiB/s, done.
Resolving deltas: 100% (1781/1781), done.
[ec2-user@ip-10-0-0-235 ~]$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
[ec2-user@ip-10-0-0-235 ~]$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
[ec2-user@ip-10-0-0-235 ~]$ source .bash_profile
[ec2-user@ip-10-0-0-235 ~]$ rbenv -v
rbenv 1.1.2-30-gc879cb0
# 無事に完了!
感想
ちょっと疲れました。EC2にGitを入れても、基本的な考えは全く変わらないんだと痛感。以前もGitの勉強で、「ディレクトリを削除する」だけなのに1時間くらいかかった時がありました。でも今回それが(色々忘れてましたのでググりながらやりました)15分で終わったので成長を感じました。もっとスピード上げて頑張ります👊
あとは、いきなり「EC2 Git エラー内容」で調べるのではなく、「そもそもGitコマンド使えてるー?」ってところから「Git ディレクトリ 削除」と調べてやってみると案外すんなり行きました。これが「問題の切り分け」「段階ごとの調査」ってことかな?と思いました。
参考記事
Gitのrmコマンドの使い方【画面キャプチャでわかりやすく】
Git clone についてなのですが、1回目不具合で作業を中止して、もう一度やり直しを...
[-bash: rbenv: コマンドが見つかりません]aws(ec2)上のrbenvの初期設定エラーの解決方法