bart
bart

Reputation: 15298

Heroku command not found

After installing Heroku Toolbelt, in terminal on Mac when trying to run the following command:

heroku

I get the error:

bash: heroku: command not found

When I do:

gem environment

I get:

- RUBYGEMS VERSION: 1.3.6
- RUBY VERSION: 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin11.0]
- INSTALLATION DIRECTORY: /Library/Ruby/Gems/1.8
- RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
- EXECUTABLE DIRECTORY: /usr/bin
- RUBYGEMS PLATFORMS:
 - ruby
 - universal-darwin-11
- GEM PATHS:
 - /Library/Ruby/Gems/1.8
 - /Users/Bart/.gem/ruby/1.8
 - /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8
- GEM CONFIGURATION:
 - :update_sources => true
 - :verbose => true
 - :benchmark => false
 - :backtrace => false
 - :bulk_threshold => 1000
- REMOTE SOURCES:
 - http://rubygems.org/

I've tried adding several paths to $PATH, but nothing works...

Upvotes: 42

Views: 127581

Answers (15)

Muhammad Owais
Muhammad Owais

Reputation: 1186

npm install -g heroku worked for me

Source: https://devcenter.heroku.com/articles/heroku-cli

Upvotes: 0

Suprabhat Kumar
Suprabhat Kumar

Reputation: 695

For yarn

If you want to deploy your backend or server, go to backend or server folder, use -

yarn global add heroku

For deploying frontend or client, go to frontend or client folder and use the same cmd.

For npm

Go to the respective folder which you want to deploy and use npm i -g heroku

Upvotes: 2

Ziadi Lotfi
Ziadi Lotfi

Reputation: 39

Export snap Directory

export PATH=$PATH:/snap/bin 

Upvotes: 2

Rohit Singh
Rohit Singh

Reputation: 18222

Brew install did not work in macOS?

For me brew tap heroku/brew && brew install heroku did not work in macOS.
So I tried the standalone download.
Here is the command which worked for me

curl https://cli-assets.heroku.com/install.sh | sh

Upvotes: 1

unknown programmer guy
unknown programmer guy

Reputation: 308

when you install heroku in linux as per the documentation using

sudo snap install heroku --classic

it will install heroku inside /snap/bin/heroku but when you type the command in terminal it will look into /usr/bin/ directory, a simple solution is to create a symlink by

sudo ln -s  /snap/bin/heroku /usr/bin/heroku

after that you can just run the heroku command in terminal.

Upvotes: 5

Muhammed Moussa
Muhammed Moussa

Reputation: 5205

try npm install -g heroku for any platform.

Upvotes: 12

Roger Perez
Roger Perez

Reputation: 3139

Ran gem install heroku first and it gave me the following message:

heroku must be installed from cli.heroku.com. This gem is no longer available. (RuntimeError)

Steps from Heroku:

  1. brew tap heroku/brew && brew install heroku

or Ubuntu

sudo snap install --classic heroku

Upvotes: 10

subtleseeker
subtleseeker

Reputation: 5273

I am using zsh which didn't have snap in its path. So just add this in ~/.zshrc.

export PATH=$PATH:/snap/bin

Upvotes: 10

Mohamed Allal
Mohamed Allal

Reputation: 20920

(This answer is for typical other persons, that may land here, and that may find it useful)

If you come to install heroku snap using snap command through the command line as follow
sudo snap install heroku --classic (the thing you will find in the heroku doc).
And that after installation the heroku command isn't available. Then here the solution and the why:

First know that when you install a new snap, it get added to /snap folder. A new folder with the snap name is created (/snap/heroku), and the executable file for the command is added to /snap/bin (/snap/bin/heroku).

Try

/snap/bin/heroku help

and you will find it work very well.

Solution: So you have just to add /snap/bin to your PATH environement variable.

Heroku is supposing that it's already done. I don't know, if that should have been done automatically at the installation of snapd package. But any way, that's it.

For how to add new paths to the PATH environment variable look at the links bellow, to get a good idea (case you don't know that already):

Here links about why you need to logout and login back or reboot

Here an example:

sudo nano /etc/environment

i chose to add the path through /etc/environment (remember you can't use shell commands).

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/node-v9.6.1-linux-x64/bin:/snap/bin

You can see i add it at the end (that simple).
Reboot your computer or logout and login back (PAM script handle the construction of the PATH from /etc/environment at session creation time)

If You want to have the effect take place right away, execute:

source /etc/environment && export PATH

(it affect only the current opened shell and the children processes)

Here another example doing it in /etc/profile:

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
PATH="$PATH:/snap/bin"
export PATH

I just added one line (the one before the last, and note that a portion from the whole file (/etc/profile)).
Reboot or logout and login back.

Execute :

source /etc/profile

to be operational right away (affect the current shell and the children processes).

There is different ways to add to PATH, even an infinity of ways if we give our imagination a go. The difference between the ways is about when it get set, and executed, and what scope it reach. As also organization aspect (i can have my own text list (one path per line), and have it compiled and executed in the right manner and place for example). Better see the links above, i put a good selection out there, to get a better understanding about how things work, and what method to choose. But generally the two above for a system wide configuration, are mostly what you need.

Upvotes: 32

parsethis
parsethis

Reputation: 8078

Do remember to actually source the installation file.

wget -0- wget https://toolbelt.heroku.com/install-ubuntu.sh | sh

didn't work for me. And as a linux noob I used instead:

wget 0- wget https://toolbelt.heroku.com/install-ubuntu.sh | sh

notice that the '-' is missing from the option to wget. This downloaded the install source to my current directory.

then I did:

bash install-ubuntu.sh 

which finished up the installation for me.

then:

heroku login

works!!

Upvotes: 20

bogdan.rusu
bogdan.rusu

Reputation: 943

After you run wget -0- wget https://toolbelt.heroku.com/install-ubuntu.sh | sh you might get the following warning:

WARNING: The following packages cannot be authenticated!

heroku heroku-toolbelt

If this happens, run this apt-get install -y --force-yes heroku-toolbelt

I've run all the commands with sudo, but I don't know if it makes a difference. Thanks to this answer

Upvotes: 0

Jagdish Barabari
Jagdish Barabari

Reputation: 2703

Just run

$ gem install heroku

Form your app that's it.

Upvotes: 17

Tod Birdsall
Tod Birdsall

Reputation: 19074

After installing Heroku Toolbelt using the .pkg file I downloaded from Heroku's Getting Started with Rails 4.x on Heroku page, I got the heroku command not found message. My /usr/local/heroku/bin folder did exist.

I was able to resolve this issue by going to https://toolbelt.heroku.com and downloading the same .pkg file from that site and re-installing it. Note, I did not uninstall the previous package first.

Upvotes: 1

Yahya Yahyaoui
Yahya Yahyaoui

Reputation: 2953

First install heroku:

wget -qO- https://toolbelt.heroku.com/install.sh | bash

After that add a symlink to binary like @Garrett did:

sudo ln -s /usr/local/heroku/bin/heroku /usr/bin/heroku

Upvotes: 4

Garrett Johnson
Garrett Johnson

Reputation: 800

Manually adding the symlink after installing Toolbelt fixed it for me.

sudo ln -s /usr/local/heroku/bin/heroku /usr/bin/heroku

Upvotes: 35

Related Questions