はじめてのpacmanパッケージ管理ガイド
はじめに
はじめての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チームのエンジニアさんだそうです。
なお、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にも入れておこうと思います。