Web更新

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を活用した業務システムの実績も多いです。興味がある方は以下のページもご覧ください。

DHT OSS導入コンサルティングサービス

DHT OSS導入コンサルティングサービス

関連記事一覧