10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Railsチュートリアル第4版 第1章にて、Heroku CLIインストールで詰まった時のメモ

Last updated at Posted at 2018-04-08

概要

Railsチュートリアル第4版( https://railstutorial.jp/chapters/rails_flavored_ruby?version=5.1 )
第1章 1.5.1 Herokuのセットアップ にて、
Heroku CLIがすんなりインストールできなかったため、メモを残す。

環境

  • IDE: AWS Cloud9
    • EC2: Amazon Linux AMI release 2017.09
  • Rails: v5.1.4
  • Heroku CLI: 6.16.8-ae149be (linux-x64) node-v9.11.1

結論

Heroku CLIはstandaloneインストールしよう
https://devcenter.heroku.com/articles/heroku-cli#standalone-installation

調査メモ

1.5.1のセットアップスクリプトを実行

$ source <(curl -sL https://cdn.learnenough.com/heroku_install)

npmでnをインストールするステップで、SSL証明書に関するエラー(Error: UNABLE_TO_GET_ISSUER_CERT_LOCALLY)が発生
https://github.com/npm/npm/issues/20191

スクリプト実行前に、npm実行時、SSL証明書の制限を無視するよう設定してみる。

$ sudo npm config set strict-ssl false

再度セットアップスクリプトを実行
nはインストールできたが、heroku-cliのインストールでパーミッションのエラーが発生

$ source <(curl -sL https://cdn.learnenough.com/heroku_install)
(中略)
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules
npm WARN cli-engine-heroku@4.1.1 requires a peer of cli-engine-command@^8.0.0 but none is installed. You must install peer dependencies yourself.

npm ERR! path /usr/local/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access
npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR!  { Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR!   stack: 'Error: EACCES: permission denied, access \'/usr/local/lib/node_modules\'',
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/local/lib/node_modules' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

試しにsudo実行すると、下記エラーが発生

$ sudo /usr/local/bin/npm install -g heroku-cli
(中略)
/usr/local/lib/node_modules/npm/lib/utils/unsupported.js:28
        console.error(`a bug known to break npm. Please update to at least ${r
                      ^
SyntaxError: Unexpected token ILLEGAL
    at Module._compile (module.js:439:25)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at /usr/local/lib/node_modules/npm/bin/npm-cli.js:19:21
    at Object.<anonymous> (/usr/local/lib/node_modules/npm/bin/npm-cli.js:92:3)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)

パーミッションエラーを解決するために、npmを再インストールする必要があるようなので、一度yum removeしてからnvmで最新版を入れてみる
https://docs.npmjs.com/getting-started/fixing-npm-permissions

sudo yum remove nodejs npm
nvm install node
npm config delete prefix
nvm use v9.11.1
/usr/local/bin/npm install -g heroku-cli

※ この辺りで大分ごちゃごちゃnodejs,npm,n,nvmあたりを手あたり次第弄ったので、再現できる内容じゃないかも。

一応、npm installは成功
だが、インストール時のターミナルではherokuコマンドが使えるが、ターミナルを開き直すと、herokuコマンドが使えん。。。
恐らく.bash_profileのせいかな?でも、ちゃんとセットアップスクリプトで指定されたPATHは入れてるんだよな。。

$ cat ~/.bash_profile 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH
source $HOME/.nvm/nvm.sh
PATH=/usr/local/bin:$PATH

この辺で、そも今回の開発では使用しないNode.js周りに悩まされてる事に嫌気が差したので、、、

ちょっと視点を変えて、Herokuのマニュアルを当たってみる。
公式マニュアルによれば、npmでのインストールはnodeのバージョン次第で正常に動作しない可能性があるため、非推奨。
https://devcenter.heroku.com/articles/heroku-cli#npm

一旦、npmでheroku-cliを削除して、

/usr/local/bin/npm uninstall -g heroku-cli

推奨されているstandaloneインストールを試す。
https://devcenter.heroku.com/articles/heroku-cli#standalone-installation

wget https://cli-assets.heroku.com/heroku-cli/channels/stable/heroku-cli-linux-x64.tar.gz -O heroku.tar.gz
tar -xvzf heroku.tar.gz
mkdir -p /usr/local/lib /usr/local/bin
sudo mv heroku-cli-v6.16.8-ae149be-linux-x64 /usr/local/lib/heroku
sudo ln -s /usr/local/lib/heroku/bin/heroku /usr/local/bin/heroku

解決!!

$ heroku --version
heroku-cli/6.16.8-ae149be (linux-x64) node-v9.11.1
10
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?