2019年4月26日金曜日

Ubuntu で Linuxbrew を試してみた

概要

macOS ではメジャーな Homebrew の Linux 版が出たので試してみました
インストールから基本的な使い方まで紹介したいと思います

環境

  • Ubuntu 16.04 LTS
  • Linuxbrew 2.1.1

各種バージョン

インストールするには gcc や glibc、カーネルバージョン、CPU アーキテクチャなどが要件を満たしている必要があります

  • GCC 4.4 or newer
  • Linux 2.6.32 or newer
  • Glibc 2.12 or newer
  • 64-bit x86_64 CPU

Ubuntu での各種バージョンの確認方法は以下の通りです

  • gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  • ldd --version
ldd (Ubuntu GLIBC 2.23-0ubuntu10) 2.23
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
  • uname -an
Linux ubuntu-xenial 4.4.0-143-generic #169-Ubuntu SMP Thu Feb 7 07:56:38 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

これらは以下のコマンドでインストールできるのでインストールされていない場合はインストールしましょう

  • sudo apt install build-essential

インストール

ワンライナーで可能です

  • sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"

ちなみに root ユーザで実行しようとすると怒られるので一般ユーザで実行してください

インストール中は実行しているコマンドが流れるので何をしているか詳細を確認できます
問題なく上記のコマンドが実行できたら profile にセットアップ用の設定を入れます
これらのコマンドはインストールコマンドを実行後に表示されるので、表示されたコマンドを実行してください

  • echo 'eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)' >>~/.profile
  • eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)

1 行目で実行したコマンドは 2 行目で実行しているコマンドを .profile に書き込んでいるだけです
なので 2 行目を実行せずにログアウト -> ログインでも OK です

書き込んだら以下のコマンドを実行してインストールが問題なく完了したか確認しましょう

  • brew --version

とりあえずインストールしてみる

なんでもいいのでインストールしてみましょう

  • brew install tmux

apt と違って root 権限が必要ないです

これで tmux コマンドが使えるようになっていると思います

パスを確認してみる

まずコマンドがどこにインストールされているですが /home/linuxbrew/.linuxbrew/bin/tmux にありました
このパスは先程 .profile に書き込んだ /home/linuxbrew/.linuxbrew/bin/brew shellenv を実行することで $PATH に追加してくれています

インストールした tmux 自体は /home/linuxbrew/.linuxbrew/Cellar/tmux/2.8_1 にありここの bin から /home/linuxbrew/.linuxbrew/bin にシンボリックリンクが貼られています (この辺りは Homebrew と同じ仕組みだと思います)

Brewfile

普通に使えます

  • brew bundle dump

で現在のインストールしたフォームラや tap の情報を Brewfile に書き込んでくれます

tap "homebrew/bundle"
tap "homebrew/core"
brew "tmux"
brew "redis"

例えば brew "redis" を追加で書き込んだとします
それをインストールするには

  • brew bundle

と実行します

バックグラウンド起動するには

Homebrew には brew services というコマンドがあり例えば

  • brew services start redis-server
  • brew services list

という感じでプロセスの管理を行えます
Linuxbrew でも試してみたのですがどうやら services はまだサポートされていないようです
コマンドを実行してみたところ Error: brew services is supported only on macOS となったので間違いないと思います

.service ファイルを作成して systemctl に組み込むことは可能ですが面倒なので微妙な感じはします
なのでバックグラウンドで実行する場合は &nohup を使うしかなさそうです

最後に

Ubuntu16.04 で Linuxbrew を試してみました
少ししか触っていませんが Homebrew と同じ感じで使えると思います
ただ一部のコマンドがまだ動作しないのでその辺りは注意が必要です

あとは apt と混在するのが面倒な気もするので使うならどちらかのほうが良いかなと思います
apt の場合はインストールしたいバッケージのバージョンが最新でないケースが多いですが Linuxbrew は基本的には最新です
ただ、特殊なパスにインストールされたり systemctl 対応していないなどもあるので開発などを進めていると Ubuntu 特有のハマりポイントも出てくるかもしれません
aptsystemctl とは完全に隔離したものとして使うのであれば特に問題は出ないかなと思います

参考サイト

1 件のコメント:

  1. パスワードレスのsudoの場合にはインストール時にCI=1環境変数を設定して実行してください

    返信削除