HGC(Human Genome Center)上にHomebrew(Linuxbrew)を構築する
Introduction
先日のメンテナンスでLinuxbrew環境が壊れてしまったのでこの機会に整理しておく…
Summary
-
$HOMEがsymlinkであるため、Homebrew上でリンクを辿らないようにするよう書き換えが必要
-
cacertが古いため(?)設定が必要
-
環境変数が特殊なためHOMEBREW_NO_ENV_FILTERINGが必要、それに伴いxzのCentOS 7用パッチが必要
-
gitのmake時にNEEDS_LIBICONV=1が必要
Prepare cacert
mkdir -p $HOME/.certs
wget --no-check-certificate -O - https://curl.se/ca/cacert.pem > $HOME/.certs/cacert.pem
cat >> ~/.curlrc << EOM
cacert = $HOME/.certs/cacert.pem
capath = $HOME/.certs/
EOM
Prepare .bashrc
export GIT_EXECUTABLE=/usr/local/package/git/2.20.0/bin/git
export HOMEBREW_NO_ENV_FILTERING=1
export HOMEBREW_CURLRC=1
Bootstrap Homebrew
Install using older script which does not check curl version.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/fb3acdd4ba286d3b08c980980ec63c8a888d1241/install.sh)"
Patch Homebrew
diff --git a/Library/Homebrew/cmd/update.sh b/Library/Homebrew/cmd/update.sh
index 6e6693c82..73d256ce3 100644
--- a/Library/Homebrew/cmd/update.sh
+++ b/Library/Homebrew/cmd/update.sh
@@ -728,7 +728,7 @@ EOS
export HOMEBREW_UPDATE_BEFORE"${TAP_VAR}"="${CURRENT_REVISION}"
export HOMEBREW_UPDATE_AFTER"${TAP_VAR}"="${CURRENT_REVISION}"
else
- merge_or_rebase "${DIR}" "${TAP_VAR}" "${UPSTREAM_BRANCH}"
+ #merge_or_rebase "${DIR}" "${TAP_VAR}" "${UPSTREAM_BRANCH}"
[[ -n "${HOMEBREW_VERBOSE}" ]] && echo
fi
done
diff --git a/Library/Homebrew/extend/ENV/shared.rb b/Library/Homebrew/extend/ENV/shared.rb
index 381ceccfd..c64b7cac6 100644
--- a/Library/Homebrew/extend/ENV/shared.rb
+++ b/Library/Homebrew/extend/ENV/shared.rb
@@ -29,7 +29,7 @@ module SharedEnvExtension
MACOSX_DEPLOYMENT_TARGET SDKROOT DEVELOPER_DIR
CMAKE_PREFIX_PATH CMAKE_INCLUDE_PATH CMAKE_FRAMEWORK_PATH
GOBIN GOPATH GOROOT PERL_MB_OPT PERL_MM_OPT
- LIBRARY_PATH LD_LIBRARY_PATH LD_PRELOAD LD_RUN_PATH
+ LIBRARY_PATH LD_PRELOAD LD_RUN_PATH
].freeze
private_constant :SANITIZED_VARS
diff --git a/Library/Homebrew/shims/super/cc b/Library/Homebrew/shims/super/cc
index c629efa9e..ab06eb15d 100755
--- a/Library/Homebrew/shims/super/cc
+++ b/Library/Homebrew/shims/super/cc
@@ -257,7 +257,7 @@ class Cmd
def keep?(path)
# Allow references to self
- if formula_prefix && path.start_with?("#{formula_prefix}/")
+ if formula_prefix && (path.start_with?("#{formula_prefix}/") || path.start_with?("#{Pathname.new(formula_prefix).realpath}/"))
true
# first two paths: reject references to Cellar or opt paths
# for unspecified dependencies
diff --git a/bin/brew b/bin/brew
index a6e4f8865..1f3f5cf7e 100755
--- a/bin/brew
+++ b/bin/brew
@@ -39,7 +39,7 @@ do
done
unset cmd
-BREW_FILE_DIRECTORY="$(quiet_cd "${0%/*}/" && pwd -P)"
+BREW_FILE_DIRECTORY="$(quiet_cd "${0%/*}/" && pwd)"
HOMEBREW_BREW_FILE="${BREW_FILE_DIRECTORY%/}/${0##*/}"
HOMEBREW_PREFIX="${HOMEBREW_BREW_FILE%/*/*}"
- The LD_LIBRARY_PATH thing is to keep libgcc available in homebrew world.
- Removing pwd -P (and allowing
Pathname.new(formula_prefix).realpath
) is very specific to HGC, where $HOME is symlink. Some symlinks must not be resolved or after home-disk migration your homebrew will be messed up. - By the way in this way you cannot
brew update
. You need to git update .linuxbrew/Homebrew and each Taps.
Install xz
Due to HOMEBREW_NO_ENV_FILTERING, /usr/bin/xz will load homebrew's liblzma, which is usually incompatible. You need patched xz:
brew install cielavenir/ciel/xz
Upgrade git
NEEDS_LIBICONV=1 brew install git
My Formula customizations
diff --git a/Formula/patchelf.rb b/Formula/patchelf.rb
index a7a9f22a260..65e315284b3 100644
--- a/Formula/patchelf.rb
+++ b/Formula/patchelf.rb
@@ -21,7 +21,7 @@ class Patchelf < Formula
end
on_linux do
- depends_on "gcc"
+ #depends_on "gcc"
end
fails_with gcc: "5" # Needs std::optional
diff --git a/Formula/pkg-config.rb b/Formula/pkg-config.rb
index 6b845cdca5f..3cd38c37128 100644
--- a/Formula/pkg-config.rb
+++ b/Formula/pkg-config.rb
@@ -48,6 +48,7 @@ class PkgConfig < Formula
"--disable-host-tool",
"--with-internal-glib",
"--with-pc-path=#{pc_path}",
+ "--with-libiconv=gnu",
"--with-system-include-path=#{MacOS.sdk_path_if_needed}/usr/include"
system "make"
system "make", "install"
Author And Source
この問題について(HGC(Human Genome Center)上にHomebrew(Linuxbrew)を構築する), 我々は、より多くの情報をここで見つけました https://qiita.com/cielavenir/items/124ef177f56e11611a8c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .