M1 MacでのシンプルなHomebrew管理

に公開
4

Discussion

RessRess

記事へのリンクありがとうございます。

brew shellenv の内容はこのようになっており

brew shellenv を設定しなくてもbrew configで確認すると適切に設定されるようになっています

なのでshellenvは設定しなくてもいい感じに使用できますよ!
(shellenvを設定すると$PATHの書き換えを行いますのでそこだけ書くのもいいかもしれませんね)

junkudojunkudo

コメントありがとうございます!
出力まで添えていただいて感謝です。

なるほど、brew configで設定もしてくれるんですね。
ただ現状の設定が出力されるだけだと勘違いしていました。ただ、そうなるとconfigshellenvの差別化点が難しいですね。

Ressさんの記事を見るに、想定している使い方としては、brew configコマンドを叩くことで使用するbrewを切り替えるかんじですかね。ただ個人の思想としてはアーキテクチャ切り替えとbrew切り替えを別々に扱うと、使用中アーキテクチャ環境と使用中brewで不整合を出しちゃいそうなのが不安ですね。

私は以下の思想ベースで~/.zprofileでのみbrewの切り替えが発生するような形式をとっています。

  1. ARMのアーキテクチャ環境ではARMのbrewしか触れないようにしたい(=それぞれのアーキテクチャはそれぞれ対応したbrewしか見えないようにしたい)
  2. できる限り既存のbrewのパス設定の仕組みに揃えたい

configを使う場面はどちらのbrewを使ってるか分かる情報が欲しい場面に限定されそうなので、ARMアーキテクチャでは/opt/homebrewしか触らない僕の形式ではshellenvで事足りるかも?と思ってます。

RessRess

brew config は現在の設定を表示するコマンドです。誤解を招いてしまいすみません。

私の方式としては今後全てがARMなるという前提で/opt/homebrew/binを使用しています
また必要に応じて/usr/local/bin/brewを呼び出しx86環境も用意しているといった感じです

上記で言いたかったことは「eval $(brew shellenv)をわざわざ呼び出さなくてもbrewコマンドがいい感じに設定してくれるよ!」ってことです

junkudojunkudo

なるほど、こちらこそ変に解釈してしまってすいません。
理解です、ありがとうございます!

今やっと理解したのですがRessさんの手法は、両方の環境で同名パッケージのインストールを許さない形式なんですね。確かにそれならわざわざshellenvを叩く必要はないですね。

僕の場合は両方の環境で同じパッケージを使いたいケースがあったので、そこらへんで思想が違いますね。