RedHat系のLinuxと、Debian系のLinuxのリポジトリ管理について書いてみようと思います。前回の記事の続きです。
まずリポジトリとは、Linuxが必要なアプリケーションを見つけ出せるようにインターネット上のどこのサーバーにアプリケーションが格納されているかを記載したファイルのことです。アプリケーションと言っても通常はパッケージとしてまとめられていて、パッケージをダウンロード、および、インストールする形になります。Linux標準のリポジトリでも不自由ない場合もありますが、最新のものを使いたかったりだとか、何か特別な機能を持つアプリを入れてみたいだとかの場合に、そのアプリが格納されているサーバーの情報をリポジトリに追加する必要があります。Linuxはリポジトリの情報を元にアプリのパッケージをダウンロードしてきます。
RedHat系(Fedora、RHEL、CentOS)ではリポジトリへの追加は「/etc/yum.repos.d」配下に「~.repo」というファイルを作成して配置します。「.repo」ファイルに記載する内容は最低限で以下となります。
[リポジトリID]
name=リポジトリ名
baseurl=パッケージを格納しているサーバーの場所
リポジトリIDはyumコマンドの実行時の「--enablerepo」、「--disablerepo」のオプションで指定します。enablerepoはリポジトリを使用する、disablerepoはリポジトリを使用しない、という意味合いです。
Debian系(Debian、ubuntu等)では「/etc/apt/sources.list」ファイルにサーバーの情報を追記するか「/etc/apt/sources.list.d」配下に「.list」ファイルを新規作成して配置するかになります。記載する内容は以下です。
deb パッケージを格納しているサーバーの場所
deb-src ソースファイルを格納しているサーバーの場所
[2019/12/27 追加・修正]
RedHat系、Debian系とも第三者のパッケージを追加することになるのでGPG公開鍵を登録して置く必要があるとのこと。そうしないとパッケージをダウンロードしたときに警告が出るみたいです。なので、以下のコマンドを先に実行しておく必要があるようです。
まずRedHat系の場合です。
GPG公開鍵を登録するコマンド
# rpm --import /etc/pki/rpm-gpg/GPG公開鍵ファイル名
登録してあるGPG公開鍵を確認するコマンド
# rpm -qai gpg-pubkey*
RedHat系ではこのコマンドを使った記憶がほとんどないのだけど、/etc/pki/rpm-gpg 配下を見てみるとGPG公開鍵ファイルが配置されていて、おそらくyumでリポジトリを追加したときに自動でGPG公開鍵の登録も行われていたのじゃないのかな?と思う。。
次にDebian系の場合です。
GPG公開鍵を登録するコマンド
# wget -q GPG公開鍵が配置されているサーバーの場所
# apt-key add ダウンロードしたGPG公開鍵ファイル名
登録してあるGPG公開鍵を確認するコマンド
# apt-key list
ubuntuにWEBサーバーのnginxをインストールする際は手動でGPG公開鍵の登録が必要みたいです。
最後に、RedHat系とDebian系のパッケージ管理コマンドの対比を載せておきます。
操作 | RedHat系 | Debian系 |
インストール | yum install 〜 | apt install 〜 |
アンインストール | yum remove 〜 | apt remove 〜 |
パッケージリストの更新 | – | apt update |
アップデート | yum update | apt upgrade |
パッケージの検索 | yum search 〜 | apt search 〜 |
パッケージの情報表示 | yum info 〜 | apt show 〜 |
インストール済みパッケージの表示 | yum list installed | dpkg -l |
アップデート可能なパッケージの表示 | yum list updates | – |
不要パッケージの削除 | – | apt autoremove |
インストーラーパッケージの削除 | – | apt clean |
「パッケージリストの更新」だけれど、Debian系ではOSの内部でパッケージに関わる情報のリストを持っていてその更新を行っている模様。なのでDebian系の場合はインストールやアップデートを行う場合は「apt update」を事前に行ったほうが良さそうです。
また「インストール済みパッケージの表示」について、Debian系では「apt list --installed」というのも使えます。ただパイプを使ってgrepと組み合わせると以下のようなワーニングが出るのでご注意を(結果が出力されないわけではない)。「dpkg -l」はパイプを使ってもワーニングは出ません。
$ apt list --installed | grep php
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.