Arch Linuxのpacmanでパッケージ管理
Arch Linuxのパッケージ管理はpacmanで行う。他のLinuxディストリビューションでは使われていない独自のアプリケーションなので、オプションなど使い方を覚えないといけない。ただし、よく使うオプションさえ覚えてしまえば、使い方は難しくない。パッケージ管理に便利なオプションが用意されているので、pacmanを使えばパッケージ管理に必要な情報を知ることができ、pacmanからほぼ一括でパッケージ管理できるようになっている。pacmanの設定ファイル
pacmanの主な設定ファイル、ログファイルは以下のとおり。- /etc/makepkg.conf
- /etc/pacman.conf
- /etc/pacman.d/mirrorlist
- /var/log/pacman.log
/etc/pacman.conf
pacman.confはリポジトリの設定をする。使用したいリポジトリのコメントアウトを解除する(先頭の#を消す)か、自分で追加する。例えば、[multilib] リポジトリを有効にすることで、64ビット環境の Arch Linux で32ビットアプリケーションの動作・ビルドができるようになる。自分は、32ビットアプリケーションを使っていないので、[multilib]はコメントアウトしたままにしている。Arch User Repository (AUR, 公式リポジトリには登録されていない様々パッケージが登録されている) はを使うため、[archlinuxfr]リポジトリを有効にしている。pacman.confに下記の3行を追加する。AURからのパッケージのインストールはyaourtの使い方または、packerの使い方を参照。
#vim /etc/pacman.conf ... [archlinuxfr] SigLevel = Never Server = http://repo.archlinux.fr/$arch
リポジトリの変更をした時は、パッケージリストを更新する。
# pacman -Syy :: Synchronizing package databases... core 116.1 KiB 829K/s 00:00 [##########################################] 100% extra 1807.0 KiB 4.17M/s 00:00 [##########################################] 100% community 2.4 MiB 3.29M/s 00:01 [##########################################] 100% multilib-testing 879.0 B 0.00B/s 00:00 [##########################################] 100% archlinuxfr
/etc/pacman.d/mirrorlist
/etc/pacman.d/mirrorlistはpacmanで使うリポジトリミラーサーバを設定する。リストの上に書くほど、優先的に使われる。/etc/pacman.d/mirrorlistを変更する前に、念の為バックアップする。# mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bk
Pacman Mirrorlist Generatorからミラーリストを生成する。
Country: Allを選択して、httpsとUse mirror statusにチェックする。
Generate Listをクリックして、リストを生成する。
生成したリストを/etc/pacman.d/mirrorlistに書き込む。
# vim /etc/pacman.d/mirrorlist ## ## Arch Linux repository mirrorlist ## Sorted by mirror score from mirror status page ## Generated on 2014-11-30 ## ## Score: 0.3, France #Server = http://arch.tamcore.eu/$repo/os/$arch ## Score: 0.3, Germany #Server = http://mirror.gnomus.de/$repo/os/$arch ...
sedコマンドで、行頭の#を1つ消す。
# sed '/^#\S/ s|#||' -i /etc/pacman.d/mirrorlist
日本のリポジトリを上位に持ってくる。日本のリポジトリは速度は早いため。
# vim /etc/pacman.d/mirrorlist # # Arch Linux repository mirrorlist # Sorted by mirror score from mirror status page # Generated on 2014-11-30 # # Score: 1.7, Japan Server = http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/$repo/os/$arch # Score: 20.3, Japan Server = http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch # Score: 0.3, France Server = http://arch.tamcore.eu/$repo/os/$arch # Score: 0.3, Germany Server = http://mirror.gnomus.de/$repo/os/$arch ...
日本のリポジトリが繋がらなくなった場合も考えて、他のリポジトリも活かしておいたほうがいい気がする。ミラーリストの変更をした時も、パッケージリストを更新する。
# pacman -Syy :: Synchronizing package databases... core 116.1 KiB 829K/s 00:00 [##########################################] 100% extra 1807.0 KiB 4.17M/s 00:00 [##########################################] 100% community 2.4 MiB 3.29M/s 00:01 [##########################################] 100% multilib-testing 879.0 B 0.00B/s 00:00 [##########################################] 100% archlinuxfr
パッケージアップデートをするとたまに、ミラーリストファイルが更新される時がある。pacmanでは、このようにファイルのアップデートがあった時、/etc/pacman.d/mirrorlist.pacnewのように.pacnewがついたファイル名でアップデートファイルが保存される。
アップデートファイルと元のファイルを見比べてミラーサーバのアドレスが変わった時は逐次変更する。ただし、ほとんど上位にのサーバは生きているので、たまにmirrorlist generatorを使って上位サーバのアドレスを確認して、アドレスが変わっていなければ問題ない気がする。
/etc/makepkg.conf
自分でパッケージをbuild(makepkg)するときの設定をする。yaourtやpackerなどを使って、AURリポジトリからパッケージをインストールするときもローカルでbuildしはじめるので、自分のCPUに最適なバイナリファイルを作りたい人は、設定を最適化する。自分は、まだいじっていない。詳細はここを参照 [2]。pacmanでよく使うオプション
データベースの更新(-Sy, -Syy)
-Sy:リモートに更新があればローカルも更新する-Syy: ローカルのデータベースを強制的に更新
リポジトリのリストの更新やmirrorlistの更新をした時は、-Syyとして、そのような更新がないときは-Syでよい。
# pacman -Syy :: Synchronizing package databases... core 116.1 KiB 829K/s 00:00 [##########################################] 100% extra 1807.0 KiB 4.17M/s 00:00 [##########################################] 100% community 2.4 MiB 3.29M/s 00:01 [##########################################] 100% multilib-testing 879.0 B 0.00B/s 00:00 [##########################################] 100% archlinuxfr
# pacman -Sy :: Synchronizing package databases... core is up to date extra is up to date community is up to date multilib-testing is up to date archlinuxfr is up to date
このオプションは、たまにリポジトリのリストの更新やmirrorlistの更新をした時に-Syyを使うだけ。その他の場合は、-Syuでパッケージのアップデートもついでにするのが普通。
リポジトリリストとパッケージのアップデート(-Syu)
リポジトリとパッケージアップデートをする。Ubuntuみたいにアップデートを自動で知らせてくれないので、気が向いた時にこのコマンドを打つ。アップデートがあるパッケージが示されるので、アップデートしてよければ"y"を入力してエンター。# pacman -Syu :: Synchronizing package databases... core is up to date extra is up to date community is up to date multilib-testing is up to date archlinuxfr is up to date :: Starting full system upgrade... resolving dependencies... looking for inter-conflicts... Packages (12): dhcpcd-6.6.4-1 expat-2.1.0-4 gnupg-2.1.0-6 libass-0.12.0-1 libmariadbclient-10.0.15-1 libsystemd-217-8 orc-0.4.22-1 systemd-217-8 systemd-sysvcompat-217-8 texinfo-5.2-3 xf86-input-evdev-2.9.1-1 xterm-313-1 Total Download Size: 11.67 MiB Total Installed Size: 57.70 MiB Net Upgrade Size: -0.71 MiB :: Proceed with installation? [Y/n] y ...
pacmanのアップデートは一部のパッケージのみアップデートをするのに向いていない。ローリングリリースなため、全てのパッケージを足並みそろえてアップデートするのが推奨されている。なので、アップデートによる他のパッケージへの影響など考えず、とりあえず-Syuする。不具合が起こったらググって自分で治すのが基本。
大きなパッケージのアップデートがあるときは、時間の余裕があるときに行う。Arch Linuxのアップデートは重要なシステム(例えばカーネールやinitからsystemdへの移行)や大きなパッケージのアップデートが、平気に-Syuで実行される。いきなりOS立ち上がんなくなってlive CDからシステムの再インストールするハメになるとか起きる。
時間と心に余裕がないときに、やばそうなアップデートがでてきたらとりあえず"n"でアップデートを中断。1週間くらいおいて、Arch wikiとかに不具合の報告とかなければ、アップデートするのが賢明。
パッケージをインストールする(-S)
pacmanからパッケージをイントールする。# pacman -S パッケージ名
パッケージを検索する(-Ss)
pacmanからリポジトリに登録されているパッケージを検索する。パッケージがインストールされているかどうか調べるときは、 pacman -Ss pacman | grep installedとかすればよい。($ pacman -Qs パッケージ名 でも可能。)$ pacman -Ss pacman core/pacman 4.1.2-7 (base base-devel) [installed] A library-based package manager with dependency support core/pacman-mirrorlist 20141116-1 [installed] Arch Linux mirror list for use by pacman extra/expac 4-2 pacman database extraction utility extra/namcap 3.2.5-2 A Pacman package analyzer ...
パッケージの情報を調べる(-Si)
インストールするまえに、どんなパッケージなのか調べることができる。$ pacman -Si pacman Repository : core Name : pacman Version : 4.1.2-7 Description : A library-based package manager with dependency support Architecture : x86_64 URL : http://www.archlinux.org/pacman/ Licenses : GPL Groups : base base-devel Provides : pacman-contrib Depends On : bash>=4.2.042-2 glibc>=2.17-2 libarchive>=3.1.2 curl>=7.19.4 gpgme pacman-mirrorlist archlinux-keyring Optional Deps : fakeroot: for makepkg usage as normal user Conflicts With : pacman-contrib Replaces : pacman-contrib Download Size : 580.79 KiB Installed Size : 3800.00 KiB Packager : Allan McRaeBuild Date : 2014年11月21日 20時12分25秒 Validated By : MD5 Sum SHA256 Sum Signature
パッケージのアンインストール(-Rsn)
-Rが削除のオプション。-sで削除したいパッケージと、そのパッケージだけが必要としているパッケージを一緒に削除する。また、pacman は削除するパッケージの設定ファイルを 「ファイル名.pacsave」 という名前でバックアップするが、このファイルも削除したいときに-nオプションを付ける。# pacman -Rsn パッケージ名
インストールしたパッケージの情報を調べる(-Qi)
-Siは、パッケージがインストールされていなくても使用可能。-Qiはインストールされているパッケージのみに可能。得られる情報は少し違う。-QiだとInstall Reasonとかが分かる。$ pacman -Qi pacman Name : pacman Version : 4.1.2-7 Description : A library-based package manager with dependency support Architecture : x86_64 URL : http://www.archlinux.org/pacman/ Licenses : GPL Groups : base base-devel Provides : pacman-contrib Depends On : bash>=4.2.042-2 glibc>=2.17-2 libarchive>=3.1.2 curl>=7.19.4 gpgme pacman-mirrorlist archlinux-keyring Optional Deps : fakeroot: for makepkg usage as normal user [installed] Required By : package-query yaourt Optional For : None Conflicts With : pacman-contrib Replaces : pacman-contrib Installed Size : 3800.00 KiB Packager : Allan McRaeBuild Date : 2014年11月21日 20時12分25秒 Install Date : 2014年11月25日 21時28分14秒 Install Reason : Explicitly installed Install Script : No Validated By : Signature
パッケージによってインストールされたファイルを調べる(-Ql)
パッケージをインストールしたことにより、システムにインストールされたファイルを調べることができる。例えば、$ pacman -Ql pacman pacman /etc/ pacman /etc/makepkg.conf pacman /etc/pacman.conf pacman /usr/ pacman /usr/bin/ pacman /usr/bin/bacman pacman /usr/bin/checkupdates pacman /usr/bin/cleanupdelta pacman /usr/bin/makepkg pacman /usr/bin/paccache ...
あるファイルがどのパッケージによってインストールされたのか調べる(-Qo)
何か設定ファイルとか、ライブラリとかどのパッケージをインストールした時にインストールされたのか知ることができる。何か設定ファイルをいじるときに、その設定ファイルのパスを打ってみて、どのパッケージに影響するのか調べることができる。$ pacman -Qo /etc/pacman.conf /etc/pacman.conf is owned by pacman 4.1.2-7
パッケージの依存のツリーを調べる(pactree)
パッケージの依存のツリーを調べることができる。$ pactree pacman pacman ├─bash │ ├─readline │ │ ├─glibc │ │ │ ├─linux-api-headers │ │ │ ├─tzdata │ │ │ └─filesystem │ │ │ └─iana-etc │ │ └─ncurses │ │ └─glibc │ └─glibc ├─glibc ├─libarchive │ ├─acl │ │ └─attr │ │ └─glibc ...
パッケージキャッシュの削除(paccache)
pacman はパッケージのインストールのためにダウンロードしたファイルを /var/cache/pacman/pkg/ に保存している。これらのファイルは自動で削除されないので、定期的に手動で削除する必要がある。削除しないと/varのサイズが大きくなり、システムの空き容量を圧迫する。paccacheは、デフォルトでそれぞれのパッケージのキャッシュで一番新しい3つのバージョンを残して、それ以外の古いファイルを削除する。アップデート後にシステムに障害が出た時、パッケージをダウングレードする必要がでてくることがある。このとき、残しておいた古いバージョンのパッケージファイルが役立つ。
/varの容量が大きくなってきたらこのコマンドを打つ。
$ paccache -r ==> Privilege escalation required [sudo] password for username: ==> finished: 31 packages removed (diskspace saved: 163.72 MiB) </pre>
参考:
[1]Pacman
[2]Makepkg
スポンサーリンク
0 件のコメント:
コメントを投稿