MacOS10.13(High Sierra)に色々なフォーミュラをインストールする、2023年3月
HomeBrew MacOS10.13は通常のインストールではソースからでもビルド出来なくなってきました
完全に無理なら諦めますが、なんとかソースなどの書き換えで対応出来そうです
HomeBrew 4.0.0以降はシェルに以下の設定をして下さい
echo 'export HOMEBREW_NO_INSTALL_FROM_API=1' >> ~/$(echo .${SHELL##*/}rc)
source ~/$(echo .${SHELL##*/}rc)
brew tap homebrew/core
まず、llvm@12 これは必要で通常インストール出来るフォーミュラです
ただ、Xcode.app(10.1)をインストールし起動しないとllvm@12もインストール出来ません
https://developer.apple.com/download/more/ # ここからダウンロード
最初にXcode.appを起動した時に出るライセンス認証ダイアログのOKボタンを押すだけです
brew install llvm@12
; その後、
/usr/local/Homebrew/Library/Homebrew/shims/super/cc ; # 80行目
"#{ENV["HOMEBREW_PREFIX"]}/opt/llvm/bin/#{Regexp.last_match(1)}"
これを以下に書き換えます
"#{ENV["HOMEBREW_PREFIX"]}/opt/llvm@12/bin/#{Regexp.last_match(1)}"
islのビルドに gcc@11が必要なのですが gcc@11が islに依存するので gccの通常インストールが出来ません
フォーミュラを書き換え(削除)するので保存しておきます
cp /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/g/[email protected] ~/[email protected]
brew edit gcc@11 # islを無効にします
# depends_on "isl" # 30行目をコメントに
--with-isl=#{Formula["isl"].opt_prefix} # 75行目を削除
--disable-bootstrap # 78行目に追加、とりあえずビルド
brew install gcc@11
brew install --cc=gcc-11 isl
mv ~/[email protected] /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/g/[email protected]
brew install --cc=gcc-11 gcc
llvmでビルドできた islを reinstallしてみたら --cc=gcc-11オプションでエラーになります
llvmでビルドできた islでは --cc=llvm_calngを使わないといけない様です
なぜこうなるのか、原因がわかりません
2024年5月 node(22.2.0)は llvm@15が無いとインストール出来ないので書き換えが必要になります
llvm@15のインストールですが、いくつか方法があるようでネタ元のリンクを貼っておきます
今回はダイレクトに書き換えます、ソースは /tmp にコピーされるので /tmp に移動します
ターミナルをもう1枚開くか、iTerm2なら画面分割で top -u コマンドで動作確認します
brew install --cc=llvm_clang llvm@15
これでソースがダウンロードされ展開され /tmp にコピーされます
topコマンドで bsdtar、ruby、cp と動作確認が出来たらmake前にllvmフォルダーに入って
/tmp/llvmA15...../llvm-project-15.0.7.src/lldb/source/Host/macosx/objcxx/HostInfoMacOSX.mm # 236行目
if (cputype == CPU_TYPE_ARM64 && cpusubtype == CPU_SUBTYPE_ARM64E) {
これを以下に書き換えます
if (cputype == CPU_TYPE_ARM64) {
これで llvm(llvm@15)のインストールが出来ます、その後、
/usr/local/Homebrew/Library/Homebrew/shims/super/cc ; # 80行目
"#{ENV["HOMEBREW_PREFIX"]}/opt/llvm@12/bin/#{Regexp.last_match(1)}"
これを以下に書き換えます
"#{ENV["HOMEBREW_PREFIX"]}/opt/llvm@15/bin/#{Regexp.last_match(1)}"
node(22.2.0) のビルドは llvm@15を使ってください、node.rbでビルドに llvmが指定されてるので
brew edit node ; # 36行目、以下をコメントにして下さい
# on_macos do
# depends_on "llvm" => [:build, :test] if DevelopmentTools.clang_build_version <= 1100
# end
node(22.2.0) はヘッダーのコピーと書き換えが必要になります
システムに触れるので System Integrity Protection(SIP)を無効にして下さい
sudo cp /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/os/signpost.h /usr/include/os/
sudo vim /usr/include/os/signpost.h ; # 280行目
#define os_signpost_event_emit(log, event_id, name, ...) \
os_signpost_emit_with_type(log, OS_SIGNPOST_EVENT, \
event_id, name, ##__VA_ARGS__)
これを以下に書き換えます
#define os_signpost_event_emit(log, event_id, name, ...)
// os_signpost_emit_with_type(log, OS_SIGNPOST_EVENT, \
event_id, name, ##__VA_ARGS__)
brew install --cc=llvm_clang node
python 関係で ModuleNotFoundError: No module named 'packaging' エラー等が出る場合
エラー表示が [email protected]、[email protected] どちらか確認して下さい
mkdir ~/.pip
vim ~/.pip/pip.conf # 以下2行を書く
[global]
break-system-packages = true
cd /usr/local/Cellar/[email protected]/3.12.3/bin # or [email protected]/3.11.9/bin
./python3.12 -m pip install --upgrade pip # or ./[email protected]
./python3.12 -m pip install 'packaging' # or ./[email protected]
2024年6月 llvm@15のライブラリが欠落して、node(22.3.0)以降にアップデート出来ません
templateの書き換えで何とかなるかもしれませんが、私にはわかりません
Undefined symbols for architecture x86_64:
"std::__1::__fs::filesystem::path::__filename() const", referenced from:
__ZNSt3__14__fs10filesystem4pathdVB6v15007ERKS2_ in libnode.a(node_task_runner.o)
__ZNSt3__14__fs10filesystem4path6appendB6v15007INS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEENS_9enable_ifIXsr13__is_pathableIT_EE5valueERS2_E4typeERKSB_ in libnode.a(node_task_runner.o)
__ZNKSt3__14__fs10filesystem4path8filenameB6v15007Ev in libnode.a(node_errors.o)
__ZNSt3__14__fs10filesystem4pathdVB6v15007ERKS2_ in libnode.a(node_modules.o)
"std::__1::__fs::filesystem::path::__root_name() const", referenced from:
__ZNKSt3__14__fs10filesystem4path9root_nameB6v15007Ev in libnode.a(node_task_runner.o)
"std::__1::__fs::filesystem::path::__parent_path() const", referenced from:
__ZNKSt3__14__fs10filesystem4path11parent_pathB6v15007Ev in libnode.a(node_task_runner.o)
__ZNKSt3__14__fs10filesystem4path11parent_pathB6v15007Ev in libnode.a(node_modules.o)
Undefined symbols for architecture x86_64:
"std::__1::__fs::filesystem::path::__filename() const", referenced from:
__ZNSt3__14__fs10filesystem4pathdVB6v15007ERKS2_ in libnode.a(node_task_runner.o)
__ZNSt3__14__fs10filesystem4path6appendB6v15007INS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEENS_9enable_ifIXsr13__is_pathableIT_EE5valueERS2_E4typeERKSB_ in libnode.a(node_task_runner.o)
__ZNKSt3__14__fs10filesystem4path8filenameB6v15007Ev in libnode.a(node_errors.o)
__ZNSt3__14__fs10filesystem4pathdVB6v15007ERKS2_ in libnode.a(node_modules.o)
"std::__1::__fs::filesystem::path::__root_directory() const", referenced from:
__ZNKSt3__14__fs10filesystem4path9root_pathB6v15007Ev in libnode.a(node_task_runner.o)
__ZNSt3__14__fs10filesystem4pathdVB6v15007ERKS2_ in libnode.a(node_task_runner.o)
__ZNSt3__14__fs10filesystem4pathdVB6v15007ERKS2_ in libnode.a(node_modules.o)
"std::__1::__fs::filesystem::path::__root_name() const", referenced from:
__ZNKSt3__14__fs10filesystem4path9root_nameB6v15007Ev in libnode.a(node_task_runner.o)
"std::__1::__fs::filesystem::path::__compare(std::__1::basic_string_view<char, std::__1::char_traits<char> >) const", referenced from:
node::modules::BindingData::TraverseParent(node::Realm*, std::__1::__fs::filesystem::path const&) in libnode.a(node_modules.o)
"std::__1::__fs::filesystem::path::__parent_path() const", referenced from:
__ZNKSt3__14__fs10filesystem4path11parent_pathB6v15007Ev in libnode.a(node_task_runner.o)
__ZNKSt3__14__fs10filesystem4path11parent_pathB6v15007Ev in libnode.a(node_modules.o)
"std::__1::__fs::filesystem::__equivalent(std::__1::__fs::filesystem::path const&, std::__1::__fs::filesystem::path const&, std::__1::error_code*)", referenced from:
node::task_runner::FindPackageJson(std::__1::__fs::filesystem::path const&) in libnode.a(node_task_runner.o)
"std::__1::__fs::filesystem::path::__root_directory() const", referenced from:
__ZNKSt3__14__fs10filesystem4path9root_pathB6v15007Ev in libnode.a(node_task_runner.o)
__ZNSt3__14__fs10filesystem4pathdVB6v15007ERKS2_ in libnode.a(node_task_runner.o)
__ZNSt3__14__fs10filesystem4pathdVB6v15007ERKS2_ in libnode.a(node_modules.o)
"std::__1::__fs::filesystem::__current_path(std::__1::error_code*)", referenced from:
node::task_runner::RunTask(std::__1::shared_ptr<node::InitializationResultImpl>, std::__1::basic_string_view<char, std::__1::char_traits<char> >, std::__1::vector<std::__1::basic_string_view<char, std::__1::char_traits<char> >, std::__1::allocator<std::__1::basic_string_view<char, std::__1::char_traits<char> > > > const&) in libnode.a(node_task_runner.o)
"std::__1::__fs::filesystem::path::__compare(std::__1::basic_string_view<char, std::__1::char_traits<char> >) const", referenced from:
node::modules::BindingData::TraverseParent(node::Realm*, std::__1::__fs::filesystem::path const&) in libnode.a(node_modules.o)
"std::__1::__fs::filesystem::path::replace_extension(std::__1::__fs::filesystem::path const&)", referenced from:
node::ReportFatalException(node::Environment*, v8::Local<v8::Value>, v8::Local<v8::Message>, node::EnhanceFatalException) in libnode.a(node_errors.o)
"std::__1::__fs::filesystem::__equivalent(std::__1::__fs::filesystem::path const&, std::__1::__fs::filesystem::path const&, std::__1::error_code*)", referenced from:
node::task_runner::FindPackageJson(std::__1::__fs::filesystem::path const&) in libnode.a(node_task_runner.o)
"std::__1::__fs::filesystem::__status(std::__1::__fs::filesystem::path const&, std::__1::error_code*)", referenced from:
node::task_runner::FindPackageJson(std::__1::__fs::filesystem::path const&) in libnode.a(node_task_runner.o)
"std::__1::__fs::filesystem::__current_path(std::__1::error_code*)", referenced from:
node::task_runner::RunTask(std::__1::shared_ptr<node::InitializationResultImpl>, std::__1::basic_string_view<char, std::__1::char_traits<char> >, std::__1::vector<std::__1::basic_string_view<char, std::__1::char_traits<char> >, std::__1::allocator<std::__1::basic_string_view<char, std::__1::char_traits<char> > > > const&) in libnode.a(node_task_runner.o)
ld: symbol(s) not found for architecture x86_64
"std::__1::__fs::filesystem::path::replace_extension(std::__1::__fs::filesystem::path const&)", referenced from:
node::ReportFatalException(node::Environment*, v8::Local<v8::Value>, v8::Local<v8::Message>, node::EnhanceFatalException) in libnode.a(node_errors.o)
clang-15: error: linker command failed with exit code 1 (use -v to see invocation)
残念ながら node(22.2.0)が最終バージョンになりました、以下が依存関係のバージョンです
node (22.2.0)
├── brotli (1.1.0)
├── c-ares (1.30.0)
├── icu4c (74.2)
├── libnghttp2 (1.61.0)
├── libuv (1.48.0)
├── openssl@3 (3.3.1)
│ └── ca-certificates (2024-03-11)
├── [email protected] (3.12.4)
│ ├── mpdecimal (4.0.0)
│ ├── openssl@3 (3.3.1)
│ │ └── ca-certificates (2024-03-11)
│ ├── sqlite (3.46.0)
│ │ └── readline (8.2.10)
│ ├── xz (5.4.6)
│ ├── libffi (3.4.6)
│ ├── ca-certificates (2024-03-11)
│ ├── readline (8.2.10)
│ └── gettext (0.22.5)
├── ca-certificates (2024-03-11)
├── mpdecimal (4.0.0)
├── readline (8.2.10)
├── sqlite (3.46.0)
│ └── readline (8.2.10)
├── xz (5.4.6)
└── libffi (3.4.6)
2024年8月 node(22.2.0) のボトルを置いておきます、不具合があれば教えて下さい
shasum -a 256 : 1a379af916eda24de9a0fd37fcf63575a37baa9add2066073e13aab7882186c6
brew install node--22.2.0.high_sierra.bottle.tar.gz
2024年9月 llvm(19.1.0) がリリースされました、インストール方法は llvm@15 と同じです
まだ llvm(19.1.0) を必要とするフォーミュラは無さそうです
rust は python2 と python3 を使っているいのでシステムを書き換えます
SIP を無効にして下さい、ややこしいので実行する場合は慎重に行って下さい
cd /usr/bin
sudo mv /usr/bin/python /usr/bin/python_buck
sudo ln -s ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/pythonw2.7 /usr/bin/python2
sudo ln -s /usr/local/bin/python3 /usr/bin/python
sudo ln -s /usr/local/bin/python3 /usr/bin/python3
rust は llvm@18 に依存するので、llvm(19.1.0) にしていないならフォーミュラを書き換えます
llvm(19.1.0) にアップデートしてるなら llvm@18 がインストールされるのでフォーミュラの書き換えは必要ありません
llvm@18 のインストールも llvm@15 と同じです
brew edit rust # llvm(19.1.0) にアップデートしていない場合
depends_on "llvm@18" #37行目
以下に書き換え
depends_on "llvm"
--llvm-root=#{Formula["llvm@18"].opt_prefix} #121行目
以下に書き換え
--llvm-root=#{Formula["llvm"].opt_prefix}
brew install rust
2024年9月 php は gd でエラーになります、pkg-config が関係してるようですがわかりません
brew edit php
--enable-gd # 135行目を削除します
これでインストールは出来ますが gd 拡張が使えません、何か良いアイデアがあれば教えて下さい
brew install --cc=llvm_clang php
# llvm@15
2024年9月 tar のバージョンが古いのいで ruby の展開が出来ません
gnu-tar より高機能な libarchive を使います
brew install libarchive
/usr/local/Homebrew/Library/Homebrew/unpack_strategy/tar.rb # 49行目
system_command! "tar",
これを以下に書き換えます
system_command! "/usr/local/opt/libarchive/bin/tar",
brew install ruby
2024年8月 mysql(9.0.1) がリリースされました
mysql(8.3.0) から (9.0.1) へダイレクトにバージョンアップが出来ません
アップグレードの方法は幾つかあります https://github.com/orgs/Homebrew/discussions/5539
色々試してみましたが結果的にデーターベースのバックアップを取って
mysql のアンインストール、/usr/local/var/mysql の削除してから
mysql(9.0.1) をダイレクトにインストールするのが一番簡単でした
abseil、protobuf は llvm@15 を使って下さい
brew install --cc=llvm_clang abseil
brew install --cc=llvm_clang protobuf
mysql(9.0.1_3) をインストールするとライブラリが足らないエラーで動かなかったのに
再度、インストールしてみると動きました、mysql は不安定でエラーも難し過ぎます
それでも便利なアプリなのでバージョンを上げる際は、必ずバックアップ取って下さい
brew unlink boost
mysql には llvm@18 が必要になります
/usr/local/Homebrew/Library/Homebrew/shims/super/cc ; # 80行目
"#{ENV["HOMEBREW_PREFIX"]}/opt/llvm@15/bin/#{Regexp.last_match(1)}"
これを以下に書き換えます
"#{ENV["HOMEBREW_PREFIX"]}/opt/llvm@18/bin/#{Regexp.last_match(1)}"
brew install --cc=llvm_clang mysql
2024年5月 libheifはビルド依存する pkg-configが Homebrewのgdk-pixbufを読み込みエラーになります
mv /usr/local/Cellar/gdk-pixbuf/2.42.12 /usr/local/Cellar/gdk-pixbuf/2.42.10
brew install libheif
libheif のインストールが終われば元に戻しましょう
mv /usr/local/Cellar/gdk-pixbuf/2.42.10 /usr/local/Cellar/gdk-pixbuf/2.42.12
2024年9月 ghostscript は依存する tesseract を含めソースの書き換えが必要になります
filesystem を無効にしてコマンドで拡張子を取得してるので不具合が出るかもしれません
brew install gnu-sed
brew install --cc=llvm_clang tesseract --debug
# llvm@15
BuildError: Failed executing: make training
1. raise
2. ignore
3. backtrace
4. irb
5. shell
Choose an action:5
[MacBook-Pro]% cd /tmp/tesseract-...../tesseract-5.4.1/
全てコピペして下さい
/usr/local/bin/gsed -i '/#include <filesystem>/d
s/filePath.extension() == ".box"/strcmp(bu,".box")==0/
/Load input files/a FILE *po\;\nchar bu[6]\;
s/.*std::filesystem::path filePath = argv\[arg]\;/char co[256] = "echo "\;\
strcat(co,argv[arg])\;\
strcat(co,"|rev|cut -c -4|rev")\;\
po = popen(co,"r")\;\
fgets(bu,6,po)\;\
pclose(po)\;\
strtok(bu,"\\n\\0")\;/' src/training/unicharset_extractor.cpp
[MacBook-Pro]% make training
[MacBook-Pro]% exit
1. raise
2. ignore
3. backtrace
4. irb
5. shell
Choose an action:2
brew install --cc=gcc-11 ghostscript --debug
BuildError: Failed executing: make training
1. raise
2. ignore
3. backtrace
4. irb
5. shell
Choose an action:5
[MacBook-Pro]% cd /tmp/ghostscript-...../ghostscript-10.04.0/
[MacBook-Pro]% /usr/local/bin/gsed -i 's/\/\*.*\*\///;379 s/^/\/\*/;391 s/^/\*\//' base/tessocr.cpp
[MacBook-Pro]% make install
[MacBook-Pro]% exit
1. raise
2. ignore
3. backtrace
4. irb
5. shell
Choose an action:2
shared-mime-info も --cc=gcc-11 オプションを使って下さい
brew install --cc=gcc-11 shared-mime-info
subversion は llvm がインストールされていればメイクに clang と clang-15 を併用します
10.13 純正 clang のアーキテクチャは i386 , clang-15 のアーキテクチャは x86_64 になります
clang と clang-15 はアーキテクチャが違うので llvm があるとエラーになります
subversion をインストールする場合は llvm のリンクを解除してインストールして下さい
brew unlink llvm@15
; brew install subversion
subversion のインストールが終われば llvm のリンクを戻して大丈夫です
brew link llvm@15
2024年5月 openexr をリインストールしたらエラーになりました
~/Library/Logs/Homebrew/openexr/01.cmake を見てみると
libdeflate , clang-format がないエラーです、依存関係が更新されてません
brew install libdeflate
brew reinstall openexr
clang-format はなくても大丈夫です
2024年5月 c-ares はヘッダーで定義されてないようでエラーになります
c-ares は node に必要なので SIP を無効にして書き換えます
sudo vim /usr/include/dispatch/dispatch.h # 38行目
#if !defined(HAVE_UNISTD_H) || HAVE_UNISTD_H
HAVE_UNISTD_H 定義を無効にして unistd.hを読み込ませます
#if !defined(HAVE_UNISTD_H) // || HAVE_UNISTD_H
brew install c-ares
~/Library/Logs/Homebrew/c-ares/02.cmake を確認すると
has no symbols と警告が出ながらビルドは成功します