mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00

Continuing with the goals of making the installer: - more useful - entirely offline Let's pre-download the API data from a `brew update` run and install it into the logged-in user's home directory. While we're here, in the `postinstall` script: - use longer arguments for various commands - fix an issue with symlinking on Intel if `/usr/local/bin` doesn't already exist - unset `bash -x` and use `-v` on more commands instead
62 lines
2.0 KiB
Bash
Executable File
62 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# $1 Full path to the installer (unused)
|
|
# $2 Location of the Homebrew installation we may need to move into place
|
|
# $3 Target install location (unused)
|
|
# $4 System root directory (unused)
|
|
set -eu
|
|
|
|
# disable analytics while installing
|
|
export HOMEBREW_NO_ANALYTICS_THIS_RUN=1
|
|
export HOMEBREW_NO_ANALYTICS_MESSAGE_OUTPUT=1
|
|
|
|
# verify the installation exists
|
|
# default to /opt/homebrew to make development/testing easier
|
|
homebrew_directory="${2:-/opt/homebrew}"
|
|
if [[ ! -d "${homebrew_directory:?}" ]]
|
|
then
|
|
echo "no directory at ${homebrew_directory}!" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# add Git to path
|
|
export PATH="/Library/Developer/CommandLineTools/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:${PATH}"
|
|
|
|
# reset Git repository
|
|
cd "${homebrew_directory}"
|
|
git config --global --add safe.directory "${homebrew_directory}"
|
|
git reset --hard
|
|
git checkout --force master
|
|
git branch | grep -v '\*' | xargs -n 1 git branch --delete --force
|
|
git config --global --unset safe.directory
|
|
|
|
# move to /usr/local if on x86_64
|
|
if [[ $(uname -m) == "x86_64" ]]
|
|
then
|
|
mv -v "${homebrew_directory}" "/usr/local/Homebrew"
|
|
# create symlink to /usr/local/bin/brew
|
|
sudo mkdir -vp /usr/local/bin
|
|
ln -svf "../Homebrew/bin/brew" "/usr/local/bin/brew"
|
|
|
|
homebrew_directory="/usr/local"
|
|
cd "${homebrew_directory}"
|
|
fi
|
|
|
|
# create missing directories
|
|
sudo mkdir -vp Cellar Frameworks etc include lib opt sbin share var/homebrew/linked
|
|
|
|
# set permissions
|
|
logged_in_user=$(echo "show State:/Users/ConsoleUser" | scutil | awk '/Name :/ { print $3 }')
|
|
group=$(id -gn "${logged_in_user}")
|
|
if [[ "${homebrew_directory}" == "/usr/local" ]]
|
|
then
|
|
chown -R "${logged_in_user}:${group}" Cellar Frameworks Homebrew bin etc include lib sbin share var/homebrew/linked
|
|
else
|
|
chown -R "${logged_in_user}:${group}" .
|
|
fi
|
|
|
|
# move API cache to ~/Library/Caches/Homebrew
|
|
user_api_cache_dir=~"${logged_in_user}"/Library/Caches/Homebrew/api
|
|
mkdir -vp "${user_api_cache_dir}"
|
|
mv -v "${homebrew_directory}/cache_api/"* "${user_api_cache_dir}"
|
|
rm -vrf "${homebrew_directory}/cache_api"
|