👋

【LPIC】Linuxのパッケージ管理システムについて

2023/02/25に公開

概要

LPIC1の勉強中に混乱したので、まとめてみました。

パッケージ管理について

実行プログラム、設定ファイル、ドキュメントを1つのファイルにまとめたものをパッケージという。
その管理はパッケージ管理システムが行う。

Linuxのパッケージ管理は、大きく分けて2つある。

  • Debian形式(Debian系のディストリブーション)
    • dpkgコマンド・APTツールが使われることが多い
  • RPM形式(Red Hat系のディストリブーション)
    • rpmコマンド ・ YUM(CentOSやFedoraでのAPTツールに相当)

Debianパッケージ管理

dpkgコマンド

dpkgコマンドでappachパッケージをインストール

dpkg -i apach2_2.4.29-1ubuntu4.5_amd64.deb

設定ファイル含めて削除

dpkg --purge apache2

設定ファイルを残す場合

dpkg -r apache2

指定したファイルがどのパッケージからインストールされたかを表示

dpkg -S '*/apache2'

パッケージ情報を確認

dpkg -s bash
dpkg --status bash

インストール済みの全パッケージ

dpkg -l

パッケージに含まれるファイルを表示

dpkg -L bash
dpkg --listfiles bash

対話形式で、再設定などを行う場合。(例: Postfix)

dpkg-reconfigure postfix

apt-getコマンド

apt-getはAPTに含まれるコマンド。インターネット経由で最新パッケージの入手などができる。

※ apt-getコマンドでパッケージ管理を始めるには、/etc/apt/sources.listにパッケージ管理をしているサイトのURLを記述する必要がある。

dev http://archive.ubuntu.com/ubuntu bionic main restricted

設定したサイトに接続して最新のパッケージを取得

apt-get update

インストールとアンインストール

apt-get install apache2
apt-get remove apache2

システムを一括で最新にする場合

apt-get dist-upgrade

ただしこのコマンドは、既存パッケージを削除する場合があるため、削除を伴わないパッケージのアップグレードは下記のようにする。

apt-get upgrade

apt-cacheコマンド。

パッケージの照会・検索をするコマンド。

apache2に関連するパッケージを検索

apt-cache search apache2

apache2パッケージの情報を表示

apt-cache show apache2

パッケージが依存するパッケージを表示

apt-cache depends zsh

aptコマンド

apt-get と apt-cacheを合わせたようなコマンドが aptコマンド。

パッケージリストの更新

apt update
apt -y update # 対話的な動作をせず、自動的にYES

インストールとアンインストール

apt install emacs
apt remove emacs

「apache2」で始まる名前のパッケージだけを一覧表示

apt search "apache2*"

依存関係のためにインストールされたが、今や必要なくなったものを削除。

apt autoremove

RPMパッケージの管理

RPMはRed Hat社が開発したパッケージ管理システム。

rpmコマンド

パッケージのインストール

rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm

vオプションで詳細な情報を表示し、hオプションで進行状況(###[100%])を表示する。

パッケージのアップデート

rpm -Fvh ~/rpms/*.rpm

Fオプションではインストールされていればアップグレードする。
Uオプションはなければインストールする。

アンインストール。
eオプションであることに注意!。eraseの略。

rpm -e httpd

ただし、依存関係を無視してアンインストールする場合、--nodepsをつける。

rpm -e --nodeps httpd-tools

パッケージの照会。
照会の場合は-qオプションを必ずつける。

インストール済全てを表示

rpm -qa

パッケージ情報を表示。

rpm -qi bash

インストール前のパッケージ情報は、

rpm -qip bash

指定したファイルが何というパッケージからインストールされたのか表示する。

rpm -qf /bin/bash

パッケージからどのようなファイルがインストールされるのかを事前に調べる。

rpm -qlp bash-4.3.26.el7.x86_64.rpm

指定のパッケージからインストールされたファイルの一覧。

rpm -ql hhtpd # 全てのファイル
rpm -qc hhtpd # 設定ファイルのみ
rpm -qd hhtpd # ドキュメントファイルのも

依存関係を調べる

rpm -qR less

署名の確認

rpm --checksig httpd-2.4.6-80.el7.centos.1.x86_64.rpm
rpm -K httpd-2.4.6-80.el7.centos.1.x86_64.rpm

RPMパッケージをインストールせずに内容を展開するにはrpm2cpioコマンド

rpm2cpio httpd-2.4.6-80.el7.centos.1.x86_64.rpm | cpio -id

カレントディレクトリ以下にファイルやディレクトリを展開してくれる。

yumコマンド

YUMはCentOSにおけるAPTツールに相当する。YUMの設定は。/etc/yum.confと/etc/yum.repos.dディレクト以下のファイルで行う。

パッケージ内にアップデートパッケージが存在するパッケージを表示

yum check-update

全パッケージのインストール

yum update # 全パッケージアップデート
yum install ruby # インストール
yum remove emacs #アンインストール
yum info bash # 詳細

リポジトリにある全てのパッケージ情報とインストールの有無を確認

yum list

パッケージ情報をキーワード検索する

yum search ruby

パッケージグループ単位のリスト表示

yum groups list

GNOMEデスクトップ関連のパッケージをまとめて、インストールする

yum groups install "GNOTE Desktop"

その他コマンド

似ているもとして、dnfコマンドやzypperコマンドが存在する。

Discussion