Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Linuxのパッケージ管理とアップデート基礎知識
Search
Go Nishimoto
April 22, 2025
Technology
0
110
Linuxのパッケージ管理とアップデート基礎知識
Linuxのパッケージ管理に関連する用語や仕組みを整理しました。
主にRedHat系(Red Hat Enterprise Linux)についてまとめています。
Go Nishimoto
April 22, 2025
Tweet
Share
Other Decks in Technology
See All in Technology
ここはMCPの夜明けまえ
nwiizo
2
770
SmartHR プロダクトエンジニア求人ガイド_2025 / PdE job guide 2025
smarthr
0
100
SREの視点で考えるSIEM活用術 〜AWS環境でのセキュリティ強化〜
coconala_engineer
1
290
新卒エンジニアがCICDをモダナイズしてみた話
akashi_sn
2
200
Running JavaScript within Ruby
hmsk
3
320
LLM とプロンプトエンジニアリング/チューターをビルドする / LLM, Prompt Engineering and Building Tutors
ks91
PRO
1
250
SnowflakeとDatabricks両方でRAGを構築してみた
kameitomohiro
1
230
クォータ監視、AWS Organizations環境でも楽勝です✌️
iwamot
PRO
1
290
Amazon CloudWatchで始める エンドユーザー体験のモニタリング
o11yfes2023
0
180
AIコーディングの最前線 〜活用のコツと課題〜
pharma_x_tech
1
780
Devinで模索する AIファースト開発〜ゼロベースから始めるDevOpsの進化〜
potix2
PRO
7
3.3k
Recap of Next - Google Cloud で実践する クラウドネイティブ最前線 / The Frontlines of Cloud-Native with Insights from Google Cloud
aoto
PRO
1
100
Featured
See All Featured
Side Projects
sachag
452
42k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Thoughts on Productivity
jonyablonski
69
4.6k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.2k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.1k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.8k
Designing for humans not robots
tammielis
252
25k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Building an army of robots
kneath
304
45k
RailsConf 2023
tenderlove
30
1.1k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Transcript
Linuxのパッケージ管理とア ップデート基礎知識 Linuxのパッケージ管理に関連する用語や仕組みを整理しました。 主にRedHat系(Red Hat Enterprise Linux)についてまとめています。 パッケージ管理はLinuxシステムの維持に欠かせない重要な知識です。 @go_nishimoto
パッケージとは何か パッケージの定義 パッケージとは、ソフトウェアをインストールするための必要なファイル(配布形態)です。プログラム本体、ライブラリ、設定 ファイル、ドキュメント、メタデータなどが含まれています。 パッケージの役割 パッケージはソフトウェアのインストール、更新、削除を簡単に行えるようにするための仕組みです。依存関係の管理や競合の解 決も行います。 パッケージの種類 ディストリビューションによって、RPM(RedHat系)、DEB(Debian系)など異なるパッケージ形式が使われています。それぞ れに専用の管理ツールが存在します。
主なディストリビューションのパッケージ管理 ディストリビューション 分類(拡張子) 管理コマンド RedHat,CentOS,AlmaLinux RPM(.rpm) rpm yum dnf Debian,Ubuntu
DEB(.deb) dpkg apt FreeBSD Ports Collection Binary Packages(.txz,.tbz) Pkg Portsnap portmaster portupgrade Solaris SVR4 IPS(.pkg,.p5p) pkgadd pkgrm pkginfo pkg
Linuxで利用される主なパッケージ Webサーバ nginx、Apache HTTP Serverなど、Webサイトを提供す るためのサーバソフトウェア データベース MariaDB、MySQL、PostgreSQLなど、データを効率的に 保存・検索するためのシステム 開発ツール
gcc、git、pythonなど、ソフトウェア開発に必要なコンパ イラやバージョン管理ツール セキュリティツール firewalld、SELinux、OpenSSLなど、システムを保護する ためのセキュリティ関連ツール
RPMパッケージの構成要素 プログラム本体 コンパイル済みの実行ファイル、 直接実行可能なバイナリファイル ライブラリ プログラムが動作するために必要 となる再利用可能な共通機能 設定ファイル 設定内容が記載されたテキストフ ァイル、インストールスクリプト
ドキュメント READMEなどのパッケージに関す る情報 メタデータ パッケージ名、バージョン、依存 関係などの情報
主要なライブラリの例 glibc (GNU C Library) C言語の標準ライブラリで、メモリ 管理、入出力操作、文字列処理など 基本的な機能を提供します。ほぼす べてのLinuxプログラムがこのライ ブラリに依存しています。
libcurl URL転送ライブラリで、HTTP、 FTP、SMTPなど様々なプロトコル でのデータ転送機能を提供します。 多くのネットワークアプリケーショ ンで使用されています。 zlib データ圧縮用のライブラリで、効率 的なデータ圧縮・展開機能を提供し ます。ファイル圧縮やネットワーク 通信の効率化に広く利用されていま す。
パッケージ管理の重要ポイント 管理コマンドの理解 適切なコマンドと設定ファイルの知識 リポジトリの設定 信頼できるパッケージ取得先の設定 依存関係の管理 パッケージ間の依存と競合の解決 パッケージ管理を効果的に行うには、これらの要素を理解することが重要です。管理コマンドや設定ファイルの知識、適切なリポジト リの選択、そして依存関係や競合関係の管理が基本となります。特にエンタープライズ環境では、セキュリティと安定性を考慮したパ ッケージ管理が求められます。
RedHat系パッケージの操作方法 rpmコマンド パッケージを個別に操作する基本コマン ドです。依存関係や競合関係の解決は手 動で行う必要があります。直接ファイル を指定してインストールする場合に使用 します。 例: rpm -ivh
package.rpm yumコマンド リポジトリからパッケージを取得し、依 存関係や競合関係を自動で解決します。 バックグラウンドでrpmコマンドを使用 しています。既に開発が終了しており、 現在はdnfに置き換えられています。 例: yum install package dnfコマンド yumの後継で、パフォーマンス向上やメ モリ使用量の削減など改善が加えられて います。依存関係や競合関係の管理やト ランザクション処理がより効率的になっ ています。 例: dnf install package
依存関係と競合関係の違い 依存関係(Dependencies) パッケージが正常に動作するために必要な他のパッケージ 競合関係(Conflicts) 2つのパッケージが同じファイルやリソースを変更しようとする場合に発生する問題 自動解決 yumやdnfを使用する場合、基本的には管理者が依存関係や競合関係を考慮する必要はありません
dnfの役割を理解する Linux(RedHat系)のパッケージ管理にはdnf(またはyum)を利用することが一般的です。dnfによるパッケージ管理にはコマンドに よる操作方法と設定ファイルによる定義の理解が必要です。 コマンドによる操作 dnfコマンドを使用して、パッケージのイ ンストール、更新、削除などの操作を行い ます。様々なオプションを組み合わせて柔 軟な管理が可能です。 設定ファイルによる定義 dnfの動作は設定ファイルによって制御さ
れます。リポジトリの設定やプロキシ設定 、キャッシュの管理などを定義できます。 リポジトリとの連携 dnfはリポジトリからパッケージ情報を取 得し、最適なパッケージを選択してインス トールします。複数のリポジトリを管理す ることも可能です。
主要なdnfコマンドとオプション(1) dnf install パッケージをインストールします。依存関係も自動的に解 決されます。 dnf update インストール済みパッケージをアップデートします。 dnf upgrade
インストール済みパッケージをアップデートし、旧パッケ ージを自動削除します。 dnf remove インストール済みパッケージを削除します。 dnf reinstall インストール済みパッケージを再インストールします。 dnf downgrade パッケージをダウングレードします。 dnf distro-sync システムを最新バージョンに同期します。 dnf install ./package.rpm ローカルのRPMファイルを指定してインストールします。
dnf info パッケージの詳細情報を表示します。 dnf list installed インストール済みパッケージを表示します。 dnf check-update アップデート可能なパッケージ一覧を表示します。
dnf repoquery --requires パッケージの依存関係を表示します。 dnf search パッケージを検索します。 dnf repolist リポジトリ一覧を表示します。 dnf repolist enabled 有効になっているリポジトリ一覧を表示します。 dnf config-manager --set-enabled 指定したリポジトリを恒久的に有効化します。 主要なdnfコマンドとオプション(2)
dnf config-manager --set-disabled 指定したリポジトリを恒久的に無効化します。 dnf config-manager --add-repo リポジトリURLを追加します。 dnf --enablerepo
特定のリポジトリを一時的に有効化します。 dnf --disablerepo 特定のリポジトリを一時的に無効化します。 主要なdnfコマンドとオプション(3) dnf clean all キャッシュやダウンロード済みパッケージを削除します。 dnf update --skip-broken 依存関係エラーをスキップしてアップデートします。 dnf update --exclude 指定したパッケージをアップデート対象から除外します。 dnf update --disableexcludes 除外設定を無効化してアップデートします。
dnfに関する設定ファイル yumのファイル名 dnfのファイル名 説明 /etc/yum.conf /etc/dnf/dnf.conf メインの設定ファイル、リポジトリやキャッシュ、 GPGチェックの設定など基本的な設定 /etc/yum.repos.d/*.repo /etc/yum.repos.d/*.repo
リポジトリ情報が記載されているファイル群、 リポジトリごとに個別の.repoファイルがある /etc/yum/vars/* /etc/dnf/vars/* 変数の定義ディレクトリ、releaseverやbasearchなどの変数が定義 /var/log/yum.log /var/log/dnf.log パッケージインストールやアップデートのログが保存されるファイル /var/cache/yum/* /var/cache/dnf/* パッケージのキャッシュやメタデータが保存されるディレクトリ N/A /etc/dnf/modules.d/*.module dnfでモジュールストリームを管理するためのファイル、 特定のバージョンや機能セットを選択してインストールする際に使用 N/A /etc/dnf/plugins/ dnfプラグインの設定ディレクトリ、プラグインの動作を設定
dnf.confの主な設定項目(デフォルト定義) オプション 設定内容 cachedir パッケージのキャッシュを保存するディレクトリ keepcache ダウンロード後のキャッシュ保持の有無 debuglevel デバッグメッセージの出力レベル logfile
ログの出力先 gpgcheck インストール時のGPGキーのチェック有無 plugins プラグインの使用許可の有無 fastestmirror 使用可能なミラーの中で最も速いものを選択するか exclude 更新やインストールから除外するパッケージのパターンを指定 includepkgs インストールまたは更新するパッケージを限定するためのリスト timeout リポジトリ接続のタイムアウト時間 proxy プロキシサーバーのアドレス proxy_username プロキシサーバーの認証情報(ユーザ名) proxy_password プロキシサーバーの認証情報(パスワード) sslverify SSL証明書の検証を行うか metadata_expire リポジトリのメタデータのキャッシュ有効期間
dnf.confの主な設定項目(追加定義) オプション 設定内容 exactarch アーキテクチャに一致するパッケージのみのインストール有無 obsoletes パッケージ更新時の旧パッケージの置き換え有無 installonly_limit インストール済みカーネルのバージョン保持数 deltarpm
deltarpmの使用の有無 assumeyes dnfコマンド実行時にすべての質問に自動的に「はい」と答えるか color コマンドの出力に色を付けるか
dnfとリポジトリの関係性 リポジトリとは各種パッケージを保存しておくためのサーバ(保存庫)です。インターネット上のリポジトリを外部リポジトリ、社内 ネットワーク上のリポジトリを内部リポジトリと呼びます。 リポジトリの役割 パッケージの保存と配布を行い、システム管理者がソフトウェ アを効率的に管理できるようにします。 外部リポジトリ インターネット上に公開されているリポジトリで、公式リポジ トリとサードパーティリポジトリがあります。 内部リポジトリ
オプション 設定内容 name リポジトリ名(必須) baseurl リポジトリの保存先URL(必須) enablerepo リポジトリの有効化or無効化の設定 gpgcheck GPGのチェックを有効化or無効化の設定。 gpgkey 使用する公開鍵のURL(またはファイル名) 組織内のネットワークに設置されたリポジトリで、セキュリ ティやネットワーク帯域の効率化のために利用されます。 [main]セクションの他に[repository]セクションを作成し、リポジトリ関連の情報を定義することも可能でが、リポジトリごとの設定は /etc/dnf.confに直接記載せずに、/etc/dnf.repos.d/*.repoに定義することが推奨されます。 リポジトリ設定の主なオプション
主な外部リポジトリ(公式、サードパーティ、特化型) BaseOS Red Hat Enterprise Linuxの基本的なOS機能を提供する公式リ ポジトリです。カーネルやシステムライブラリなどのコアパッ ケージが含まれています。 AppStream モジュール化されたアプリケーションや開発ツールを提供する
公式リポジトリです。異なるバージョンやエディションの選択 が可能で、柔軟な環境構築ができます。 EPEL (Extra Packages for Enterprise Linux) Fedoraプロジェクトの有志によるRedHat系ディストリビューシ ョン向けのサードパーティリポジトリです。公式リポジトリにな い多数の追加パッケージを提供しています。 Zabbix Zabbix監視ソフトウェアの公式サードパーティリポジトリです 。監視ツールの最新バージョンや関連パッケージを提供してい ます。 Docker Dockerの公式サードパーティリポジトリです。Dockerエンジ ンやコンテナ関連のツールを提供しています。 基本的なパッケージはRHELの公式リポジトリから取得可能ですが、ZabbixやDockerのようにサービスごとの公式リポジトリ(サードパーティ リポジトリ)から取得しなければならないパッケージも存在します。これらのリポジトリは、特定のアプリケーションに特化した最新のパッケ ージを提供しています。 Remi Repository PHPやその他の開発ツールの最新バージョンを提供するサード パーティリポジトリです。PHP関連のパッケージが豊富に揃っ ています。
パッケージ取得元の優先順位 ①キャッシュの利用 既にキャッシュされたパッケージがあれば、ネットワーク越しのリ ポジトリから再ダウンロードせずにキャッシュを利用します。キャ ッシュがない場合、リポジトリからパッケージがダウンロードされ ます。 ②リポジトリの有効性 リポジトリが有効でなければ使用されません。無効なリポジトリは パッケージ選択に影響しません。dnfコマンドで有効・無効を切り 替えることができます。
③リポジトリの優先度 yumの場合、/etc/dnf.repos.d/*.repoの「priority」オプションが設 定されている場合、優先度が小さいリポジトリが選択されます。 dnfでは「dnf-plugin-priorities」パッケージをインストールするこ とで使用可能になります。 ④パッケージのバージョン 同一パッケージの複数バージョンが存在する場合、最新バージョン のパッケージが優先されます。特定のバージョンを指定しない限り 、常に最新のものが選択されます。 ⑤コストオプション costオプションが設定されている場合、低コストのリポジトリが優 先されます。dnfではcostオプションを使ってリポジトリ選択に影 響を与えることができます。 ⑥リポジトリファイルの読み込み順 リポジトリファイルの読み込み順序やincludeされた順番も影響し ますが、通常はリポジトリの優先度やその他の設定がより重要です 。
リポジトリ管理コマンド RHEL7以前 yum-config-managerコマンドを使用します。このコマンドを利用す るには、yum-utilsパッケージの追加インストールが必要です。 インストール方法: sudo dnf install yum-utils RHEL8以降
dnf config-managerコマンドを使用します。dnfの一部として提供さ れるためパッケージの追加インストールは不要です。 リポジトリの有効化: sudo dnf config-manager --set-enabled <repository-name> リポジトリの無効化: sudo dnf config-manager --set-disabled <repository-name> リポジトリの追加 メタデータの更新 sudo dnf makecache パッケージのインストール sudo dnf install docker-ce docker-ce-cli containerd.io 通常、パッケージ管理はdnfコマンドにオプションを加えて実行するシンプルなものですが、サードパーティリポジトリからパッケージを取得す る場合は、まずリポジトリを追加し、メタデータを更新してからパッケージをインストールする必要があります。取得元のリポジトリによりイ ンストール方法が異なることがあります。
リポジトリとGPG 信頼性の保証 パッケージが公式リポジトリから提供されているか評価します。第三者による改ざんがないかを確認します。 整合性の確認 パッケージが配布中に変更されたり、改ざんや破損がないかを検証します。 セキュリティの強化 パッケージがマルウェアやウイルスに感染していないかをチェックします。 GPG(GNU Privacy Guard)は、リポジトリからダウンロードしたパッケージの信頼性と整合性を保証するための暗号化技術です。デ
ジタル署名を用いて、パッケージの出所と内容を確認します。通常、リポジトリを設定する際には、GPG公開鍵も同時にインポートし てパッケージの署名を検証します。
GPG設定の基本 GPG設定の場所 GPGの設定は、各リポジトリの設定ファ イル(通常は/etc/dnf.repos.d/*.repo) 内で定義されます。主に以下の2つの設定 項目があります。 gpgcheck GPG署名の検証を有効にするか、無効に するかの設定です。セキュリティを確保 するためには有効にすることが推奨され
ます。 設定例: gpgcheck=1 gpgkey 使用する公開鍵のURLまたはファイル名 を指定します。この鍵を使ってパッケー ジの署名を検証します。 設定例: gpgkey=https://example.com/RPM- GPG-KEY
関連用語のまとめ 用語 意味 ディストリビューション OSの配布版で、基本的なOSとその関連ソフトウェアを含む一式 リリースバージョン ディストリビューションの特定のバージョン、新機能や改善点を含むリリースのバージョン番号 カーネル OSの中核部分で、ハードウェアとソフトウェアのリソースを管理する基本的な部分 モジュール
カーネルやOSの機能を拡張するための部品(例:ハードウェアのドライバや追加機能など) ライブラリ 各種プログラムが共通して利用するための機能やコードの集まり パッケージ インストール可能なソフトウェアの単位でプログラムやその依存関係を含む リポジトリ パッケージを保存し配布するための場所、リポジトリからソフトウェアをダウンロードする レポジトリファイル リポジトリの設定情報を含むファイル、どのリポジトリを使用するかを定義する メタデータ リポジトリ内のパッケージの情報や依存関係などを含むデータ、パッケージの検索や管理に使用される GPGキー ソフトウェアのパッケージに対してデジタル署名を行うための公開鍵、パッケージの信頼性と整合性を 確認する サードパーティリポジトリ 公式リポジトリ以外の、外部の開発者や団体が提供するリポジトリ、公式のサポートがないことが多い リポジトリURL リポジトリへのアクセス先のURL、リポジトリの場所を指定する パッケージマネージャ ソフトウェアのインストール、更新、削除を管理するツール(例:yum、dnf) AppStream RHEL 8以降で導入されたソフトウェア配布の仕組み、複数のバージョンを提供し、アプリケーションの 選択と管理を容易にする RHSCL Red Hat Software Collectionsの略、RHEL向けの追加ソフトウェアパッケージ群で、より新しいバー ジョンのアプリケーションを提供
主要なディストリビューション RHEL (Red Hat Enterprise Linux) 商用サーバー向けの企業向けディストリビュ ーションです。安定性とセキュリティに重点 を置き、長期サポートを提供しています。有 償のサブスクリプションモデルで提供されて
います。 CentOS RHELの無償クローンで、商用サポートがなく 、コミュニティ主導のディストリビューショ ンです。以前は広く使われていましたが、現 在は開発方針が変更されています。 AlmaLinux CentOSの後継として位置づけられるRHELク ローンです。商用サポートがなく、コミュニ ティ主導で開発されています。企業での採用 が増えています。 Rocky Linux CentOSの後継として設立された、RHELクロ ーンです。商用サポートなし、コミュニティ 主導で開発されています。AlmaLinuxと同様 に企業環境での採用が増えています。 Amazon Linux AWS (Amazon Web Services) に最適化され たAmazon提供のディストリビューションで す。クラウド環境向けに最適化されており、 AWSサービスとの統合が強化されています。 Ubuntu Debianを基にしたユーザーフレンドリーなデ ィストリビューションです。デスクトップか らサーバーまで広く利用されており、初心者 にも使いやすい設計になっています。 以前はCentOSが採用されていることも多かったですが、最近はサポート期間などの都合上、AlmaLinuxやRocky Linuxが後継として採用されることが増えてきました 。ディストリビューションの選択は、サポート期間、安定性、必要なパッケージの対応状況などを考慮して行われます。
ディストリビューションとカーネルバージョン リリースバージョン 初期カーネルバージョン アップデート後 カーネルバージョン RHEL 7.x 3.10系 3.10 系
RHEL 8.x 4.18系 5.4~5.14系 RHEL 9.x 5.14系 5.14 系 パッケージ名 「カーネル」パッケージであることを示す バージョン番号 カーネルのメジャー、マイナー、パッチレベルを示す リリース番号 ビルド番号やリビジョンを含むもの アーキテクチャ 「64ビットのCPU」を指す OSの中核を成すソフトウェアが「カーネル」です。ディストリビューションは、カーネルを含むOS全体のパッケージであり、通常、特定のリ リースバージョンごとに指定されたカーネルバージョンが含まれています。一つのリリースバージョンに対して適用されるカーネルバージョン は複数存在します。 例えば、ファイル名が「kernel-4.18.0-425.3.1.el8.x86_64.rpm」の場合、各部分の意味は上記のようになります。基本的には、カーネルに限ら ず、他のパッケージ名もこのような構造でファイル名が決まります。これにより、パッケージの詳細と適用対象が明示されます。 パッケージ名の意味
モジュールとライブラリの違い モジュール Linuxカーネルやソフトウェアの機能を追加・拡張するための部 品です。たとえば、カーネルモジュールは、ハードウェアサポー トや新しいファイルシステム機能を提供するためにカーネルに動 的に組み込まれます。モジュールは、特定の機能やサービスを分 けて管理し、必要に応じて読み込むことができます。 ライブラリ アプリケーションが実行時に利用する共通のコードや関数の集合 です。例えば、C言語の標準ライブラリは、プログラムが基本的
な操作を行うための関数群を提供します。ライブラリは、アプリ ケーションが直接呼び出して利用し、コードの再利用を促進しま す。 モジュールはシステムやカーネルの機能を拡張する部品で、ライブラリはプログラムの機能を提供するコードの集まりです。両者は異 なる役割を持ちますが、どちらもシステムの機能を拡張するために重要です。
dnfコマンドが失敗する原因 ネットワークの問題 リポジトリへの通信障害やDNS解決の失敗 SELinuxの設定 セキュリティポリシーによるアクセス制限 キャッシュの問題 破損したキャッシュデータによる障害 依存関係の問題 パッケージ間の依存関係が解決できない バージョン上限の問題
ディストリビューションの制約によるバー ジョン制限
ネットワークの問題(1) リポジトリへの通信がブロックされる問題 取得元リポジトリの設定(URLやGPGキーなど)によりパッ ケージのインストールに失敗することがあります。 /etc/yum.repos.d/*.repoの設定内容を見直すか、リポジトリ を再インストールすることで解消する可能性があります。 firewalldの設定 通常、リポジトリへの通信はHTTP(ポート80)または HTTPS(ポート443)を使用するため、firewalldによるポー トの開放が必要です。
設定例: sudo firewall-cmd --permanent --add-service=http DNSサーバへの通信がブロックされる問題 通常、リポジトリへのアクセス設定はホスト名(ドメイン名 )で定義されるため、リポジトリへアクセスするにはDNSに よる名前解決が必要です。DNSサーバの設定は /etc/resolv.confにより定義されます。 設定例: nameserver 8.8.8.8 DNSポートの開放 DNSサーバへアクセスするためのfirewalldの設定(UDPポー ト53の開放)も必要です。 設定例: sudo firewall-cmd --permanent --add-port=53/udp
ネットワークの問題(2) プロキシサーバへの通信がブロックされる問題 企業環境ではプロキシサーバを経由してインターネットにア クセスすることが一般的です。dnfの設定ファイルにプロキシ 情報を追加する必要があります。 設定例(/etc/dnf.conf): [main] proxy=http://proxy.example.com:port proxy_username=your_username proxy_password=your_password
環境変数による設定 通常の外部への通信時にはhttp_proxyやhttps_proxyなどの環 境変数で定義されたプロキシサーバを経由して通信します。 設定例: export http_proxy=http://proxy.example.com:port
SELinuxの設定による問題 SELinuxのステータスを確認 する SELinuxの現在の状態を確認します。 Enforcing(強制)モードの場合、セキ ュリティポリシーが厳格に適用されま す。 確認コマンド: getenforce SELinuxのログを確認する
SELinuxによるブロックが発生した場 合、ログに記録されます。これを確認 することで問題の原因を特定できます 。 確認コマンド: ausearch -m avc -ts recent SELinuxのポリシーを調整す る 必要に応じてSELinuxのポリシーを調 整し、必要な操作を許可します。 設定例: setsebool -P httpd_can_network_connect on
キャッシュの問題 キャッシュのクリア パッケージの取得がキャッシュの問題で失敗する場合は、キ ャッシュをクリアすることで問題が解決します。キャッシュ は、一時的にダウンロードしたパッケージやメタデータを保 存するために使用されますが、これが破損したり、古くなっ たりすると、パッケージ操作が正常に行えなくなることがあ ります。 コマンド例: sudo
dnf clean all 部分的なキャッシュクリア キャッシュ全体をクリアする必要がない場合、特定のキャッ シュだけをクリアすることも可能です。 メタデータのみクリア: sudo dnf clean metadata パッケージのみクリア: sudo dnf clean packages
パッケージの依存関係の問題 依存関係の解決 通常、dnfやyumはすべての依存関係を厳密にチェックし、依 存関係の解決ができない場合にはアップデートやインストー ルを中断します。依存関係の問題を解決するには、必要な依 存パッケージをインストールするか、競合するパッケージを 削除する必要があります。 --skip-brokenオプション 一時的な対応策として、--skip-brokenオプションを使用する と、依存関係の問題があるパッケージを無視して、他のパッ
ケージだけをアップデートします。 コマンド例: sudo dnf --skip-broken update ただし、これは根本的な解決策にはならず、システムの安定 性に影響を与える可能性があるため、推奨される場面は限定 的です。
ディストリビューションごとのバージョン上限 パッケージ RHEL7 RHEL8 RHEL9 kernel 3.10.x 4.18.x~5.14.x 5.14.x OpenSSL
1.0.2 1.1.1 3.x PHP 5.4(標準),7.x(RHSCL) 7.x(標準),8.x(AppStream) 8.x(標準) MySQL 5.7 8 8.x Python 2.7 3.6 3.9 Perl 5.16 5.26 5.32 Apache HTTP Server 2.4.x 2.4.x 2.4.x メジャーバージョンが複数あるパッケージ • 比較的頻繁に更新されるため複数のメジャーバージョンが存在す る • ディストリビューションのリリースバージョンによってバージョ ン制限がある • ディストリビューションごとのバージョンの上限を意識する必要 がある • 例)OpenSSL、PHP、MySQL、Python、Perlなど メジャーバージョンが一つのパッケージ • 比較的安定しているため同一のメジャーバージョンが長期間にわ たって使用される • ディストリビューションのリリースバージョンに依存せず • バージョン制限を意識する必要が少ない • 例)BIND、Postfix、Squidなど一般的なパッケージ全般
新しいバージョンのパッケージを使用する方法 サードパーティリポジトリの利用 公式リポジトリにない新しいバージョンのパッケージを提 供するサードパーティリポジトリを追加します。ただし、 互換性の問題や公式サポートが受けられなくなる可能性が あります。 コンテナの利用 Dockerなどのコンテナ技術を使用して、必要なバージョン のパッケージを含む独立した環境を構築します。ホストシ ステムに影響を与えずに新しいバージョンを使用できます
。 AppStreamの利用 RHEL8以降では、AppStreamを通じて特定のバージョンの パッケージを選択してインストールできます。複数のバー ジョンが公式にサポートされています。 ディストリビューションのアップグレード システム全体を上位のディストリビューションにアップグ レードします。最も根本的な解決策ですが、大きな変更を 伴います。
サブスクリプションの設定 システムへの登録 sudo subscription-manager register --username=<RHNユーザー名> --password=<RHNパスワード> サブスクリプションの取得 sudo subscription-manager
attach --auto リポジトリの有効化 sudo subscription-manager repos --enable=<repo_id> リポジトリの表示 sudo subscription-manager repos --list Red Hatのサブスクリプションを管理するには「Subscription Manager」コマンドを使います。これにより、Red Hatのシステムへ登録し、公式 リポジトリにアクセスしてセキュリティパッチやソフトウェアの更新、追加パッケージのダウンロードなどが可能になります。 サブスクリプションの重要性 セキュリティパッチの入手 最新のセキュリティパッチを入手し、 システムを脆弱性から保護できます。 バグ修正の適用 既知の問題に対する修正を適用し、 システムの安定性を向上させます。 テクニカルサポートの利用 問題が発生した場合に、 Red Hatのテクニカルサポートを利用できます。 最新機能の利用 新しい機能や改善された機能を利用して、 システムのパフォーマンスを向上させます。 適切にサブスクリプションを登録することで、セキュリティパッチやバグ修正などのパッケージをダウンロードおよびインストールできるようになります。サードパ ーティリポジトリからパッケージの取得する場合は、公式リポジトリへアクセスする必要がないため、Subscription Managerの設定は必須ではありません。
まとめ パッケージ管理の基本 ディストリビューションごとにパッケージのファイル形式や 管理コマンドが異なります。RedHat系ではRPM形式のパッ ケージをrpm、yum、dnfコマンドで管理します。 パッケージとライブラリの違い パッケージは実行可能なソフトウェアで依存関係や競合関係 の考慮が必要です。ライブラリはプログラムが動作するため に必要となる再利用可能な共通機能です。 カーネルとモジュール
カーネルはOSの中核部分でリソース管理などを担います。 モジュールはカーネルの拡張機能で、機能追加を可能にします。 リポジトリの役割 リポジトリはパッケージの取得先で公式パッケージとサード パーティパッケージがあります。 適切なリポジトリの選択と設定が重要です。 バージョン制限 ディストリビューションのリリースバージョンにより利用可 能なパッケージのバージョンに上限があります。 新しいバージョンが必要な場合は適切な対応が必要です。 ネットワーク設定 ネットワークやサブスクリプトの設定に不備があると リポジトリへのアクセスが失敗します。 適切な設定が必要です。