質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

1753閲覧

heroku login で cannot execute binary file というエラーが出てしまう

Yuuki_share

総合スコア2

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2021/01/08 06:43

前提・実現したいこと

Ruby on Rails でアプリケーションを作成し、
heroku を用いて webアップ をしようと考えています。

しかし、
**$ heroku login **のコマンドで下記のようなエラー文(cannot execute binary file)が出てしまい、
どの部分に問題があるのか検討がつきません。

$ heroku --v と打っても同じエラーメッセージ。

もっと詳細なエラー文やログが表示出来ると助かるのですが‥

発生している問題・エラーメッセージ

/home/linuxbrew/.linuxbrew/bin/heroku: line 45: /home/linuxbrew/.linuxbrew/opt/heroku-node/share/node: cannot execute binary file

該当のソースコード

terminal

1ec2-user:~/environment/sharehouse_2 (master) $ heroku login 2/home/linuxbrew/.linuxbrew/bin/heroku: line 45: /home/linuxbrew/.linuxbrew/opt/heroku-node/share/node: cannot execute binary file 3 4ec2-user:~/environment/sharehouse_2 (master) $ heroku --v 5/home/linuxbrew/.linuxbrew/bin/heroku: line 45: /home/linuxbrew/.linuxbrew/opt/heroku-node/share/node: cannot execute binary file

試したこと

heroku アカウントの作成
・**heroku-cli **のダウンロード [Mac OS]
($ brew tap heroku/brew && brew install heroku)
git でのリモートリポジトリの作成

