はじめてのpacmanパッケージ管理ガイド

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

はじめてのsystemdサービス管理ガイドを書いた関係で、2012年からsystemdをinitシステムとして採用していたArch Linuxをうっかり触り始めてしまいました。「Simplicity」(簡潔さ)を理念として掲げ、最小限の基本システムで構成されているArch Linuxは、古き良きSlackwareを思い出しますね。

さて、そのArch Linuxはパッケージ管理システムにpacmanを使っています。これまでyumだのaptだのに慣れ親しんだ身としては、また新しい仕組みかぁ...と思わずにはいられませんが、なにはともあれ色々と弄ってみましたので、ここにまとめてみました!

Arch LinuxをEC2にインストールする

projects::arch linux on ec2でArch LinuxのAMIがリンクされているので、手軽にさくっとEC2でLaunchすることが出来ます。ちなみにこのWebサイトを運営しているMr. Steven Noonanは現在AWSのEC2チームのエンジニアさんだそうです。

Uplink_Laboratories

なお、Arch Linux AMIのデフォルトユーザはrootですので、SSHでログインする際にはrootを使って下さい。また一旦rootでログイン後に別のユーザを作るのがセキュリティ的には良いでしょう。

pacmanパッケージ管理ガイド

パッケージのアップグレード(yum update)

Arch Linuxをインストールして一番最初にやることはコレでしょう。

# pacman -Syu

Sは--sync(同期)、yは--refresh(リポジトリデータベースと同期)、uは--upgrades(更新)です。

Arch Linuxはローリングリリースであることから、常に全てのパッケージがリポジトリと同期的にアップグレードされていることを前提としているため、ある特定のパッケージのみ新しいバージョンを使うなどといった、部分的なアップグレードはサポートされていません。例えば

# pacman -Sy apache

のような形で、apacheだけを更新するような事はArch Linuxではサポートされず、依然関係で問題が発生する可能性があります。なのでArch Linuxの推奨は「パッケージをインストールする前には必ずアップグレードして下さい」です。

リポジトリデータベースの最新情報取得

リポジトリデータベースの最新の情報を取得するのは-Syyです。

# pcman -Syy

パッケージのインストール(yum install)

インストールはS(--sync)で行います。

# pacman -S apache

なお、yumの-y相当は--noconfirmです。

# pacman -S --noconfirm apache

このオプションを付与することで、途中で表示される

:: Proceed with installation? [Y/n]

をYでスキップすることが出来ます。

また、複数のパッケージを同時に指定してインストールすることが出来ます。

# pacman -S ruby perl

依存関係の異常など、何らかの理由でインストールが失敗する場合は、--forceオプションを付与することで強制インストールを試行する事が出来ます。

# pacman -S apache --force

パッケージのアンインストール(yum remove)

アンインストールはR(--remove)で行います。

# pacman -R apache

そのパッケージだけが依存している他のパッケージを一緒にアンインストールする場合は、s(--search)を一緒に付けます。

# pacman -Rs apache

例えばphpをアンインストールしようとした場合、sを付けない場合

# pacman -R php
checking dependencies...

Packages (1): php-5.6.1-1

Total Removed Size:   15.24 MiB

と、sを付けた場合

# pacman -Rs php
checking dependencies...
:: apache optionally requires libxml2: for mod_proxy_html, mod_xml2enc modules

Packages (3): libxml2-2.9.1-5  libzip-0.11.2-1  php-5.6.1-1

Total Removed Size:   23.77 MiB

では、このようにアンインストール対象が変わります。

また、複数のパッケージを同時に指定してアンインストールすることが出来ます。

# pacman -R ruby perl

パッケージのダウンロード

パッケージをインストールせずにダウンロードだけ行うのは-Swで行います。

# pacman -Sw ruby

ダウンロードしたファイルは/var/cache/pacman/pkgに保存されます。

パッケージファイルからのインストール

ダウンロードしたファイルをインストールするのは-U(--upgrade)を使います。

# pacman -U /var/cache/pacman/pkg/php-5.6.1-1-x86_64.pkg.tar.xz

この際、依存関係にあるパッケージは自動的にリポジトリから取得して一緒にインストールしてくれます。

リポジトリデータベースのパッケージの検索(yum search)

リポジトリデータベースを検索して、キーワードにひっかかるパッケージを表示します。

# pacman -Ss ruby
extra/kdebindings-korundum 4.14.1-1 (kdebindings)
    Ruby bindings for libraries created by the KDE community
extra/kdebindings-qtruby 4.14.1-1 (kdebindings)
    Ruby bindings for the Qt libraries
extra/ruby 2.1.3-2 [installed]
    An object-oriented language for quick and easy programming
....(sniped)....

リポジトリデータベースのパッケージの詳細情報表示(yum info)

パッケージ名を指定することで、そのパッケージの詳細情報を表示します。

# pacman -Si ruby
Name           : ruby
Version        : 2.1.3-2
Description    : An object-oriented language for quick and easy programming
Architecture   : x86_64
....(sniped)....

インストール済みパッケージの操作

ローカルにインストールしたパッケージを検索するのは-Qsで行います。-Qは--query、sは--searchです。

# pacman -Qs ruby
local/ruby 2.1.3-2
    An object-oriented language for quick and easy programming

-Qiでパッケージの詳細情報を表示します。

# pacman -Qi ruby
Name           : ruby
Version        : 2.1.3-2
Description    : An object-oriented language for quick and easy programming
Architecture   : x86_64
....(sniped)....

そのパッケージによってインストールされたファイルを一覧表示するのは-Qlです。

# pacman -Ql apache
apache /etc/
apache /etc/httpd/
apache /etc/httpd/conf/
apache /etc/httpd/conf/extra/
apache /etc/httpd/conf/extra/httpd-autoindex.conf
apache /etc/httpd/conf/extra/httpd-dav.conf
apache /etc/httpd/conf/extra/httpd-default.conf
apache /etc/httpd/conf/extra/httpd-info.conf
....(sniped)....

逆にそのファイルをインストールしたパッケージを確認するのは-Qoです。

# pacman -Qo /etc/httpd/conf/extra/httpd-info.conf
/etc/httpd/conf/extra/httpd-info.conf is owned by apache 2.4.10-1

おまけ

/etc/pacman.conf

#Color

をコメント解除することで、pacmanコマンドの出力結果をカラフルに表示することが出来ます。

さいごに

ささっと触った感じ、特定の目的があってサーバを構築するのであれば、Arch Linuxは良い選択肢なのでは無いかと思います。ローリングアップデートであるが故にパッケージの更新が早いのも魅力的です。手もとのvagrantにも入れておこうと思います。