今日は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 というコマンドを用いると rpm を deb に変換することができます。
alien は sudo apt install alien
でインストールできます。
sudo alien xxx.rpm # xxx.rpmからxxx.debを作成 sudo dpkg -i xxx.deb
rpmやdebなど色々な形式がありますが、要はパッケージのソースをある種の形式に圧縮しているだけなので、相互変換はそれほど難しくありません。
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