Lesson 10

機能の追加・更新・削除

Lesson 10 Chapter 1
パッケージ管理とは

日常的に、ご自身のスマホに好きなアプリを追加(インストール)したり、更新や削除をすることがあると思います。 そうすることで、例えばバーコード決済が出来るようになったりと、スマホに新しい機能を搭載することが出来るようになります。

Linuxもスマホと同じように、ユーザーの好みに合わせて使いたいソフトウェアを追加したり、更新や削除をすることが出来ます。 その際Linuxでは、パッケージ管理ツールと呼ばれるものが使われます。 スマホでアプリをインストールする場合と違い、Linuxでパッケージ管理ツールを使う場合は、ターミナル画面からコマンドでインストールを行います。 Lesson10ではパッケージ管理ツールについてご紹介していきます。

パッケージ管理ツールとは

ソフトウェアを追加、更新、削除することを、パッケージ管理と呼びます。 パッケージ管理ツールとは、それら一連の処理をしてくれるソフトウェアを指します。

Linuxのパッケージ管理ツールで有名なものは以下のとおりです。 Red Hat系のディストリビューションではrpmとyumが、Ubuntu/Debian系のディストリビューションではdpkgとaptが使われます。 また、rpmとdpkgがパッケージ単体を管理するのに対し、yumとaptはパッケージ単体のみならず、パッケージ間の依存関係をも管理します。

ツール名 系統 管理範囲
rpm Red Hat系 パッケージ単体
yum Red Hat系 パッケージ単体とそれらの依存関係
dpkg Ubuntu/Debian系 パッケージ単体
apt Ubuntu/Debian系 パッケージ単体とそれらの依存関係

Lesson 10 Chapter 2
Red Hat系でのパッケージ管理

Chapter1でご紹介したとおり、使用しているLinuxディストリビューションによって、使うべきパッケージ管理ツールが異なります。 Chapter2では、Red Hat系ディストリビューションにおけるパッケージ管理ツールであるrpmとyumについて解説します。

rpmパッケージ

rpmパッケージとは、rpmファイル形式で配布されているソフトウェアです。 rpmファイル形式については以下で記載していますが、特別な仕様に即して作成されたファイルだとざっくり理解して頂ければ大丈夫です。

rpmファイル形式とは

rpmファイル形式とは、「lead」「signature」「header」「Playload」というセクションで構成されるファイルの形式です。

それぞれのセクションには、何バイト目から何バイト目にどういった情報をセットしてくださいといったことが仕様として定められています。 その仕様に従うようにして作成されたファイルが、rpmファイル形式となるのです。

rpm

rpmは、上述のようなrpmパッケージを管理するためのツールです。 基本書式は以下となります。

  rpm [オプション] パッケージ

指定できる主なオプションは以下となります。

オプション 内容
-q 指定したパッケージがインストールされていればバージョンを表示する。
-i 指定したパッケージをインストールする。ただし更新は行わない。
-v 詳細の情報を表示する。
-h 進行状況を#記号で表示する。
-e パッケージを削除する。

rpmを試しに使ってみましょう。まずは以下を実行してください。 -qオプションを指定し、シェルのzshがインストールされているかを確認します。

 $ rpm -q zsh
package zsh is not installed

「not installed」と表示され、現時点ではインストールされていないことが分かりました。 では次にrpmでzshをインストールしてみましょう。 rpmでパッケージをインストールする際は、一旦ローカルにrpmパッケージファイルをダウンロードし、ダウンロード済みファイルに対してrpmコマンドを実行する必要があります。 従って、まずは「wget」というコマンドを使い、zshのrpmパッケージファイルを取得します。wgetコマンドの書式は以下になります。

 wget <取得したいリソースが存在するurl>

ここで、取得したいリソースが存在するurlは各自ブラウザで検索して調べる必要があります。 zshについては、まず下図ホームページにアクセスしてください。

pic_1001 https://rhel.pkgs.org/7/ghettoforge-plus-x86_64/zsh-5.1-1.gf.el7.x86_64.rpm.html

ホームページ中赤色箇所に「Binary Package」と記載されている所が、パッケージマネージャーでインストールするファイルを意味します。 従って今回はここのURLを指定して、wgetでインストールします。 なお、赤色箇所の下にある「Source Package」と記載されている所は、パッケージマネージャを使わずに、手動でバイナリにコンパイルしてインストールしたい場合に使うファイルを意味します。

以下を実行して、zshのパッケージファイルを取得してください。

 $ sudo wget  http://mirror.ghettoforge.org/distributions/gf/el/7/plus/x86_64/zsh-5.1-1.gf.el7.x86_64.rpm

lsコマンドを実行すると、「zsh-5.1.1.gf.el7.x86-64.rpm」というファイルが取得されています。

 $ ls 
