tanish-kr's learning log

Learning output log

LPIC

2. Linuxのインストールとパッケージ管理

2.1 ハードディスクのレイアウト設計

2.1.1 Linuxインストールに必要なパーティション

  • ルートファイルシステムに割り当てるルートパーティション
  • スワップ領域

最低限上記2つのパーティションは必須 加えてさらにパーティションを分ける理由として

  • 柔軟なシステム管理を行うことが出来る
  • ディスクに障害が発生したときの被害を抑える事が出来る
  • 障害発生時にスムーズな復旧作業が出来る

/home

一般ユーザがそれぞれ利用するファイルが格納される。/homeを別にしておくとディストリビューションを変更したり、再インストールしたりする際、環境を引き継げる

/var

各種ログファイルやメールスプールなど更新頻度の高いファイルが格納される。

/usr

プログラムやライブラリ、ドキュメントを格納する

/boot

RAIDを利用する際、/bootパーティションを分けておくとよい

スワップ領域

仮想メモリ領域として利用される。スワップ領域のサイズの目安は搭載されている物理メモリの1~2倍

/(ルート)

ルートファイルシステム

2.1.2 パーティションのレイアウト設計

次の点を考慮し設計すること

  • システムの用途
  • ディスクの容量
  • バックアップの方法


2.2 ブートローダーのインストール

ストレージからOSを読み込んで気動するプログラムをブートローダーと呼ぶ

2.2.1 GRUBのインストール

GRUBの特徴

  • 多数のファイルシステムを認識可能
  • シェル機能を搭載し、コマンドによる高度な管理が可能
# grub-install /dev/sda

GRUB2の場合

# grub2-install --version
grub2-install (GRUB) 2.02~beta2

2.2.2 GRUB Legacyの設定

  • /boot/grub/menu.lst
パラメータ 説明
timeout メニューを表示している時間(秒)
default デフォルトで起動するエントリの番号
title メニューに表示されるエントリ名
root rootデバイスの指定
kernel 起動するカーネルイメージファイルと起動オプションの指定
makeactive ルートパーティションをアクティブ化
chainloader 指定されたセクタの読み込みと実行
hiddenmenu 起動時に選択メニューを表示しない

2.2.3 GRUB2の設定

設定ファイルは/boot/grub/grub.cfgだが、直接編集しなくても、/etc/default/grubで設定し、grub-mkconfigコマンドで変更が反映される

/etc/default/grubの主なパラメータ

パラメータ 説明
GRUB_TIMEOUT 起動メニューがタイムアウトするまでの秒数
GRUB_DEFAULT 起動メニューがタイムアウトしたときにデフォルトOSとして選択されるエントリ
GRUB_CMDLINE_LINUX カーネルに渡されるオプション

2.2.4 ブートオプションの指定

ブートオプションを指定するには、起動時の画面でEキーを押す

パラメータ 説明
root=デバイス ルートパーティションとしてマウントするデバイス
nousb USBデバイスを使用しない
single シングルユーザモードで起動する
1 ~ 5 指定したランレベルで起動する


2.3 共有ライブラリ管理

  • 静的ライブラリ : プログラムの作成時にその実行ファイル内に組み込まれるライブラリ
  • 共有ライブラリ : プログラムの実行時にロードされ、複数のプログラム間で共有されるライブラリ

2.3.1 スタティックリンクとダイナミックリンク

  • スタティックリンク(静的リンク) : コンパイル時に実行ファイルに埋め込む
  • ダイナミックリンク(動的リンク) : 実行時にライブラリの機能を呼び出す(実行時にリンク)

ダイナミックリンクによって呼び出されるライブラリ

共有ライブラリ

/libまたは/usr/libディレクトリに配置される

2.3.2 必要な共有ライブラリの確認

例) catコマンドが必要とする共有ライブラリ

$ ldd /bin/cat

/lib/usr/lib以外からライブラリを検索したい

/etc/ld.so.confに記述する 実際にはバイナリのキャッシュファイルである/etc/ld.so.cacheが参照される

ldconfigコマンドは、/etc/ld.so.confファイルに基づいて/etc/ld.so.cacheを再構築する

# ldconfig

その他のディレクトリも検索対象に加えたい場合

環境変数LD_LIBRARY_PATHにディレクトリリストを記述する


2.4 Debianパッケージの管理

パッケージ : 実行プログラム、設定ファイル、ドキュメントなどを1つのファイルにまとめたもの

2.4.1 パッケージ管理とは

どのようなパッケージがどこにインストールされているかを管理したり、パッケージ間の競合を回避したりする仕組みを提供するのがパッケージ管理システムである

あるパッケージが別のパッケージに依存しているというような関係を、パッケージの依存関係という

  • Debian形式 : Debian系、Ubuntu等
  • RPM形式 : Red Hat系、CentOS等

alienコマンドを使って相互に形式を変換することもできる

2.4.2 dpkgコマンドを用いたパッケージ管理

dpkg : Debian系でのパッケージ管理を行うコマンド

# dpkg [オプション] アクション
  • dpkgコマンドの主なオプションとアクション
