mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
brew.sh: fix HOMEBREW_PREFIX if /home is a symlink
Correct `HOMEBREW_PREFIX`, and its only dependent up to that point, `HOMEBREW_REPOSITORY`, if the defaults contain symlinks. For example: ```console $ realpath /home/linuxbrew/.linuxbrew /var/home/linuxbrew/.linuxbrew $ ls -ld /home lrwxrwxrwx. 4 root root 8 Jun 29 22:29 /home -> var/home ``` I was hoping to correct `HOMEBREW_PREFIX` from the start (in `bin/brew`), but the default prefixes are in `brew.sh`. See #15656 for a discussion on this middleground solution. Co-Authored-By: rohanssrao <17805516+rohanssrao@users.noreply.github.com> Co-Authored-By: Bo Anderson <mail@boanderson.me>
This commit is contained in:
parent
287a359a74
commit
64b6479100
@ -44,6 +44,26 @@ else
|
||||
HOMEBREW_DEFAULT_TEMP="/tmp"
|
||||
fi
|
||||
|
||||
realpath() {
|
||||
(cd "$1" &>/dev/null && pwd -P)
|
||||
}
|
||||
|
||||
# Support systems where HOMEBREW_PREFIX is the default,
|
||||
# but a parent directory is a symlink.
|
||||
# Example: Fedora Silverblue symlinks /home -> var/home
|
||||
if [[ "${HOMEBREW_PREFIX}" != "${HOMEBREW_DEFAULT_PREFIX}" && "$(realpath "${HOMEBREW_DEFAULT_PREFIX}")" == "${HOMEBREW_PREFIX}" ]]
|
||||
then
|
||||
HOMEBREW_PREFIX="${HOMEBREW_DEFAULT_PREFIX}"
|
||||
fi
|
||||
|
||||
# Support systems where HOMEBREW_REPOSITORY is the default,
|
||||
# but a parent directory is a symlink.
|
||||
# Example: Fedora Silverblue symlinks /home -> var/home
|
||||
if [[ "${HOMEBREW_REPOSITORY}" != "${HOMEBREW_DEFAULT_REPOSITORY}" && "$(realpath "${HOMEBREW_DEFAULT_REPOSITORY}")" == "${HOMEBREW_REPOSITORY}" ]]
|
||||
then
|
||||
HOMEBREW_REPOSITORY="${HOMEBREW_DEFAULT_REPOSITORY}"
|
||||
fi
|
||||
|
||||
# Where we store built products; a Cellar in HOMEBREW_PREFIX (often /usr/local
|
||||
# for bottles) unless there's already a Cellar in HOMEBREW_REPOSITORY.
|
||||
# These variables are set by bin/brew
|
||||
|
Loading…
x
Reference in New Issue
Block a user