I just tried to use Homebrew and Linuxbrew to install packages on my Ubuntu Server but both failed. This is how I tried to install them:
sudo apt-get install bui
You can just follow instructions from the Homebrew on Linux docs, but I think it is better to understand what the instructions are trying to achieve.
Step 1: Choose location
First of all, it is important to understand that linuxbrew will be installed on the /home
directory and not inside /home/your-user
(the ~
directory).
(See the reason for that at the end of answer).
Keep this in mind when you run the other steps below.
Step 2: Add linuxbrew binaries to /home
:
The installation script will do it for us:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Step 3: Check that /linuxbrew
was added to the relevant location
This can be done by simply navigating to /home
.
Notice that the docs are showing it as a one-liner by adding test -d
before each command.
(Read more about the test
command in here).
Step 4: Export relevant environment variables to terminal
We need to add linuxbrew to PATH
and add some more environment variables to the current terminal.
We can just add the following export
s to terminal (wait don't do it..):
export PATH="/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin${PATH+:$PATH}";
export HOMEBREW_PREFIX="/home/linuxbrew/.linuxbrew";
export HOMEBREW_CELLAR="/home/linuxbrew/.linuxbrew/Cellar";
export HOMEBREW_REPOSITORY="/home/linuxbrew/.linuxbrew/Homebrew";
export MANPATH="/home/linuxbrew/.linuxbrew/share/man${MANPATH+:$MANPATH}:";
export INFOPATH="/home/linuxbrew/.linuxbrew/share/info:${INFOPATH:-}";
Or simply run (If your linuxbrew folder is on other location then /home
- change the path):
eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
(*) Because brew
command is not yet identified by the current terminal (this is what we're solving right now) we'll have to specify the full path to the brew binary: /home/linuxbrew/.linuxbrew/bin/brew shellenv
Test this step by:
1 ) Run brew
from current terminal to see if it identifies the command.
2 ) Run printenv
and check if all environment variables were exported and that you see /home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin
on PATH
.
Step 5: Ensure step 4 is running on each terminal
We need to add step 4 to ~/.profile
(in case of Debian/Ubuntu):
echo "eval \$($(brew --prefix)/bin/brew shellenv)" >> ~/.profile
For CentOS/Fedora/Red Hat - replace ~/.profile
with ~/.bash_profile
.
Step 6: Ensure that ~/.profile
or ~/.bash_profile
are being executed when new terminal is opened
If you executed step 5 and failed to run brew
from new terminal - add a test command like echo "Hi!"
to ~/.profile
or ~/.bash_profile
.
If you don't see Hi!
when you open a new terminal - go to the terminal preferences and ensure that the attribute of 'run command as login shell' is set.
Read more in here.
Why the installation script installs Homebrew to /home/linuxbrew/.linuxbrew
- from here:
The installation script installs Homebrew to
/home/linuxbrew/.linuxbrew
usingsudo
if possible and in your home directory at~/.linuxbrew
otherwise. Homebrew does not usesudo
after installation.
Using/home/linuxbrew/.linuxbrew
allows the use of more binary packages (bottles) than installing in your personal home directory.The prefix
/home/linuxbrew/.linuxbrew
was chosen so that users without admin access can ask an admin to create a linuxbrew role account and still benefit from precompiled binaries.If you do not yourself have admin privileges, consider asking your admin staff to create a linuxbrew role account for you with home directory
/home/linuxbrew
.