オプション/アクション 説明
-E すでに同じバージョンがインストールされている場合、インストールしない
-G すでに新バージョンがインストールされている場合、インストールしない
-R(–recursive) ディレクトリ内を再帰的に処理する
-i(–install) パッケージ名 パッケージをインストールする
-r(–remove) パッケージ名 設定ファイルを残してパッケージをアンインストールする
-P(–purge) パッケージ名 設定ファイルも含め完全にパッケージをアンインストールする
-l(–list) 検索パターン インストール済みパッケージを検索して表示する
-S(–search) ファイル名検索パターン 指定したファイルがどのパッケージからインストールされたかを表示する(パターンにはワイルドカード使用可能)
-L(–listfiles) パッケージ名 指定パッケージからインストールされたファイルを一覧表示する
-s(–status) パッケージ名 パッケージの情報を表示する
–configure パッケージ名 展開されたパッケージを構成する
–unpack パッケージ名 パッケージを展開する(インストールはしない)

2.4.3 apt-getコマンド

(Advanced Packaging Tool) 依存関係を調整しながら、パッケージのインストール等を行う

  • apt-getコマンドの主なオプションとサブコマンド
オプション/サブコマンド 説明
-d ファイルをダウンロードする(インストールはしない)
-s システムを変更せず動作をシュミレートする
clean 過去に取得し保持していたパッケージファイルを削除する
dist-upgrade システムを最新にアップグレードする
install パッケージをインストールまたはアップグレードする
remove パッケージをアンインストールする
update パッケージデータベースを更新する
upgrade システムの全パッケージのうち、他のパッケージを削除しないものを、アップグレードする

2.4.4 apt-cacheコマンド

パッケージ情報を照会・検索ができる

  • 主なサブコマンド
サブコマンド 説明
search キーワード 指定したキーワードを含むパッケージを検索する
show パッケージ名 パッケージについての詳細情報を表示する
showpkg パッケージ名 パッケージについての情報を表示する
depends パッケージ名 指定したパッケージの依存関係情報を表示する

2.4.5 aptitudeコマンド

apt-getより高度な機能を持っており、正規表現を使った検索機能が優れている

  • 主なサブコマンド
サブコマンド 説明
update パッケージデータベースを更新する
show パッケージ名 パッケージ情報を表示する
search パターン 指定したパターンでパッケージを検索する
install パッケージ名 パッケージをインストールまたはアップグレードする
remove パッケージ名 設定ファイルを残してパッケージをアンインストールする
purge パッケージ名 設定ファイルも含めてパッケージをアンインストールする
download パッケージ名 パッケージファイルをダウンロードする
full-upgrade システムの全てのパッケージを最新にアップデートする
safe-upgrade システムの全パッケージのうち、他のパッケージを削除しないものをアップグレードする
  • 主な検索パターン
検索パターン 説明
~n 正規表現 パッケージ名が正規表現パターンにマッチするパッケージを検索する
~d 正規表現 パッケージの説明が正規表現パターンにマッチするパッケージを検索する
~V 正規表現 パッケージのバージョンが正規表現パターンにマッチするパッケージを検索する
~i インストール済みのパッケージを検索する
~U 更新可能なパッケージを検索する
~M 自動的にインストールされたパッケージを検索する


2.5 RPMパッケージの管理

2.5.1 RPMパッケージ

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

2.5.2 rpmコマンド

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

-iオプションを使用する

# rpm -ivh <パッケージ名>
  • -v: 詳細情報を表示する
  • -h: 進行状況を#で表示する

パッケージのアップグレード

  • -U: アップグレードに加え、無ければインストールする
  • -F: アップグレードのみ行う
# rpm -Fvh <パッケージ名>

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

-eオプションを使用する

# rpm -e <パッケージ名>
  • --nodeps: 依存関係を無視する

パッケージ情報の照会

-qオブションを使用する

例) パッケージ名にvimが含まれるもの

$ rpm -qa | grep vim

例) bashの情報

$ rpm -qi bash

例) /bin/bashは何のパッケージからインストールされたか

$ rpm -qf /bin/bash

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

$ rpm -qlp <パッケージ名>

パッケージの依存関係を調べる

$ rpm -qR less

2.5.3 YUM

Red Hat系LinuxでAPTに相当するパッケージ管理システム

YUMの設定は/etc/yum.conf/etc/yum.repos.dディレクトリ以下のファイルで行う

アップデート

  • アップデート対象のパッケージリストを表示する
# yum check-update
  • インストールされているパッケージをアップデートする
# yum update
  • パッケージを指定したアップデート

例) opensslをアップデート

# yum update openssl

インストール

# yum install <パッケージ名>

アンインストール

# yum remove <パッケージ名>

パッケージ情報の確認

  • パッケージ名を指定して個別に情報の確認
# yum info <パッケージ名>
  • リポジトリにある全パッケージ情報を確認
# yum list
  • パッケージ情報の検索
# yum search <キーワード>

パッケージグループ単位のインストール

  • 利用可能なパッケージリスト確認
$ yum grouplist
  • グループインストール
# yum groupinstall "グループ名"

パッケージファイルのダウンロード

$ yumdownloader <パッケージ名>