Homebrewプロジェクトは、Mac用の非公式のLinuxスタイルのパッケージマネージャーとして始まりました。そのユーザーはすぐにそのフレンドリーなインターフェースと便利なプロンプトに夢中になり、運命の奇妙なひねりのように見えるかもしれませんが、Linuxに移植されました。
当初、macOSとLinuxには2つの別々のプロジェクト(HomebrewとLinuxbrew)がありましたが、現在はHomebrewのコアが両方のオペレーティングシステムを管理しています。私はMacからLinuxに移行する旅をしているので、macOS用のお気に入りのオープンソースアプリケーションがLinuxでどのように機能するかを調べており、HomebrewによるLinuxのサポートが本当に輝いていることを嬉しく思います。
LinuxでHomebrewを使用する理由
長年のLinuxユーザーからのHomebrewへの合理的な最初の応答は、「なぜ単に使用しないのか…」です。次の単語は、好みのバージョンのLinuxのパッケージマネージャーです。 Debianベースのシステムにはすでにapt
があります 、Fedora-システムにはdnf
があります およびyum
、およびFlatpakやAppImageのようなプロジェクトは、両方でスムーズに実行することにより、ギャップを埋めるために機能します。私はこれらすべてのテクノロジーを使用してかなりの時間を費やしてきましたが、それぞれがそれ自体で強力であると言わざるを得ません。
では、なぜ私はHomebrewに固執するのですか?まず第一に、それは私には信じられないほどなじみがあります。過去のプロプライエタリツールのよりオープンソースの代替手段に移行するにつれて、私はすでに多くのことを学んでいます。Homebrewのような慣れ親しんだものを維持することで、オペレーティングシステム間のすべての違いに圧倒されることなく、一度に1つのことを学ぶことに集中できます。 。
また、Homebrewのようにユーザーに優しいパッケージマネージャーはまだ見たことがありません。デフォルトのヘルプ出力が示すように、コマンドは適切に編成されています。
$ brew -h
Example usage:
brew search [TEXT|/REGEX/]
brew info [FORMULA...]
brew install FORMULA...
brew update
brew upgrade [FORMULA...]
brew uninstall FORMULA...
brew list [FORMULA...]
Troubleshooting:
brew config
brew doctor
brew install --verbose --debug FORMULA
Contributing:
brew create [URL [--no-fetch]]
brew edit [FORMULA...]
Further help:
brew commands
brew help [COMMAND]
man brew
https://docs.brew.sh
この短い出力は制限と誤解される可能性がありますが、サブコマンドの内部をざっと見ると、豊富な機能がわかります。上記のリストは23行の長さですが、install
サブコマンドには、上級ユーザーが利用できるなんと79行の情報があります。
$ brew --help | wc -l
23
$ brew install --help | wc -l
79
依存関係を無視またはインストールするオプション、ソースからどのコンパイラを使用してビルドするかを選択するオプション、およびアプリケーションの公式の「ボトル入り」バージョンに対して正確なアップストリームGitコミットを使用するオプションがあります。言うまでもなく、Homebrewは専門家と初心者の両方を対象としています。
LinuxでHomebrewを使い始める
Homebrewを試してみたい場合は、MacまたはLinuxにインストールするための優れたワンライナースクリプトがあります。
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
このコマンドは、Homebrewインストーラースクリプトをすぐに実行します。もっと注意が必要な場合は、curl
ファイルを確認し、確認後に手動で実行します:
$ curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh --output homebrew_installer.sh
$ more homebrew_installer.sh # review the script until you feel comfortable
$ bash homebrew_installer.sh
Linuxの手順には、ドットファイル、特に~/.profile
の構成が含まれています。 Debianシステムと~/.bash_profile
Fedoraで:
$ test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
$ test -r ~/.bash_profile && echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.bash_profile
$ echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile
インストールを確認するために、Homebrewチームは空のhello
を提供します テストの公式:
$ brew install hello
==> Downloading https://linuxbrew.bintray.com/bottles/hello-2.10.x86_64_linux.bottle.tar.gz
######################################################################## 100.0%
==> Pouring hello-2.10.x86_64_linux.bottle.tar.gz
? /home/linuxbrew/.linuxbrew/Cellar/hello/2.10: 52 files, 595.6KB
インストールは問題なく機能しているようですので、もう少し詳しく見ていきます。
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
Homebrewは、デフォルトで「[Linux]がインストールしなかった必要なものをインストールする」アプリケーションであることを誇っています。
brew
を使用します Homebrewにパッケージ化されたコマンドラインユーティリティのいずれかをインストールするコマンド。これらのパッケージ定義は「式」と呼ばれ、「ボトル」を介してコンパイルおよび共有されます。 Homebrewの世界には他にもビール指向の用語がたくさんありますが、パッケージマネージャーの主なポイントは、ソフトウェアに簡単にアクセスできるようにすることです。
どんなソフトウェア?私のようなオタクに役立つものについて考えてください(そして、あなたがこれを読んでいるので、おそらくあなたも)。たとえば、便利なtree
ディレクトリ構造またはpyenv
を表示するコマンド 、MacでPythonの複数のバージョンを管理するために使用します。
search
を使用して利用可能なすべての数式を確認できます コマンド、およびwc
の追加 コマンドは、使用可能な数を示します:
# -l counts the number of lines
$ brew search | wc -l
5087
これまでに5,000を超える数式があり、これは信じられないほどの量のソフトウェアです。注意点は、すべての数式がLinuxで実行されるわけではないということです。 brew search --help
の出力にセクションがあります これは、実行しているオペレーティングシステムによってソフトウェアをフィルタリングするためのフラグを示しています。各オペレーティングシステムのリポジトリリストをブラウザで起動します。私はFedoraを実行しているので、試してみます:
$ brew search --fedora tree
ブラウザはhttps://apps.fedoraproject.org/packages/s/tree
を読み込みます 、Fedoraで利用可能なオプションを示しています。他にも閲覧する方法があります。数式はコード化され、オペレーティングシステム(HomebrewCoreのMacおよびLinuxビットのLinuxCore)ごとに分割されたコアリポジトリに一元化されます。これらはHomebrewAPIからも入手でき、Webサイトにリストされています。
これらすべてのオプションを使用しても、他のユーザーからの推奨事項を通じて、新しいツールのほとんどを見つけることができます。インスピレーションを探しているなら、ここに私のお気に入りのいくつかがあります:
-
pyenv
、rbenv
、およびnodenv
Python、Ruby、Node.jsのバージョンを(それぞれ)管理するため -
imagemagick
スクリプト可能な画像編集用 -
pandoc
スクリプト可能なドキュメント変換用(私はしばしば.docxから.mdまたは.htmlに切り替えます) hub
GitHubユーザーのGitエクスペリエンスを向上させるために-
tldr
コマンドラインユーティリティの使用方法の例については
Homebrewを探索するには、tldrページを見てください。これは、アプリケーションのマニュアルページをスクロールする代わりのユーザーフレンドリーな方法です。 search
を実行して、利用可能であることを確認します :
$ brew search tldr
==> Formulae
tldr ✔
成功!チェックマークは、それが利用可能であることを示します。これでインストールできます:
$ brew install tldr
==> Downloading https://linuxbrew.bintray.com/bottles/tldr-1.3.0_2.x86_64_linux.bottle.1.tar.gz
######################################################################## 100.0%
==> Pouring tldr-1.3.0_2.x86_64_linux.bottle.1.tar.gz
? /home/linuxbrew/.linuxbrew/Cellar/tldr/1.3.0_2: 6 files, 63.2KB
Homebrewはビルド済みのバイナリを提供するため、ローカルマシンのソースコードからビルドする必要はありません。これにより、多くの時間とCPUファンのノイズを節約できます。私がHomebrewについて感謝しているもう一つのことは、それが何を意味するのかを正確に理解していなくても、この機能を理解できるということです。自分でビルドする場合は、-s
を使用してください または--build-from-source
brew install
でフラグを立てる ソースから数式をコンパイルします(ボトルが存在する場合でも)。
同様に、内部の複雑さは興味深いものになる可能性があります。 info
を実行しています tldr
で 依存関係の管理がどのように行われるか、数式のソースコードがディスク上にある場所、さらには公開分析も利用できることを示しています。
$ brew info tldr
tldr: stable 1.3.0 (bottled), HEAD
Simplified and community-driven man pages
https://tldr.sh/
Conflicts with:
tealdeer (because both install `tldr` binaries)
/home/linuxbrew/.linuxbrew/Cellar/tldr/1.3.0_2 (6 files, 63.2KB) *
Poured from bottle on 2020-06-08 at 15:56:15
From: https://github.com/Homebrew/linuxbrew-core/blob/master/Formula/tldr.rb
==> Dependencies
Build: pkg-config ✔
Required: libzip ✔, curl ✔
==> Options
--HEAD
Install HEAD version
==> Analytics
install: 197 (30 days), 647 (90 days), 1,546 (365 days)
install-on-request: 197 (30 days), 646 (90 days), 1,546 (365 days)
build-error: 0 (30 days)
MacからLinuxへの1つの制限
macOSでは、Homebrew cask
サブコマンドは、同じ優れたコマンドラインユーティリティを使用してアプリケーション全体をインストールおよび管理する方法をユーザーに提供します。残念ながら、cask
Linuxディストリビューションではまだ機能しません。オープンソースツールをインストールしようとしたときにこれを見つけました:
$ brew cask install tusk
Error: Installing casks is supported only on macOS
フォーラムで質問したところ、他のユーザーから簡単なフィードバックがありました。つまり、オプションは次のとおりです。
- プロジェクトをフォークし、機能を構築して、他の人にそれが価値があることを示します
- アプリケーションの式を記述し、ソースからビルドします
- アプリケーションのサードパーティリポジトリを作成します
最後のものは私にとって最も興味深いものです。 Homebrewは、「タップ」(ビールの影響を受ける別の用語)を作成して維持することにより、サードパーティのリポジトリを管理します。システムに慣れ、エコシステムに追加したい場合は、タップを調べる価値があります。
Homebrewインストールのバックアップ
私のお気に入りのHomebrew機能の1つは、バージョン管理の他のドットファイルと同じようにインストールをバックアップする方法です。このプロセスのために、Homebrewはbundle
を提供します dump
を保持するサブコマンド Brewfileを生成するサブコマンド。このファイルは、現在インストールされているすべてのツールの再利用可能なリストです。インストールからBrewfileを生成するには、使用するフォルダーに移動して実行します。
$ cd ~/Development/dotfiles # This is my dotfile folder
$ brew bundle dump
$ ls Brewfile
Brewfile
マシンを変更して同じアプリケーションをセットアップしたい場合は、Brewfileのあるフォルダーに移動し、次のコマンドで再インストールします。
$ ls Brewfile
Brewfile
$ brew bundle
リストされているすべての数式が新しいマシンにインストールされます。
MacとLinux全体の醸造ファイル管理
Brewfileは既存のインストールをバックアップするための優れた方法ですが、Mac上の何かがLinuxで実行されない場合、またはその逆の場合はどうなりますか?私が見つけたのは、Homebrewは、MacであろうとLinuxであろうと、特定のオペレーティングシステムで動作しない行を優雅に無視するということです。互換性のないリクエスト(Linuxにキャスクをインストールするようにbrewに依頼するなど)に遭遇すると、それらをスキップして続行します:
$ brew bundle --file=Brewfile.example
Skipping cask licecap (on Linux)
Skipping cask macdown (on Linux)
Installing fish
Homebrew Bundle complete! 1 Brewfile dependency now installed.
構成をできるだけシンプルにするために、両方のオペレーティングシステムで同じBrewfileを使用していますが、実行するたびにOS固有のバージョンがインストールされるため、問題は発生していません。
Homebrewは、コマンドラインユーティリティの頼りになるマネージャーであり、その親しみやすさにより、私のLinuxエクスペリエンスははるかに楽しいものになっています。 Homebrewは私を整理して最新の状態に保ち、使いやすさと機能の深さのバランスを評価し続けています。私はパッケージ管理の詳細をユーザーが知る必要のある最小限の情報に保つことを好みます、そしてほとんどの人はそれから利益を得るでしょう。 Linuxパッケージマネージャーに既に慣れている場合、Homebrewは単純なものになっているかもしれませんが、もう少し深く見ると、この記事の内容をはるかに超える高度なオプションがわかります。
Linuxユーザー向けのパッケージ管理オプションはたくさんあります。 macOSの世界から来ている場合、Homebrewは家のように感じるでしょう。