Palmsonntagmorgen

NGSデータを使った解析と、その周辺。

【Linux】【Ubuntu】パッケージ管理コマンドあれこれ(11/21追記)(2021/6/18追記)

今日はUbuntuのパッケージ管理についてです。
(11/21 alien について追記)

apt / apt-get / aptitude

全て同じです。

最初にあったのは apt-get です。これはUbuntuの親にあたるDebianにおけるパッケージ管理システムです。 その後 aptitudeに移行しようとしたものの失敗したようです(?) 現在は apt に移行していますが、 apt-get も引き続き使えるので、 apt-getのままになっているマニュアルもあります。

以下、実行例です。管理者権限が必要なので、sudoをつけています。

$ sudo apt update       # データベースの更新
$ sudo apt upgrade      # インストール済のライブラリをアップグレード
$ sudo apt install xxx  # xxxをインストール
$ sudo apt remove xxx   # xxxをアンインストール
$ apt-cache search xxx  # xxxというパッケージを検索
$ sudo apt show xxx     # パッケージの詳細情報を表示

dpkg

.deb フォーマットのファイルからパッケージをインストールします。 aptで提供されていないパッケージでも .deb ファイルが提供されていれば、dpkgコマンドでインストールすることができます。

(2021/6/18追記:現在はaptコマンドでも.debファイルからインストールできるようにアップデートされています。)

# 例: Google chromeをインストール
$ wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
$ sudo dpkg -i google-chrome-stable_current_amd64.deb

add-apt-repository

公式のaptリポジトリに含まれないツールを追加したい場合、aptで参照されるリポジトリadd-apt-repository で追加することができます。Rの最新版などもこの方法でインストールします。 追加する場合は提供元が信頼できるかよく確認してください。

# 例:Google Driveを追加
$ sudo add-apt-repository ppa:alessandro-strada/ppa
$ sudo apt-get update
$ sudo apt-get install google-drive-ocamlfuse

「apt keyが信用できない」とエラーが出たら、以下のコマンドでキーを登録します。

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys <key>

snap

Ubuntu 独自に開発されたパッケージ管理システムで、必要なライブラリを他のソフトウェアに影響を与えないように、一つのファイルシステムにまとめてインストールを行う仕組みです。 aptと併用することが可能ですが、いずれでもインストールできるパッケージに関しては今のところ apt を使った方が良いようです。 なお、2019年10月時点では WSL(Windows Subsystem for Linux) はサポートされていません。

# snap で Skypeをインストール
$ sudo snap install skype --classic

alien (11/21追記)

CentOS7 向けの パッケージファイル形式として rpm がありますが、Alien というコマンドを用いると rpmdeb に変換することができます。 aliensudo apt install alien でインストールできます。

sudo alien xxx.rpm # xxx.rpmからxxx.debを作成
sudo dpkg -i xxx.deb

rpmdebなど色々な形式がありますが、要はパッケージのソースをある種の形式に圧縮しているだけなので、相互変換はそれほど難しくありません。

apt-file

特定のファイルが収録されているパッケージを探します。

あるツールをインストールしようとして、たとえば「zlib.hがない」とエラーになった場合に、どのパッケージを apt でインストールすればよいか調べたい場合は以下のようにします。

$ apt-file update  # データベースの更新
$ apt-file search zlib.h   # zlib.h を含むパッケージの検索
...   (大量の結果が表示される)
$ apt-file search include/zlib.h  # 結果を絞り込むために include/ をつける
cc65: /usr/share/cc65/include/zlib.h
libklibc-dev: /usr/lib/klibc/include/zlib.h
libz-mingw-w64-dev: /usr/i686-w64-mingw32/include/zlib.h
libz-mingw-w64-dev: /usr/x86_64-w64-mingw32/include/zlib.h
python-pycparser: /usr/share/python-pycparser/fake_libc_include/zlib.h
python3-pycparser: /usr/share/python3-pycparser/fake_libc_include/zlib.h
zlib1g-dev: /usr/include/zlib.h

いくつかありますが、最もパスがデフォルトっぽい zlib1g-dev あたりをインストールするのがよさそうです。

Linuxbrew

MacでおなじみのパッケージマネージャーHomebrew の Linux版です。 下記コマンドでインストールできます。

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

このコマンドを打つと自動的に/home/linuxbrew/ ディレクトリが作成され、/home/linuxbrew/.linuxbrew/bin にインストールされます。 (PATHを通す必要があります) 異なるディレクトリにインストールすることも可能ですが、Warningが出るので、このディレクトリにインストールすることが推奨されているようです。

Linuxbrew を使うと ghq などがインストールできるようになります。 pyenv もインストールできるのですが、インストールディレクトリは $HOME/.pyenv になるので、パッケージ管理としては微妙かも?

$ brew install ghq
$ brew install pyenv