zsh-5.1.1.gf.el7.x86-64.rpm

では次に、rpmコマンドを使ってzshをインストールします。 以下のように実行してください。「-i」オプションを付け、上のlsコマンドで確認したファイルを指定することで、zshをインストールできます。 なお、rpmを使ってインストールをする時は、オプションに「-ivh」(「i」「v」「h」のオプションをまとめたもの)を指定して実行することが多いですが、今回は簡便に「-i」のみを指定しています。

 $ rpm -i zsh-5.1-1.gf.el7.x86_64.rpm

本当にインストールされたか、再度rpmに「-q」オプションを付けて確認してみます。以下を実行すると、無事インストールされていることが確認できました。

 $ rpm -q zsh
zsh-5.1-1.gf.el7.x86_64

最後に、zshをアンインストールします。アンストールは以下のように「-e」オプションを付けて実行します。

 $ rpm -e zsh

本当に削除されたか確認するため、もう一度「-q」オプションを付けて実行します。

 $ rpm -q zsh
package zsh is not installed

意図したとおり、zshがアンインストールされていることが確認できました。

yum

yumは、rpmパッケージの管理や、複数のrpmパッケージの依存関係を管理するツールです。 パッケージ間の依存関係を管理できる点が、rpmとは異なります。

基本書式は以下となります。

 yum [オプション] [サブコマンド] [ パッケージ] 

また主なオプションとサブコマンドは以下のとおりです。

オプション 内容
-y インストール中の全ての問い合わせに「yes」で答える。
サブコマンド 内容
list 利用可能な全rpmパッケージ情報を表示する。
list installed インストール済みのrpmパッケージを表示する。
search 指定したキーワードでrpmパッケージを検索し結果を表示する。
deplist 指定したrpmパッケージの依存情報を表示する。
install 指定したrpmパッケージをインストールする。自動的に依存関係も解決する。
update インストール済みのrpmパッケージで更新可能なものを全て更新する。ただし個別のパッケージを指定することも可能。
remove 指定したrpmパッケージをアンインストールする。

yumを試しに使ってみましょう。まずは以下を実行し、インストール可能なパッケージを見てみます。

$ yum list installed

今回は表示された一覧の中から、「zip.x86_64」をインストールします。

pic1002

以下のように実行して下さい。ルート権限でないと実行できないため、下の例では「sudo」を用いています。 勿論「su -」コマンドでルートユーザーにログインしてから実行しても、問題ありません。

$ sudo yum install zip.x86_64

インストール時に、何度かyes/noで答える確認が表示されるため、「yes」と入力して「Enter」を押してください。 なお、インストールを実行するコマンドを打った際に、以下のように「-y」を追加すると、全ての確認に対して自動で「yes」と答えることが出来ます。 次回以降、お好みに合わせてお使いください。

$ sudo yum -y install zip.x86_64

本当にインストールが出来たか確認してみます。以下では、サブコマンドに「list installed」を指定し、インストール済みのパッケージを表示しています。 また、表示件数が多くなってしまうので、パイプラインでgrepコマンドに繋げています。

 $ yum list installed | grep zip.x86_64
gzip.x86_64
zip.x86_64

無事インストールされていることが確認できました。

折角インストール出来たところですが、早速削除してみます。以下のコマンドを実行してください。

 $ sudo yum -y remove zip.x86_64

削除が完了したか、以下のコマンドで確認してみます。

$ yum list installed | grep zip.x86_64
gzip.x86_64

意図したとおり、アンインストールされていました。

Lesson 10 Chapter 3
Ubuntu/Debian系でのパッケージ管理

Chapter2では、Red Hat系でのパッケージ管理ツールについて紹介しました。 本講座ではRed Hat系であるCentOSを使ってきましたが、今後Ubuntu/Debian系のディストリビューションを使用することもあるでしょう。 そのため、Chapter3ではUbuntu/Debian系でのパッケージ管理ツールであるdpkgとaptについて紹介します。

dpkg

rpm形式ではなく、deb形式というファイル形式で配布されているソフトウェアをdebパッケージと呼びます。 debパッケージは、dpkgというツールで管理することが出来ます。基本書式は以下のとおりです。

  dpkg <オプション> <アクション>

オプションとアクションは、「-」+「アルファベット一文字」で記載するものが多いです。 具体的には以下の表のとおりです。

オプション 内容
-E 既に同じバージョンのパッケージがインストールされている場合、パッケージをインストールしない。
-G インストール済みのパッケージのバージョンの方が新しければ、パッケージをインストールしない。
アクション 内容
-s 指定したパッケージの情報を表示する。
-L 指定したパッケージ名で、システムにインストールされたファイルの一覧を表示する。
-S 指定したファイルがどのパッケージからインストールされたかを検索する。
-I パッケージに関する各種情報を表示する。
-c debパッケージに含まれるファイル一覧を表示する。
-i 指定したパッケージをインストールする。
-r パッケージを削除する。但し設定ファイルは残す。
-P 設定ファイルを含む全てを強制的に削除する。

