Homebrew cannot find installed git and curl in the user directory (original) (raw)
August 17, 2020, 10:30pm 1
I’m trying to install linuxbrew for normal users. I have minimally installed Oracle Linux 7.7 and put in a user test without root rights. I have gradually compiled and installed all packages that Linuxbrew needs under user test. Now the problem is under user test, all libraries and packages like git are in / home / test / usr / {bin, lib, lib64, include etc.} but brew doesn’t know installed git or curl. Path in bashrc are correct so I think these are ENV:
[test@testing ~]$ which curl
~/usr/bin/curl
[test@testing ~]$ which git
~/usr/bin/git
[test@testing ~]$ env
CPLUS_INCLUDE_PATH=/home/test/usr/include
XDG_SESSION_ID=24
HOSTNAME=testing
SELINUX_ROLE_REQUESTED=
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.168.0.234 64558 22
SELINUX_USE_CURRENT_RANGE=
SSH_TTY=/dev/pts/0
USER=test
LD_LIBRARY_PATH=/home/test/usr/lib:/home/test/usr/lib64
PATH=/home/test/localperl/bin:/home/test/usr/bin:/home/test/usr/libexec:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/test/.local/bin:/home/test/bin
C_INCLUDE_PATH=/home/test/usr/include
PWD=/home/test
LANG=en_US.UTF-8
SELINUX_LEVEL_REQUESTED=
HISTCONTROL=ignoredups
SHLVL=1
HOME=/home/test
LOGNAME=test
SSH_CONNECTION=192.168.0.234 64558 192.168.0.200 22
PKG_CONFIG_PATH=/home/test/usr/lib/pkgconfig:/home/test/usr/lib64/pkgconfig
LESSOPEN=||/usr/bin/lesspipe.sh %s
XDG_RUNTIME_DIR=/run/user/1001
_=/usr/bin/env
cat .bashrc
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
export PATH=$HOME/localperl/bin:$HOME/usr/bin:$HOME/usr/libexec:$PATH
export LD_LIBRARY_PATH=$HOME/usr/lib:$HOME/usr/lib64
export C_INCLUDE_PATH=$HOME/usr/include
export CPLUS_INCLUDE_PATH=$C_INCLUDE_PATH
export PKG_CONFIG_PATH=$HOME/usr/lib/pkgconfig:$HOME/usr/lib64/pkgconfig
brew config
HOMEBREW_VERSION: >=2.2.0 (shallow or no git repository)
ORIGIN: (none)
HEAD: (none)
Last commit: never
Core tap: N/A
HOMEBREW_PREFIX: /home/test/usr
HOMEBREW_REPOSITORY: /home/test/.linuxbrew/Homebrew
HOMEBREW_CELLAR: /home/test/usr/Cellar
HOMEBREW_CASK_OPTS: []
HOMEBREW_MAKE_JOBS: 1
CPU: single-core 64-bit sandybridge
Homebrew Ruby: 2.6.3 => /home/test/.linuxbrew/Homebrew/Library/Homebrew/vendor/portable-ruby/2.6.3_2/bin/ruby
Clang: N/A
Git: N/A
Curl: 7.29.0 => /usr/bin/curl
Kernel: Linux 4.14.35-1902.3.2.el7uek.x86_64 x86_64 GNU/Linux
OS: Red Hat Enterprise Linux Server release 7.7 (Maipo)
Host glibc: 2.17
/usr/bin/gcc: 4.8.5
glibc: N/A
gcc: N/A
xorg: N/A
sjackman (Shaun Jackman) August 18, 2020, 1:19am 2
Please copy and paste the exact command you’ve run and the complete and exact error message that it’s giving you.
iranbingo (Iranbingo) August 18, 2020, 11:36am 3
e.g. 2 commands that are often used:
[test@testing ~]$ brew update
Error: Git is unavailable
Error: Failure while executing; /home/test/usr/bin/brew tap homebrew/core
exited with 1.
Error: Git must be installed and in your PATH!
[test@testing ~]$ brew install git
Updating Homebrew…
Error: Git is unavailable
Error: Failure while executing; /home/test/usr/bin/brew tap homebrew/core
exited with 1.
Error: Git must be installed and in your PATH!
Error: Git is unavailable
Error: Failure while executing; /home/test/usr/bin/brew tap homebrew/core
exited with 1.
gromgit (Adrian Ho) August 18, 2020, 11:52am 4
What does git version
say?
iranbingo (Iranbingo) August 18, 2020, 12:11pm 5
[test@testing ~]$ which git
~/usr/bin/git
[test@testing ~]$ git version
git version 2.28.0
iranbingo (Iranbingo) August 18, 2020, 12:50pm 6
I solved the problem for Git by moving the .linuxbrew/Homebrew directory to ~/usr, then:
ln -s ~/usr/Homebrew/bin/brew ~/usr/bin
eval $ (~ /usr/bin/brew shellenv)
now brew knows where git is
Git: 2.28.0 => /home/test/usr/bin/git
but he is still looking for curl under curl: 7.29.0 => /usr/bin/curl
then i ran brew update what crashed bash shell for user test compellet in the end
brew update
==> Tapping homebrew/core
Cloning into ‘/home/test/usr/Homebrew/Library/Taps/homebrew/homebrew-core’…
remote: Enumerating objects: 779, done.
remote: Counting objects: 100% (779/779), done.
remote: Compressing objects: 100% (402/402), done.
remote: Total 953072 (delta 538), reused 567 (delta 377), pack-reused 952293
Receiving objects: 100% (953072/953072), 342.48 MiB | 6.70 MiB/s, done.
Resolving deltas: 100% (657706/657706), done.
Updating files: 100% (5488/5488), done.
Tapped 2 commands and 5230 formulae (5,513 files, 377.7MB).
==> Downloading … 100.0%
==> Installing dependencies for curl: patchelf, m4, gmp, mpfr, libmpc, zlib, binutils, linux-headers, glibc, isl@0.18, gcc, bzip2, pkg-config and openssl@1.1
==> Installing curl dependency: patchelf
==> Pouring patchelf-0.11.x86_64_linux.bottle.tar.gz /home/test/usr/Cellar/patchelf/0.11: 7 files, 877.4KB
==> Installing curl dependency: m4
==> Pouring m4-1.4.18.x86_64_linux.bottle.tar.gz
Error: The brew link
step did not complete successfully
The formula built, but is not symlinked into /home/test/usr
Could not symlink bin/m4
Target /home/test/usr/bin/m4
already exists. You may want to remove it:
rm ‘/home/test/usr/bin/m4’
To force the link and overwrite all conflicting files:
brew link --overwrite m4
To list all files that would be deleted:
brew link --overwrite --dry-run m4
Possible conflicting files are:
/home/test/usr/bin/m4
/home/test/usr/share/info/m4.info
/home/test/usr/share/info/m4.info-1
/home/test/usr/share/info/m4.info-2
/home/test/usr/share/man/man1/m4.1
==> Summary /home/test/usr/Cellar/m4/1.4.18: 13 files, 1.1MB
==> Installing curl dependency: gmp
==> Pouring gmp-6.2.0.x86_64_linux.bottle.tar.gz
Error: The brew link
step did not complete successfully
The formula built, but is not symlinked into /home/test/usr
Could not symlink include/gmp.h
Target /home/test/usr/include/gmp.h
already exists. You may want to remove it:
rm ‘/home/test/usr/include/gmp.h’
To force the link and overwrite all conflicting files:
brew link --overwrite gmp
To list all files that would be deleted:
brew link --overwrite --dry-run gmp
Possible conflicting files are:
/home/test/usr/include/gmp.h
/home/test/usr/share/info/gmp.info
/home/test/usr/share/info/gmp.info-1
/home/test/usr/share/info/gmp.info-2
/home/test/usr/lib/libgmp.a
/home/test/usr/lib/libgmp.so -> /home/test/usr/lib/libgmp.so.10.4.0
/home/test/usr/lib/libgmp.so.10 -> /home/test/usr/lib/libgmp.so.10.4.0
/home/test/usr/lib/libgmp.so.10.4.0
/home/test/usr/lib/pkgconfig/gmp.pc
==> Summary /home/test/usr/Cellar/gmp/6.2.0: 23 files, 3.9MB
==> Installing curl dependency: mpfr
==> Pouring mpfr-4.1.0.x86_64_linux.bottle.tar.gz /home/test/usr/Cellar/mpfr/4.1.0: 30 files, 7.8MB
==> Installing curl dependency: libmpc
==> Pouring libmpc-1.1.0.x86_64_linux.bottle.tar.gz /home/test/usr/Cellar/libmpc/1.1.0: 13 files, 1.5MB
==> Installing curl dependency: zlib
==> Pouring zlib-1.2.11.x86_64_linux.bottle.tar.gz
Error: The brew link
step did not complete successfully
The formula built, but is not symlinked into /home/test/usr
Could not symlink include/zconf.h
Target /home/test/usr/include/zconf.h
already exists. You may want to remove it:
rm ‘/home/test/usr/include/zconf.h’
To force the link and overwrite all conflicting files:
brew link --overwrite zlib
To list all files that would be deleted:
brew link --overwrite --dry-run zlib
Possible conflicting files are:
/home/test/usr/include/zconf.h
/home/test/usr/include/zlib.h
/home/test/usr/share/man/man3/zlib.3
/home/test/usr/lib/libz.a
/home/test/usr/lib/libz.so -> /home/test/usr/lib/libz.so.1.2.11
/home/test/usr/lib/libz.so.1 -> /home/test/usr/lib/libz.so.1.2.11
/home/test/usr/lib/libz.so.1.2.11
/home/test/usr/lib/pkgconfig/zlib.pc
==> Summary /home/test/usr/Cellar/zlib/1.2.11: 12 files, 393.3KB
==> Installing curl dependency: binutils
==> Pouring binutils-2.34.x86_64_linux.bottle.1.tar.gz /home/test/usr/Cellar/binutils/2.34: 4,665 files, 279.9MB
==> Installing curl dependency: linux-headers
==> Pouring linux-headers-4.4.80.x86_64_linux.bottle.tar.gz /home/test/usr/Cellar/linux-headers/4.4.80: 772 files, 3.6MB
==> Installing curl dependency: glibc
==> …/configure --disable-debug --disable-dependency-tracking --disable-silent-rules --prefix=/home/test/u
==> make
==> make install
==> Installing locale data for en_US.UTF-8
==> /home/test/usr/Cellar/glibc/2.23/bin/localedef -i en_US -f UTF-8 en_US.UTF-8 /home/test/usr/Cellar/glibc/2.23: 1,402 files, 41.5MB, built in 64 minutes 53 seconds
==> Installing curl dependency: isl@0.18
==> Pouring isl@0.18-0.18.x86_64_linux.bottle.tar.gz
==> Caveats
isl@0.18 is keg-only, which means it was not symlinked into /home/test/usr,
because this is an alternate version of another formula.
For compilers to find isl@0.18 you may need to set:
export LDFLAGS="-L/home/test/usr/opt/isl@0.18/lib"
export CPPFLAGS="-I/home/test/usr/opt/isl@0.18/include"
For pkg-config to find isl@0.18 you may need to set:
export PKG_CONFIG_PATH="/home/test/usr/opt/isl@0.18/lib/pkgconfig"
==> Summary /home/test/usr/Cellar/isl@0.18/0.18: 81 files, 6.3MB
==> Installing curl dependency: gcc
==> Pouring gcc-5.5.0_7.x86_64_linux.bottle.tar.gz
==> Creating the GCC specs file: /home/test/usr/Cellar/gcc/5.5.0_7/bin/…/lib/gcc/x86_64-unknown-linux-gnu/ /home/test/usr/Cellar/gcc/5.5.0_7: 1,348 files, 174.2MB
==> Installing curl dependency: bzip2
==> Pouring bzip2-1.0.8.x86_64_linux.bottle.tar.gz /home/test/usr/Cellar/bzip2/1.0.8: 30 files, 510KB
==> Installing curl dependency: pkg-config
==> ./configure --prefix=/home/test/usr/Cellar/pkg-config/0.29.2_4 --disable-host-tool --with-internal-glib
==> make
==> make install /home/test/usr/Cellar/pkg-config/0.29.2_4: 11 files, 704.1KB, built in 7 minutes 59 seconds
==> Installing curl dependency: openssl@1.1
==> perl Makefile.PL INSTALL_BASE=/home/test/usr/Cellar/openssl@1.1/1.1.1g/libexec
Last 15 lines from /home/test/.cache/Homebrew/Logs/openssl@1.1/01.perl:
2020-08-18 18:23:12 +0200
perl
Makefile.PL
INSTALL_BASE=/home/test/usr/Cellar/openssl@1.1/1.1.1g/libexec
Can’t locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /home/test/usr/Cellar/openssl@1.1/1.1.1g/libexec/lib/perl5 /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 8.
BEGIN failed–compilation aborted at Makefile.PL line 8.
READ THIS: https://docs.brew.sh/Troubleshooting
Already up-to-date.
[test@testing ~]$ brew config
/bin/bash : : ELF: : Error 18446744071780639061
ls: ▒▒g▒:ELF: : Error 1934348629
[test@testing ~]$ env
env: ▒/: ELF: : Error 18446744072728518997
[test@testing ~]$ ls
ls: ▒4_{: ELF: : Error 627806549
gromgit (Adrian Ho) August 18, 2020, 4:07pm 7
Your setup looks messed up now. If I understand correctly, your ~/usr
contains stuff from outside Homebrew, and now you’ve tossed Homebrew itself into the pot. As you’ve already experienced, Homebrew doesn’t deal well with this, and name clashes and miscellaneous breakage are the result.
(Incidentally, this is true for every package manager I’ve encountered over the years. None of them handle “namespace clashes” gracefully, and if you try to run two package managers in the same hierarchy, or even mixing one package manager and manually-installed binaries, There Will Be Trouble.)
If anchoring your Homebrew install under /home/linuxbrew/.linuxbrew
is not an option, pick a directory besides ~/usr
and install Homebrew entirely under it. Ideally, when you run brew config
, you should see HOMEBREW_PREFIX
listed but not HOMEBREW_REPOSITORY
or HOMEBREW_CELLAR
.
iranbingo (Iranbingo) August 18, 2020, 6:57pm 8
the problem lies with LD_LIBRARY_PATH and all the libraries that I have already complicated for Git installation. I had to comment on LD_LIBRARY_PATH and log out and then log in again and delete the symlinks for m4, gmp, zlib and insert new ones.
first with
brew link --overwrite --dry-run {m4, gmp, zlib}
then with
brew link --overwrite {m4, gmp, zlib}
almost everything looks fine now