Linuxのパッケージシステムを知ろう第2回(宮崎悟氏)
前回は、LinuxのパッケージシステムとRHEL系ディストリビューションで使用されるパッケージシステムについて説明しました。今回は、Debian/Ubuntuなどで使用されるパッケージシステムについて説明します。
DebianとUbuntuの違い
Debianはコミュニティベースで開発されるフリーな(=自由な)OSディストリビューションです。Linuxの他にFreeBSDベースのOSが提供され、GNU Hurd をベースにしたOSも開発されています。基本的なユーザランドはすべてGNUプロジェクトをベースにしています。Debianのリリースは、安定版が2年毎にリリースされます。2020年2月現在の最新版はDebian10(buster)です。
Ubuntuは、Canonical社がDebian をベースに開発したLinux OSです。そのため、Debianとは違い独自のパッケージを含んだり、GUIも異なります。Ubuntuは4月・10月と半年ごとにリリースされ、偶数年の4月リリースのバージョンがLTS(Long Term Support)となります。2020年2月現在の最新のLTSは18.04LTSです。
UbuntuはDebianの派生ディストリビューションなので、debというDebianのパッケージ形式を使用します。
Debianにおけるパッケージシステム
Debian系ディストリビューションでは、deb形式のパッケージを扱います。deb形式のパッケージを管理するためには、dpkgとapt系コマンドがあります。これは、RHEL系のrpmとyumに近い関係です。
dpkg
dpkgコマンドでは、debファイルやインストールされたdebパッケージの操作ができます。ただし、dpkgコマンドでは依存性の解決を行うことが出来ません。
- dpkg -i debファイル
debファイルをインストールします - dpkg -r パッケージ名
指定したパッケージをアンインストールします - dpkg -P パッケージ名
指定したパッケージの設定ファイルを削除します - dpkg -l
インストールされたすべてのパッケージを表示します
先頭がiiのパッケージはインストールされたパッケージ、rcのパッケージは設定ファイルが残っているパッケージです。
$ dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-====================================-===================================-============-===============================================================================
ii accountsservice 0.6.45-1ubuntu1 amd64 query and manipulate user account information
ii acl 2.2.52-3build1 amd64 Access control list utilities
ii acpid 1:2.0.28-1ubuntu1 amd64 Advanced Configuration and Power Interface event daemon
ii adduser 3.116ubuntu1 all add and remove users and groups
ii adwaita-icon-theme 3.28.0-1ubuntu1 all default icon theme of GNOME (small subset)
ii anthy-common 1:0.3-6ubuntu1 all Japanese kana-kanji conversion - dictionary
ii apache2-utils 2.4.29-1ubuntu4.11 amd64 Apache HTTP Server (utility programs for web servers)
rc apg 2.2.3.dfsg.1-5 amd64 Automated Password Generator - Standalone version
(以下略)
- dpkg -l パッケージ名
指定したパッケージ名(クォート区切りのワイルドカード指定可能)のパッケージリストを表示します
形式は上記dpkg -l
と同じです - dpkg -L パッケージ名
指定したパッケージに含まれるファイル一覧を表示します - dpkg -s パッケージ名
指定したパッケージの情報を表示します
$ dpkg -s coreutils
Package: coreutils
Essential: yes
Status: install ok installed
Priority: required
Section: utils
Installed-Size: 14791
Maintainer: Michael Stone <mstone@debian.org>
Architecture: amd64
Multi-Arch: foreign
Version: 8.25-2
Replaces: mktemp, realpath, timeout
Pre-Depends: libacl1 (>= 2.2.51-8), libattr1 (>= 1:2.4.46-8), libc6 (>= 2.17), libcap2 (>= 1:2.10), libgmp10, libselinux1 (>= 2.1.13), multiarch-support
Conflicts: timeout
Description: GNU core utilities
This package contains the basic file, shell and text manipulation
utilities which are expected to exist on every operating system.
.
Specifically, this package includes:
arch base64 basename cat chcon chgrp chmod chown chroot cksum comm cp
csplit cut date dd df dir dircolors dirname du echo env expand expr
factor false flock fmt fold groups head hostid id install join link ln
logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup nproc numfmt
od paste pathchk pinky pr printenv printf ptx pwd readlink realpath rm
rmdir runcon sha*sum seq shred sleep sort split stat stty sum sync tac
tail tee test timeout touch tr true truncate tsort tty uname unexpand
uniq unlink users vdir wc who whoami yes
Homepage: http://gnu.org/software/coreutils
- dpkg -S ファイル名
指定したファイルが含まれているパッケージを表示する
$ dpkg -S /bin/ls
coreutils: /bin/ls
apt
aptは、RHELのyumに相当するパッケージ管理システムです。yumと同様に、ネットワーク経由でaptリポジトリ上のパッケージをインストールすることが出来ます。aptにより依存関係の解決も可能になります。aptの特徴は、リポジトリのキャッシュをローカルに置くことです。ローカルリポジトリは任意のタイミングで更新可能です。aptでは複数のコマンドが存在します。
aptコマンド
apt コマンドはaptで管理する際によく使用されるコマンドです。
コマンド | 説明 |
---|---|
apt list パッケージ名 | パッケージ名を元にパッケージの一覧を表示 パッケージ名を指定しない場合、全てのパッケージを表示 |
apt search パッケージ名 | パッケージを検索する |
apt show パッケージ名 | パッケージの情報を表示する |
apt install パッケージ名 | パッケージをインストールする |
apt remove パッケージ名 | パッケージをアンイストールする |
apt purge パッケージ名 | パッケージの設定ファイルを削除する |
apt update | ローカルリポジトリを更新する |
apt upgrade パッケージ名 | パッケージを更新する パッケージ名を指定しない場合、すべての更新可能なパッケージを更新 |
apt autoremove | 依存性によってインストールされたが 既に使用されていないパッケージを削除する |
apt clean | 取得したローカルリポジトリを削除する |
apt コマンドはこのように多様な操作ができますが、shell script などのTTY情報がない場合には使用できません。そのため、script 内ではapt-get/apt-cache 等を使用します。
apt-get/apt-cacheコマンド
apt-get は、aptが開発される前からあるaptを操作するコマンドです。apt コマンドと同様のコマンドを、以下のように使用します。
コマンド | 説明 |
---|---|
apt-get install パッケージ名 | パッケージをインストールする |
apt-get remove パッケージ名 | パッケージをアンイストールする |
apt-get purge パッケージ名 | パッケージの設定ファイルを削除する |
apt-get update | 利用可能パッケージの一覧を更新する |
apt-get upgrade パッケージ名 | パッケージを更新する パッケージ名を指定しない場合、すべての更新可能なパッケージを更新 |
apt-get autoremove | 依存性によってインストールされたが 既に使用されていないパッケージを削除する |
apt-get clean | 取得したローカルリポジトリを削除する |
apt-cacheも、aptが開発される前からあるaptを操作するコマンドです。apt コマンドと同様のコマンドを、以下のように使用します。
コマンド | 説明 |
---|---|
apt-cache search パッケージ名 | パッケージを検索する |
apt-cache show パッケージ名 | パッケージの情報を表示する |
apt-cache pkgnames | システム内のパッケージの一覧を表示する |
apt-cache depends パッケージ名 | パッケージが依存するパッケージを表示する |
apt-cache rdepend パッケージ名 | パッケージに依存されるパッケージを表示する |
apt-cache depends/rdepends
は、aptコマンドで表示できない情報を表示できます。
終わりに
今回はDebian/Ubuntuなどで使用されるパッケージについて説明しました。次回はAlpine Linuxで使用されるパッケージを説明します。次回をお楽しみに。
さて、このコラムを掲載いただいているデジタル・ヒュージ・テクノロジー社は老舗のOSSインテグレーターです。特にLinuxは強く、OSSを活用した業務システムの実績も多いです。興味がある方は以下のページもご覧ください。