パッケージ管理
Linuxのパッケージは大きく分けて以下の2つの方式が存在する。
・Debian形式
・RPM形式
パッケージを個別管理する場合 rpm や dpkg などが存在し、依存関係などが記述された、言うなれば「依存表」のようなものを持っている。それを元に yum や apt といったツールを使用して、依存関係を解決し、コマンドひとつでパッケージ郡をインストール出来るようになっている。
依存関係
ソースコードからコンパイルしてアプリケーションを導入するときは「configure」「make」「make install」とコマンドを入力するのが一般的。
①パッケージ内の依存関係
⇒一つのパッケージを構成するファイル群同士の依存関係
②パッケージ同士の依存関係
⇒あるパッケージAが動くためには、あるパッケージBも必要といった関係
rpm
「rpm」は、Red Hat系のLinuxディストリビューションで使われている“RPM(Red Hat Package Manager)パッケージ”を扱うことができるパッケージ管理コマンド
rpm コマンドオプション [その他オプション] [パッケージ名など]
# rpm -ivh <パッケージ名>
# rpm -Uvh <パッケージ名>
# rpm -e <パッケージ名>
# rpm -qa <パッケージ名>
特定のパッケージを調べるには「grep」
# rpm -qa | grep パッケージ名
# rpm -qi <パッケージ名>
# rpm -ql <パッケージ>
# rpm -qf <ファイル名>
# rpm -qR <パッケージ名>
# rpm -qip <ローカルのパッケージ名>
# rpm -qlp <パッケージ名>
rpmのオプション
●コマンドオプション
-i (--install):パッケージをインストール
-U (--upgrade):パッケージをアップグレード(なければインストール)
-F (--freshen):パッケージをアップグレード
-e (--erase):パッケージをアンインストール(削除)
-q (--query):問い合わせ(パッケージ情報の表示と検索)
-V (--verify):パッケージを検査
●共通のオプション
-v:情報表示を増やす
-vv:「-v」指定時よりも詳細な情報を表示する(デバッグ用)
--quite:情報表示を減らす(エラーメッセージのみになる)
●インストール/更新/削除時に使用できる共通オプション
-h (--hash):インストール時の経過を「#」マーク(ハッシュマーク)で表示
--test:実際のインストールなどは行わず、テストのみ行う
--nodeps:パッケージの依存関係を検証しない
●インストール/更新時に使用できるオプション
--excludepath OLDPATH:パスの名前が「OLDPATH」で始まるファイルをインストールしない
--excludedocs:「man」なども含め、文書であるとマーク付されたファイルをインストールしない
--includedocs:文書ファイルをインストールする(デフォルト)
--ignoresize:インストール前に、ディスクの空き領域をチェックしない
--ignorearch:パッケージのアーキテクチャ(CPUなど)がインストール先と一致しなくてもインストールやアップグレードを行う
--ignoreos:パッケージのOSがインストール先と一致しなくてもインストールやアップグレードを行う
--nosignature:パッケージまたはへッダの署名を検査しない
--nosuggest:不明な依存性を解消するパッケージを提案しない
--noscriopts:ファイルの配置だけを行いスクリプトは実行しない
--force:「--replacepkgs」「--replacefiles」「--oldpackage」相当
--replacepkgs:指定したパッケージが既にインストールされていてもインストール
--replacefiles:他のパッケージによってインストールされたファイルを置き換えてしまう場合でもインストール
--oldpackage:インストール済みのパッケージよりもバージョンが古くても更新
●情報問い合わせ関連(-q、-Vと一緒に使用するオプション)
-a(--all):インストールされているパッケージを一覧表示
-i:パッケージの情報を表示
-R(--requires):依存しているファイル名を表示
--provides:パッケージが提供する機能(ライブラリなど)を表示
--changelog:パッケージの更新情報を表示
-l(--list):パッケージに含まれるファイルを表示
-c(--configfiles):設定ファイルのみを表示する(「-l」を指定したものと見なす)
-d(--docfiles):文書ファイルのみを表示する(「-l」を指定したものと見なす)
-f ファイル名:指定したファイルがどのパッケージからインストールされたのかを表示する(フィールドあるいはフルパスで指定)
-p:パッケージ名ではなく、RPMパッケージファイルを指定して問い合わせる
yum
役割としてはRPMパッケージを統合管理
RPM単体ではパッケージ情報、依存関係などの情報を持ち合わせているものの、それを統合的に管理運用するシステムがない
yum [オプション] コマンド [パッケージ名など]
# yum check-update
# yum update
# yum install <パッケージ名>
# yum search <パッケージ名>
# yum remove <パッケージ名>
# yum info <パッケージ名>
# yum list installed
yumの主なコマンド
●パッケージ操作関係
install:パッケージをインストール
reinstall:パッケージを再インストール
downgrade:パッケージをダウングレード
erase:パッケージを削除
update:システムのパッケージを更新
update-minimal:「重要な更新」だけを更新
upgrade:不要になったパッケージを考慮しながらパッケージを更新
distribution-synchronization:最新の利用可能なバージョンへインストール済みパッケージを同期
localinstall:パッケージファイル(RPMファイル)を指定してインストール
localupdate:パッケージファイル(RPMファイル)を指定してアップデート
●情報関係のコマンド
info:パッケージもしくはパッケージグループの詳細を表示
list:パッケージグループの一覧を表示
deplist:パッケージの依存性の一覧を表示
groups:パッケージグループの情報を表示
search:指定した文字列でパッケージの詳細を検索
provides:ファイルなどを指定して、該当するファイルを提供するパッケージを検索
repolist:ソフトウェアリポジトリの構成を表示
version:ホストが利用できるリポジトリのバージョンを表示
●メンテナンス関係のコマンド・その他
check:rpmデータベースの問題を確認
check-update:更新に利用できるパッケージを確認
clean:キャッシュデータを削除
shell:対話型のシェル(yumシェル)を実行
updateinfo:リポジトリの更新情報を表示
yumの主なオプション
-y(--assumeyes):全ての問い合わせに「yes」で応答したものとして実行
--assumeno:全ての問い合わせに「no」で応答したものとして実行
-t(--tolerant):エラーを黙認
-R(--randomwait) 分:最大の待ち時間を指定
-c 構成ファイル:構成ファイルを指定
--installroot=場所:インストール先を指定
--downloaddir=場所:ダウンロード先を指定
--downloadonly:ダウンロードだけを行う
-C(--cacheonly):パッケージの情報をダウンロードせずキャッシュだけを使用
-x(--exclude) パッケージ:除外するパッケージを指定する(ワイルドカードも使用可能)
--color=指定:出力メッセージを色付きにするかどうかを「always」「auto」「never」のいずれかで指定
-q(--quiet):実行時にメッセージを出力しない
-v(--verbose):詳しいメッセージを出力
dnf
「dnf」は、Red Hat系のLinuxディストリビューションで使われている“RPMパッケージ”を扱うためのパッケージ管理コマンド
dnf [オプション] コマンド [パッケージ名など]
# dnf upgrade <パッケージ名>
# dnf upgrade bash
# dnf upgrade git*
# dnf group upgrade <グループ名>
# dnf upgrade
dnfの主なコマンド
●パッケージ操作関係
install:パッケージをインストール(既にインストールされていた場合は更新する)
reinstall:パッケージを再インストール
downgrade:パッケージをダウングレード
erase:パッケージを削除
remove:パッケージを依存関係のあるパッケージとともに削除
autoremove:依存関係のためにインストールされていた不要なパッケージを削除
update:システムのパッケージを更新
upgrade-minimal:不具合の修正や機能追加、セキュリティ対応など「重要な更新」だけを更新
distro-sync:最新の利用可能なバージョンへインストール済みパッケージを同期
mark install:指定したパッケージを手動でインストールしたものとする(autoremoveの対象外となることが利点、「dnf mark remove パッケージ名」でマークを削除)
●情報関係のコマンド
info:パッケージもしくはパッケージグループの詳細を表示
list:パッケージグループの一覧を表示
deplist:パッケージの依存性の一覧を表示
group:パッケージグループの情報を表示
search:指定した文字列でパッケージの詳細を検索
provides:ファイルなどを指定して、該当するファイルを提供するパッケージを検索
repolist:ソフトウェアリポジトリの構成を表示
●メンテナンス関係/その他
makecache:パッケージリストを格納したデータベース(リポメタデータ)をダウンロードし、キャッシュを作成/更新
check:ローカルのパッケージデータベースに問題がないかどうか確認
check-update:更新に利用できるパッケージを確認
clean:キャッシュデータを削除
shell:対話型のシェル(DNFシェル)を実行
updateinfo:リポジトリの更新情報を表示
history:パッケージのインストールや削除の履歴を表示
dnfの主なオプション
●dnfの主なオプション
-y(--assumeyes):全ての問い合わせに「yes」で応答したものとして実行
--assumeno:全ての問い合わせに「no」で応答したものとして実行
-C(--cacheonly):パッケージの情報を全くダウンロードせずに、キャッシュだけを使用
--refresh:コマンド実行前にパッケージ情報のキャッシュを強制的に更新
-R(--randomwait) 分:最大の待ち時間を指定
-c 構成ファイル:構成ファイルを指定
--enablerepo リポジトリID:指定したリポジトリを有効にする
--disablerepo リポジトリID:指定したリポジトリを無効にする
--repo リポジトリID:指定したリポジトリだけを有効にする(複数ある場合は「--repo」「--repoid」を複数回使用する)
--repoid リポジトリID:--repoと同じ
--nodocs:ドキュメントをインストールしない
--allowerasing:依存関係を解決するためにインストール済みパッケージの削除を許可
--installroot=場所:インストール先を指定
--downloaddir=場所:ダウンロード先を指定
--downloadonly:ダウンロードだけを行う
-x(--exclude) パッケージ:除外するパッケージを指定する(ワイルドカードも使用可能)
--showduplicates:dnfのサブコマンド「info」「search」で重複しているものも表示
--color=指定:出力メッセージを色付きにするかどうかを「always」「auto」「never」のいずれかで指定
-q(--quiet):実行時にメッセージを出力しない
-v(--verbose):詳しいメッセージを出力
apt
aptコマンドは、Debian系のディストリビューションに使われているパッケージ管理用のコマンド
apt [オプション] コマンド [パッケージ名やコマンド用オプションなど]
aptの主なコマンド
●パッケージの検索と操作
list:パッケージ一覧を表示
search キーワード:パッケージの説明文からキーワードを検索して該当するパッケージを表示
show:指定したパッケージの情報を表示
install:指定したパッケージをインストール
remove:指定したパッケージを削除
●設定とシステムメンテナンス
edit-sources:sources.listファイル(パッケージのダウンロード元などを指定するファイル)を編集
update:パッケージのインデックスファイルを更新
upgrade:インストール済みのパッケージをまとめて更新
full-upgrade:upgradeと同様だが、更新に伴って使用できなくなるパッケージを削除するなどの調整も行う
aptの主なオプション
-c=設定ファイル:使用する設定ファイルを指定(デフォルトの設定ファイルの後に読み込まれる)
-o=設定オプション:設定オプションを指定
dpkgコマンド
「dpkg」とはdebianのパッケージである「deb」ファイルを取り扱うコマンド
dpkg [オプション] アクション
# dpkg -i <アーカイブ名>
# dpkg -r <パッケージ名>
# dpkg -P <パッケージ名>
# dpkg -l もしくはパターン
dpkgの主なアクション
-i (-install):パッケージをインストール
-r (--remove):設定ファイルを残してパッケージをアンインストール
-R (--purge):ディレクトリ内を再起的に処理
インストールコマンドの違い
「rpmとはパッケージ個々」であり「yumはrpmを管理するマネージャ」
ネット上から拾ってきたパッケージに対して「CentOSではrpm」で「Ubuntuではdpkg」
「dnfはCentOS 7が採用しているyumの後継となるコマンド」
rpm(個々のパッケージを扱う)
・管理はパッケージ個々単位であり依存関係は自動解決されない
◎パッケージ単位での管理となるので「rpm」など「.rpm」ファイルを指定する。
・個々の細かいファイル情報も参照できる
◎リポジトリに依存しない
・個々で管理するときはrpmコマンドを使用する
・依存関係を自動解決させたいのなら、yumリポジトリに投入する必要がある
yum(リポジトリから依存関係を含めて管理する)
◎基本的にリポジトリの中のrpmを統合管理しており依存関係を自動解決
・インストール時は基本的に「yum search」でヒットする名前を指定すればよい
・リポジトリ上に存在しているインストールしていないパッケージの検索や情報閲覧が可能
・ディストリビューション内のパッケージのアップデートもyumを使用する
・Python 2とPython 3の両対応ではなくPython 2でしか動かない
dnf
・yumと同じサブコマンド、オプションを使用可能
・yumの後継となるパッケージ管理ツール
・「/etc/yum.repos.d」ディレクトリを使用
用語集
・リポジトリ:パッケージの提供元
・パッケージ:関連する様々な要素を一つにまとめたもの