補足情報(FW/ツールのバージョンなど

自分の考えるエラーが起きる原因
・DB は phpmyadimin を使っている
・画像保存で carrierwave を使っている
・クローンしてきたものを使っている(前の環境の容量がいっぱいで新しい環境にお引越ししてきました)

version
Ruby : ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2021/01/08 06:48

macOS 上で Linuxbrew をお使いでしょうか?
Yuuki-Kaneko

2021/01/08 09:06

いや、特にbrewとかはダウンロードしてないです!
yu_1985

2021/01/08 10:36

> /home/linuxbrew/.linuxbrew/bin/heroku ってパスになってますけど、linuxbrew使ってますよね? ついでにいうと、 > ec2-user:~/environment というパスから、恐らくCloud9上の環境で実行していてローカルは特に関係ないと思うんですけど、どうでしょう? ちなみにheroku cliはどうやってインストールしましたか?
Yuuki_share

2021/01/08 14:14

すいません。 linuxbrew 使ってたみたいです。 というより、 heroku cli をインストールするときに > $ brew tap heroku/brew && brew install heroku というコマンドを打ってインストールしたんですけど、 これが linumbrew を使ってるということになるんですね。
Yuuki_share

2021/01/08 14:20

現状、 Homebrew を使用して Heroku CLI をインストールしたということになってると思うので一度アンインストールして、 mac OS でインストーラをダウンロードすればよろしいですかね??
yu_1985

2021/01/08 14:25

↑にも書いたのですが、貼られているコマンド実行時のユーザがec2-userになってるのでこれはEC2インスタンス上ではないのでしょうか? そうだとしたらローカルのMacの環境は全く関係ないのですが…。まずそこをはっきりさせてください。 どうやって環境構築しましたか?
Yuuki_share

2021/01/08 15:04

色々とすみません。 正直1,2行目で仰ってることが僕の知識と理解が低次元でわからないのですが、 とにかく環境構築は $ rvm install 2.5.1 $ rvm --default use 2.5.1 $ sudo yum install -y mysql-devel $ gem install bundler -v '1.17.3' $ gem install rails --version="5.2.1" $ rails _5.2.1_ new sharehouse_2 -d mysql $ rails db:create $ sudo yum install -y phpmyadmin といった流れで環境構築しました。
hoshi-takanori

2021/01/08 15:39

とりあえず yum install ってことは macOS ではありませんね。 file /home/linuxbrew/.linuxbrew/opt/heroku-node/share/node としたら何が表示されますか?
yu_1985

2021/01/08 16:29 編集

herokuのcliをインストールしているところがないのですが…。 開発はCloud9でやってたりしないですか? 貼ったコマンドはCloud9のターミナル上ではないでしょうか。 そうでなければ、sshでEC2インスタンスに入っているかですけど、ホームディレクトリ配下にenvironmentというディレクトリがデフォルトで存在するのはCloud9なので恐らくCloud9を使っているのではないですか、という想像です。 Cloud9を使っているのであれば、実際にソースコードや環境があるのはAWS上にあるEC2インスタンス上なので、ローカルの環境がMacでもWindowsでも他のOSでも関係ありません。 もしかして、作業環境は誰かに作ってもらったものですか?
Yuuki_share

2021/01/09 07:44

$ file /home/linuxbrew/.linuxbrew/opt/heroku-node/share/node /home/linuxbrew/.linuxbrew/opt/heroku-node/share/node: Mach-O 64-bit x86_64 executable, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|WEAK_DEFINES|BINDS_TO_WEAK|HAS_TLV_DESCRIPTORS> と、なりました。
Yuuki_share

2021/01/09 07:49

開発はCloud9でやってます! ですので、想像の通りCloud9で打ったコマンドです! macでもwindowsでも関係ないんですね???? 勉強不足でした。 作業環境は 実はTeckcampというプログラミングスクールに通ってまして そのときにやった環境構築を真似て作りました。
hoshi-takanori

2021/01/09 08:02

Mach-O ということは macOS 用のバイナリです。で、Cloud9 ということは Linux 環境になると思いますので、macOS 用のバイナリは動きません。 brew コマンドが動くということは Cloud9 にもともと Linuxbrew がインストールされてるんでしょうね。でも、brew で heroku を入れるとなぜか macOS 用のものが入ってしまう、と…。 たぶん、こちらの Other installation methods の Standalone installation の方法でインストールされるのがいいと思います。 https://devcenter.heroku.com/articles/heroku-cli#other-installation-methods
yu_1985

2021/01/09 08:20

Cloud9はAWS上で動いてる環境なので、ローカルの環境がなんであろうと関係ありません。 原因はわかったので回答に記載します。
Yuuki_share

2021/01/09 09:01

一旦、アンインストールして Standalone installation の方法でインストールし直しました。 $ curl https://cli-assets.heroku.com/install.sh | sh % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1892 100 1892 0 0 21500 0 --:--:-- --:--:-- --:--:-- 21500 This script requires superuser access. You will be prompted for your password by sudo. Your path is missing /usr/local/bin, you need to add this to use this installer. パスを通そうとし $ echo 'export PATH=/usr/local/bin:$PATH' >> .bash_profile $ source ~/.bash_profile としたのですが、 またもや You will be prompted for your password by sudo. Your path is missing /usr/local/bin, you need to add this to use this installer. と表示されてしまいます。
yu_1985

2021/01/09 10:02 編集

そちらのコマンドをあえて書かなかったのは、スクリプト実行にsudoが必要なところ、sudoを実行する時にパスを通す設定をそのためにする必要があったからです。書いたほうのやり方でやってください。 そのメッセージが出る理由はスクリプト内でsudoで実行しているか判定していることと、/usr/local/binにパスが通っていないことですが、sudoではデフォルトではsudo実行元のユーザのPATH設定を引き継いでくれません。
yu_1985

2021/01/09 10:03

もし学習目的でやってるのであれば、Cloud9のソースをわざわざherokuに上げなくてもCloud9上で立ち上げればいいと思うのですが、そうではないということですか?
Yuuki_share

2021/01/09 14:48

スクールの卒業課題が自分で作ったアプリをweb上にあげるというもの、またその時にherokuを推奨していたからです! 自分で作る制作物をwebにあげるまでの過程で起きたエラーなどに関しては一切メンターからのアドバイスはもらえないということで、今回初めてterarailを使用しました。
yu_1985

2021/01/09 15:27

linuxbrewを使うというのはそう言われたんでしょうか。 書いた理由の通りでおすすめしないのですが…。 実際にはAWS上で開発したものをherokuに上げるというケースはほとんど考えにくいので、本来はローカルに開発環境を構築してそこでやってたほうがよかったんでしょうね。
guest

回答1

0

ベストアンサー

heroku cliのbrew用リポジトリがlinuxに対応していないのが原因と思われます。
heroku cliのリポジトリはbrew公式ではないのでそこまで対応していないようですね。
実際、自分も今cloud9に環境を作ってlinuxbrewでheroku cliを入れてみたところ全く同じ現象が確認できましたし、fileコマンドでファイル形式を確認したらMach-O 64-bit executableと出てきました。
これはmacos標準のバイナリフォーマットです。
Mach-O

homebrewは本来がMacでの使用を前提としたものをlinuxでも使えるようにしたものがlinuxbrewという経緯があります。
後からbrew自身がlinuxに対応しただけで、インストール可能な全てのパッケージがlinuxでの使用を想定したインストールをされるとは限りません。
特に非公式リポジトリはlinuxでの動作確認をしていない可能性が高いと思っていいでしょう。
なのでlinuxbrewを使うことはおすすめしません。
また、パッケージマネージャで何を管理しているかを意識していない状態だとyumやaptと衝突しがちです。
そういった意味でも積極的に使うのはまだまだ控えるべきと思っています。

じゃあどうすれば、というと、今の所一番確実なのは手動インストールです。
もちろんCloud9上で実行してください。
まずはlinuxbrewのherokuをアンインストール。

bash

1brew uninstall heroku

こちらを参考に、手動でファイル配置
※公式にインストールスクリプトがありますが、sudoを使ったときにもパスが通るように共通パスを追加したりする必要があるのであえて避けています。

bash

1curl -OL https://cli-assets.heroku.com/heroku-linux-x64.tar.gz 2tar zxf heroku-linux-x64.tar.gz 3sudo mv heroku /usr/local/ 4echo "PATH=/usr/local/heroku/bin:$PATH" >> $HOME/.bash_profile 5exec -l $SHELL

これで使えるようになったのを確認しました。

せっかくCloud9を使ってるのだからCloud9上で動かしてもいいような気はしますけどね。

投稿2021/01/09 08:45

yu_1985

総合スコア7471

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yuuki_share

2021/01/09 14:43

同じ環境を作ってやってくださりありがとうございます! なんとか指示通りのコマンドで ログインするところまで行きました! まだまだわからないところ多いので、その都度吸収して行ければと思います!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問