Linuxのリポジトリとパッケージ管理コマンドについて

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.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です