パッケージ管理の基本アプローチ
Linuxシステムにおいてソフトウェアを導入する際、主に三つの方法が存在します。それぞれの特徴と実際の操作手順について解説します。
RPMパッケージの直接インストール
バイナリ形式のパッケージを直接操作する方法です。依存関係の解決は手動で行う必要があります。
# ApacheサーバーのRPMパッケージをインストール
rpm -Uvh httpd-2.4.6-97.el7.centos.x86_64.rpm
# インストール済みパッケージの検証
rpm -q httpd
rpm -ql httpd | grep conf
# パッケージ構成の確認
rpm -qc httpd
パッケージ名の構成要素:
httpd-2.4.6-97.el7.centos.x86_64.rpm において
httpd:ソフトウェア名、2.4.6:バージョン、97:リビジョン、el7:RHEL7互換、x86_64:64ビットアーキテクチャ
YUMによる依存解決インストール
リポジトリから自動的に依存関係を解決してインストールする方法です。
# ウェブサーバーソフトウェアのインストール
yum install -y httpd
# キャッシュのクリアと再構築
yum clean all && yum makecache fast
# インストールプロセスの内部フロー
1. /etc/yum.repos.d/ からリポジトリ定義を取得
2. 指定リポジトリからメタデータをダウンロード
3. 依存関係を自動解決
4. /var/cache/yum にパッケージをキャッシュ
5. キャッシュから実インストール実行
ローカルリポジトリの構築
ネットワーク接続なしでソフトウェアを配布するための環境構築手順です。
単一サーバー環境の構築
# 必要ツールのインストール
yum install -y createrepo
# リポジトリディレクトリの作成
mkdir -p /srv/repo/{Packages,repodata}
# パッケージの配置とメタデータ生成
cp *.rpm /srv/repo/Packages/
createrepo --update /srv/repo
# カスタムリポジトリの登録
cat > /etc/yum.repos.d/local.repo <<EOF
[internal-repo]
name=Internal Package Repository
baseurl=file:///srv/repo
enabled=1
gpgcheck=0
EOF
# キャッシュの再構築
yum makecache
ネットワーク共有リポジトリの構築
# Nginxによる公開設定
yum install -y nginx
sed -i 's|root /usr/share/nginx/html|root /srv/repo|' /etc/nginx/nginx.conf
echo "autoindex on;" >> /etc/nginx/nginx.conf
# リポジトリの公開とサービス起動
systemctl enable --now nginx
# クライアント側の設定
cat > /etc/yum.repos.d/network.repo <<EOF
[network-repo]
name=Network Package Repository
baseurl=http://192.168.10.100
enabled=1
gpgcheck=0
EOF
yum makecache
セキュリティ設定の最適化
システムセキュリティとファイアウォール設定の調整方法です。
# SELinuxの無効化(永続的)
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce 0
# Firewalldの無効化
systemctl disable --now firewalld
# 必要な場合のポート開放例
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
ロケール設定の調整
日本語環境での文字化け対策です。
# システム全体のロケール設定
echo "LANG=ja_JP.UTF-8" > /etc/locale.conf
source /etc/locale.conf
# 個別セッションの設定例
export LC_ALL=ja_JP.UTF-8
export LANG=ja_JP.UTF-8
# 利用可能なロケールの確認
localectl list-locales | grep -i jp
主要ロケール:
ja_JP.UTF-8:日本語環境(UTF-8エンコーディング)
en_US.UTF-8:英語環境(UTF-8エンコーディング)