dpkgコマンドの使用方法についてもご紹介します。 今回もChapter2と同様に、zshのインストールを試みます。

まずはzshがインストールされていないことを確認します。以下のように、「-s」アクションを付けるとパッケージをインストールしているか確認できます。 「'zsh' is not installed」と表示され、インストールされていないことが分かりました。

 $ dpkg -s zsh
dpkg-query: package 'zsh' is not installed and no information is available

dpkgでは、パッケージをインストールするために、事前にdebパッケージファイルを取得しておく必要があります。 Chapter2のrpmの説明の際にzshをダウンロードしたのと同じように、取得したいリソースが存在するurlを各自ブラウザで検索して調べます。 zshについては、下図ホームページにアクセスしてください。

pic1003.png https://ubuntu.pkgs.org/22.04/ubuntu-main-amd64/zsh_5.8.1-1_amd64.deb.html

rpmの時と同じように、「Binary Package」と記載されている赤色箇所に記載のURLを指定して、wgetでインストールします。 以下のように実行してください。

 $ sudo wget http://archive.ubuntu.com/ubuntu/pool/main/z/zsh/zsh_5.8.1-1_amd64.deb

lsコマンドを実行すると、「zsh_5.8.1-1_amd64.deb」というファイルがダウンロードされています。

 $ ls
zsh_5.8.1-1_amd64.deb

これでいよいよdpkgを使ってインストールを行えます。以下のように「-i」アクションと上記lsコマンドで確認したファイルを指定してdpkgコマンドを実行してください。

 $ sudo dpkg -i zsh_5.8.1-1_amd64.deb

本当にインストールされたかは、dpkgコマンドに「-s」オプションを付けると確認できます。 以下のように「install ok installed」の文字が出力され、インストールが完了していることが分かりました。

 $ dpkg -s zsh
Package: zsh
Status: install ok installed

では折角ですが、zshをアンインストールします。以下のように-Pアクションを付けることで、アンインストールできます。

 $ sudo dpkg -P zsh

本当に削除されたか、「-s」アクションを使って確認します。

 $ dpkg -s zsh
dpkg-query: package 'zsh' is not installed and no information is available

意図したとおりに、zshが削除されていることを確認できました。

apt

aptはdebパッケージの管理や、複数のaptパッケージの依存関係を管理するツールです。 パッケージ間の依存関係を管理できる点が、dpkgと異なります。

基本書式は以下となります。

 apt [オプション] [サブコマンド]

また主なオプションとサブコマンドは以下のとおりです。

オプション 内容
-y インストール中の全ての問い合わせに「yes」で答える。
-no-install-recommends 必須ではない推奨パッケージはインストールしない。
サブコマンド 内容
list 利用可能な全パッケージ情報を表示する。
list --installed インストール済みのパッケージを表示する。
show 指定したパッケージについてのパッケージ情報を表示する。
install 指定したパッケージをインストールする
update インストール済みのパッケージやその依存関係を考慮し、追加又は更新可能なものを表示する。
upgrade インストール済みの全てのパッケージを最新バージョンに更新する。
remove 設定ファイルは残して、パッケージを削除する。
purge 設定ファイルを含むすべてのパッケージを削除する。

aptを試しに使ってみましょう。今回はzipのインストールをしていきます。 zipがインストールされているかを確認するため、以下を実行してください。

 $ dpkg -s zip
dpkg-query: package 'zip' is not installed and no information is available

「'zip' is not installed」と表示され、インストールされていないことがわかりました。 では、インストールするために下記を実行してください。 なお、yumの時と同じようにsudo apt -y install zipとすれば、問い合わせに対して自動で「yes」と答えることが出来ます。

 $ sudo apt install zip

本当にインストールされたか確認してみます。以下を実行してください。

 $ dpkg -s zip
Package: zip
Status: installed ok installed

「installed ok installed」と表示され、無事インストールされていることがわかりました。

折角インストールしたところですが、サブコマンドのpurgeを指定して、zipをアンインストールします。

 $ sudo apt purge zip

本当に削除されているか確認します。以下を実行してください。

 $ dpkg -s zip
dpkg-query: package 'zip' is not installed and no information is available

意図どおり、zipが削除されていることが確認できました。

終わりに

以上でパッケージ管理についての解説を終わります。 これで好きなパッケージを追加することが出来るようになりました。 色々なソフトウェアを試し、楽しいLinuxライフをおくりましょう。