GNU/Linux >> Linux の 問題 >  >> Linux

HomebrewでMacからLinuxへの切り替えを簡単に

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

インストールは問題なく機能しているようですので、もう少し詳しく見ていきます。

コマンドラインユーティリティ用のBrew

その他の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サイトにリストされています。

これらすべてのオプションを使用しても、他のユーザーからの推奨事項を通じて、新しいツールのほとんどを見つけることができます。インスピレーションを探しているなら、ここに私のお気に入りのいくつかがあります:

  • pyenvrbenv 、および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は家のように感じるでしょう。


Linux
  1. Linuxカーネルをftraceで分析する

  2. nmcliを使用してLinuxコマンドラインからネットワーク接続を管理する

  3. MacからLinuxに切り替えた理由

  1. MacからLinuxに切り替えた理由

  2. Linux でコマンドラインを使用して起動可能な ISO から起動可能な USB を作成する方法は?

  3. Linux コマンドラインからランダムな MAC アドレスを生成する方法

  1. Linuxcronコマンドを使用したタスクのスケジューリング

  2. konsolekalendarコマンドを使用してLinuxターミナルからカレンダーを管理します

  3. MacからLinuxに切り替える準備ができているかどうかを知る方法