レッスン2: 発展的なテクニック

外部リポジトリをタップして追加パッケージを利用する

Homebrewのデフォルトリポジトリには様々なパッケージが含まれていますが、時にはデフォルトリポジトリに含まれていない追加のパッケージにアクセスする必要がある場合があります。

このような場合には外部リポジトリが役立ちます。 外部リポジトリをHomebrewに追加するには、brew tapコマンドに続けてリポジトリのURLを指定します。 例えば、追加フォントのためにcaskroom/fontsリポジトリを追加するには、次のように実行します:

brew tap homebrew/cask-fonts

外部リポジトリを追加した後は、通常通りbrew searchbrew installコマンドを使用してリポジトリからパッケージを検索してインストールすることができます。

Homebrewパッケージを自作する

Homebrewパッケージとしてまだ提供されていないソフトウェアがある場合、Homebrew フォーミュラを使って独自のパッケージを作成することができます。

フォーミュラとは、パッケージのインストールや設定の方法を記述した Ruby スクリプトのことです。 フォーミュラを書くのは少し面倒ですが、よく使うパッケージのフォーミュラを作ったり、公式の Homebrew フォーミュラリポジトリにフォーミュラをコントリビュートしたりするととても役に立ちます。 公式の Homebrew フォーミュラリポジトリは https://github.com/Homebrew/homebrew-core にあります。

自分でフォーミュラを書くためには、Homebrew Formula Cookbook (https://docs.brew.sh/Formula-Cookbook) が参考になります。 これはフォーミュラの書き方に関する詳細な情報を提供するもので、様々なフォーミュラの例も掲載されています。

ここでは、例としてexampleという架空のパッケージのフォーミュラを示します:

class Example < Formula
  desc "Example package for Homebrew"
  homepage "https://example.com/"
  url "https://example.com/example-1.0.tar.gz"
  sha256 "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
  def install
    system "./configure", "--prefix=#{prefix}"
    system "make", "install"
  end
end

Homebrewをより有効に使うための使い方

ここでは、Homebrewを有効に使うための使い方をさらに紹介します:

brew doctorを使用してHomebrewの問題を診断し、アドバイスに従って問題を解決する

brew doctorコマンドは、インストールされた Homebrew に関する一般的な問題をチェックし、それを修正するための提案を示します。

brew cleanupを使用して、古いパッケージや未使用のパッケージを掃除する

brew cleanupコマンドは、不要になった古いバージョンのパッケージとその依存関係を削除します。

これは、一部のパッケージを正しく動作させるために必要なものです。 例えば、[email protected]パッケージをインストールし、それをデフォルトのPythonバージョンとして使いたい場合、次のようにしてシステムでリンクさせます:

逆に、リンクを解除して代わりに別のバージョンのPythonを使いたい場合は、以下を実行します:

brew unlink [email protected]

パッケージのリストを管理するためにBrewfileを使う

Brewfile は、Homebrew を使ってインストールまたはアップデートしたいパッケージの一覧を記したテキストファイルです。 Brewfile は brew bundle dump コマンドを使って生成することができます。 brew bundle dump コマンドは現在インストールされている全てのパッケージの一覧を示すファイルを作成します。 Brewfileに記載されているパッケージは brew bundle install コマンドでインストールすることができます。

まとめ

このコースが役に立って、Homebrewを使ってMacでパッケージを管理することに慣れていただけたらうれしいです。 もし何かフィードバックがあればぜひ教えてください。Happy brewing!

このレッスンはどうでしたか?