101−2インストールとパッケージ管理

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

 LVM (Logical Volume Manager)

  ・物理的な記憶デバイスの領域を複数まとめて大きな仮想的な領域とする仮想的なパーティション領域を作成
  ・従来の物理的なパーティションを用いた方法よりも柔軟に記憶領域を管理することができるようにする仕組。
     ・各論理ボリュームのサイズを後から変更可能
     ・単体のハードディスクの容量を超えるサイズの論理ボリュームの製作が可能
     ・後から新たな物理ボリュームを追加してボリュームグループ全体のサイズを増やす事が可能
     ・不要な特定の物理ボリュームだけをボリュームグループから削除が可能。
  ・スナップショット
     LVへの変更前の情報を保持する機能
     バックアップの対象をスナップショットにすることで運用を停止することなく安全にバックアップする。

 物理ボリューム (PV:Physical Volume)

  ・物理的なハードディスクやパーティション
  ・pvcreateコマンドを使用して作成

 ボリュームグループ (VG:Volume Group)

  ・物理ボリュームを集めて作る、仮想的な領域(仮想的なハードディスクのようなものだと思ってよいです)
  ・vgcreateコマンドを使用して作成

 論理ボリューム (LV:Logical Volume)

  ・ボリュームグループの一部(または全部)を使って作る、仮想的なパーティション。
  ・従来のパーティションと同じように、この論理ボリューム上にファイルシステムを作って利用可能
  ・lvcreateコマンドを使用して作成。  

   ・論理ボリューム(LV)のデバイスファイルは「/dev/VG名/LV名」となる
   ・作成した論理ボリューム(LV)を実際に使用するには
     > mkfsコマンドで、作成した論理ボリュームにファイルシステムを作成
     > mountコマンドでマウントする

 ESP(EFIシステムパーティション)

  ・UEFIを使ったシステムの領域。
  ・UEFIシステムで物理的なマシンを起動しファームウエアが読み込まれた後最初にアクセスされる領域。
  ・FATでフォーマットされブートローダや起動に必要なドライバなどが置かれている

 Linuxシステムを構築するに当たって、推奨構成として必要なパーティション

     ・ルートパーティション
     ・スワップ領域(推奨)  ー>  物理メモリの2倍程度のサイズ(目安)

 主なディレクトリのまとめ

ディレクトリ名分割適否用途
/ルートディレクトリ
/homeユーザのホームディレクトリ(頻繁に書き込み有り)
/usrユーザーが使用する各種プログラムなど(頻繁に読み込み)
起動には不要はプログラム
/varログファイルやメールなど可変ファイルを格納(頻繁に書き込み有り)
高速に書き込みできるディスクに割り当てる
/opt追加でインストールしたパッケージを格納(容量が大きくなる可能性がある)
/bootLinuxカーネルなど起動に必須のファイルを格納
/tmp一時的なファイル(再起動時に消去される)
/bin 一般ユーザー用のコマンドを格納
/sbin管理者用のコマンドを格納
/devデバイスファイル(usb,cdrom,disk等)
/etc設定ファイル
/lib共有ライブラリー(基本コマンドの実行に必要なライブラリ群)
/mediaリムーバブルメディア用マウントポイント(cdrom等のマウントポイント)
/mntハードディスク等の一時的なマウントポイント
/procカーネルやプロセス情報
/rootroot用ホームディレクトリ
/run実行時の可変データ群。再起動時に消去される
/srvHTTP、FTP 用データが置かれている。
/sysデバイスやドライバーの設定ファイルなど

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

 GRUBのインストール      

  ・ /dev/sdaのMBRにGRUBをインストール   # grub-install /dev/sda/
  ・ ブートローダはHDDのMBR(第一段階のブートローダが通常格納される場所)に格納

 GRUB の特徴

  ・ 多数のファイルシステムを認識可能。
  ・ シェル機能を搭載しコマンドによる高度か管理が可能

 GRUB Legacyの設定

  ・ 設定ファイル /boot/grub/menu.lst または /boot/grub/grub.conf
  ・ ルートパーティションを指定 : root (hdディスク番号,パーティション番号) 番号はどちらも0から
  ・ 設定ファイルで用いられるパラメータ   

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

  ・ 以下は「/boot/grub/menu.lst」の例

 GRUB2の設定

  ・ 設定ファイル /boot/grub/grub.cfg
  ・ 設定ファイルの編集:/etc/default/grub ファイル または /etc/default/grub.dディレクトリ内のファイル
             grub-mkconfig コマンドで /boot/grub/grub.cfgファイルに反映
  ・ GRUBのバージョンが1.9以降のものを「GRUB2」と呼ぶ
  ・ パーティションを指定:hdディスク番号,パーティション番号 
              ディスク番号は0、パーティション番号は1から

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

 ブートオプションの設定

  ・ 起動時の画面でEキーを押す

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

 Linuxカーネルの主な起動オプション

起動オプション説明
init=パスinitの代わりに指定コマンドを実行
root=デバイスルートパティションを設定
数字(0−6)指定したランレベルで起動する
quiet起動中のカーネルからの情報出力を抑制する

  ・ systemd.unit=rescue : systemdの動作するシステムにおいて、シングルユーザーモードで起動

その他

  ・insmod : GRUB2の設定ファイルにおいて、ロードするモジュールを指定する項目
  ・menuentry : GRUB2の設定ファイルにおいてメニューに表示するエントリ名を指定する項目
  ・set : GRUB2の設定ファイルにおいて設定項目を指定するキーワード

共有ライブラリの管理

項目説明
共有ライブラリ実行時にロードされ複数のプラグラムで共有される
静的ライブラリ実行ファイルに組み込まれる
ライブラリの場所一般:/lib または /usr/lib。 64ビット版は「/lib64」と「/usr/lib64」
/etc/ld.so.conf共有ライブラリの検索パスが記述
/etc/ld.so.cache共有ライブラリの場所を検索するために使用されるファイル
ファイルはバイナリファイルであるため「/etc/ld.so.conf」ファイルより早く検索できる
LD_LIBRARY_PATH共有ライブラリの検索パスを設定する環境変数
ldconfigコマンド共有ライブラリの検索パスが記述されている「/etc/ld.so.conf」ファイルを参照し「/etc/ld.so.cache」ファイルを更新
lddコマンド実行するときに必要となる共有ライブラリを調べる

Debianパッケージの管理
 dpkg

  ・ Debian系ディストリビューションで使用されるDebian形式のパッケージを管理するためのツール
  ・ Debian形式のパッケージファイル名の見方

  ・設定ファイルは /etc/dpkg/dpkg.cfg 
  ・コマンド dpkg[オプション]アクション

オプション説明
-E 同じバージョンがすでにインストールされている場合、インストールは行わない
-G 新バージョンがすでにインストールされている場合、インストールはしない
-R (–recursive) ディレクトリ構造を再帰的に処理する
アクション説明
-i パッケージ名
–install パッケージ名
指定したdebパッケージをインストールする
–unpack パッケージ名指定したdebパッケージを展開するが、設定は行わないGRUB2の設定ファイルに
おいてメニューに表示するエントリ名を指定する項目
–configure パッケージ名指定したdebパッケージを設定する。
パッケージ名の代わりに-aオプションもしくは
–pengingオプションをつけると、未設定なパッケージすべてを設定する
-r パッケージ名
–remove パッケージ名
指定したパッケージを設定ファイルを残して削除する
-P パッケージ名
–purge パッケージ名
指定したパッケージを設定ファイルを含め、完全に削除する
-p パッケージ名
–print-avail パッケージ名
指定したパッケージの情報を表示する
-l パターン
–list パターン
マッチした名前のパッケージを表示する。
パッケージを指定しない場合は、/var/lib/dpkg/statusになるインストール済の
情報をすべて表示する
-s パッケージ名
–status パッケージ名
指定したパッケージの状態を表示する
-L パッケージ名
–listfile パッケージ名
指定したパッケージのインストールファイル一覧を表示する
-S パターン
–search パターン
指定したパターンが属しているパッケージ名を表示する
-C
–audit
インストールが完了していないパッケージの表示

  ・ dpkg-reconfigure : インストール済みのパッケージを、インストールした時と同じように
               再設定するコマンド

APTツール

  ・ dpkgツールを拡張した、Debian系パッケージを管理するツール群
      ・ apt-cache : パッケージ情報の検索・参照などを行うコマンド
      ・ apt-get  : ネットワーク経由でパッケージを取得したり、
               パッケージのインストール・アンインストールなどを行うコマンド
      ・ apt    : apt-getコマンドとapt-cacheコマンドの機能を統合したコマンド
  ・ パッケージの取得元(リポジトリ)は /etc/apt/sources.list ファイルで設定

 apt-cache [サブコマンド]

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

 apt-get [オプション] コマンド

コマンド内容
install [package]パッケージのインストール/更新
updateパッケージリストの更新
upgradeインストールされてるパッケージの更新
dist-upgradeインストールされてるカーネルの更新(Ubuntu)
/ディストリビューションの更新(Debian)
remove [package]パッケージの削除
autoremove使ってないパッケージの削除
purge [package]パッケージの削除(設定ファイルも)
cleanアーカイブファイルの削除
autoclean使ってないパッケージのアーカイブファイルの削除

 apt [オプション] コマンド

コマンド内容
updateパッケージ一覧を更新
upgradeパッケージを更新
full-upgradeパッケージを更新
autoremove更新に伴い必要なくなったパッケージを削除
(apt実行時にこのコマンドを実行するよう表示されたら実行する)
install パッケージやdebファイルをインストール
remove {パッケージ名}パッケージを削除
remove –purge {パッケージ名}パッケージを完全削除
show {パッケージ名}パッケージの詳細情報を表示
list {パッケージ名}パッケージを検索(完全一致)
search {パッケージ名}パッケージを検索(部分一致)
autocleanキャッシュされているが、インストールはされていないdebファイルを削除
cleanキャッシュされている全てのdebファイルを削除
オプション内容
no-install-recommendsパッケージに対する「推奨」パッケージを依存パッケージとしてインストールしない
-bソースパッケージをダウンロードした後にビルドする
-dダウンロードだけを実行する。展開やインストールは行わない
-f壊れた依存関係の修復を試みる
–no-removeパッケージが削除される場合に中断する
-q進捗表示などを表示しない。
-q=[1-2]のようにレベル指定が可能
–reinstallすでにインストールされていても再インストールする
-sシミュレーションをする。変更はしない
-t指定したリリースを利用する。stable以外のbackportsやunstableから
パッケージを取得する場合に利用する
-y問い合わせに自動でyesで答える
–asuume-no問い合わせに自動でnoで答える
-uアップデートするパッケージの一覧を表示する

RPMとYUMパッケージ管理

RPM (Red Hat Package Manager)

  ・ Red Hat系のLinuxディストリビューションで使われているパッケージ管理コマンド。
  ・ RPMパッケージのファイル名  Ex.) apache-1.3.22-2.i386.rpm

apache         パッケージ名
1.3.22ソフトウェアのバージョン
2同一バージョンでのリリース番号
i386アーキテクチャ
rpm拡張子(Redhat Package Manager)

  ・コマンド rpm[オプション]

インストール/アップグレードモード
オプション説明
-i
–install パッケージファイル名
 パッケージをインストールする
-U
–upgrade パッケージファイル名
 パッケージをアップグレードするなければインストールする
-F
–freshen パッケージファイル名
 以前のバージョンがインストールされているときのみパッケージをアップグレードする
併用オプション
-v詳細な情報を表示する
-h (–hash)進行状況を「#」で表示する
–nodeps依存関係を無視してインストールする
–force既存のファイルを新しいものに置き換える
–test実際にはインストールせずにテストを実施する
アンインストールモード
オプション説明
-e
–erase パッケージ名
パッケージをアンインストール(削除)する
併用オプション
–nodeps依存関係を無視してアンインストールする
参照モード
オプション説明
-q
–query パッケージ名
 指定したパッケージがインストールされているか参照
-V
–verify パッケージ名
 パッケージを検査する
併用オプション
-a
–all
インストールされているパッケージを一覧表示する
-i
–info
パッケージの情報を表示する
—providesパッケージが提供する機能(ライブラリなど)を表示する
-R
–requires
依存しているファイル名を表示する
–changelogパッケージの更新情報を表示する
-l
–list
パッケージに含まれるファイルを表示する
-c
–configfiles
設定ファイルのみを表示する(「-l」を指定したものと見なす)
-d
–docfiles
文書ファイルのみを表示する(「-l」を指定したものと見なす)
–f ファイル名
–file ファイル名
指定したファイルがどのパッケージからインストールされた
のかを表示する(フィールドあるいはフルパスで指定)
–nomd5MD5によるファイルの改ざんを検査しない
-p
–package
パッケージ名ではなく、RPMパッケージファイルを指定して
問い合わせる

Yum(Yellowdog Updater Modified/ ヤム)

  ・ YUMツールの設定ファイルは「/etc/yum.conf」
  ・ LinuxのRedHat系ディストリビューション(CentOSやFedoraなど)で利用されるパッケージ管理
  ・ Debian系ディストリビューション(Ubuntuなど)で利用される「APT」に相当
  ・ RPMの高機能版。パッケージの自動更新機能と、依存性の解決機能を加えたパッケージ管理ツール
  ・ インターネット上ないしはメディア上のパッケージ情報のデータベースを使い、依存関係を調整しながら、
    パッケージのインストール・アンインストールなどを行う
  ・ パッケージの集合であるリポジトリーと連動しており、リポジトリから未インストール
   のパッケージを検索できる

機能RPMYum
依存性の解決なしあり
自動更新なしあり
リポジトリ連携なしあり

  ・ YUMツールのリポジトリの設定
     > 各リポジトリごとの詳細設定ファイルを「/etc/yum.repos.d」ディレクトリ内に配置する
     > リポジトリの設定ファイルでは変数「$releasever」と「$basearch」を活用している
     > ネットワーク経由で、依存関係を解決しながら最新のパッケージを取得できる

  ・コマンド yum[サブコマンド]

サブコマンド説明
check-update パッケージ名アップデート対象のパッケージリストを表示する
update パッケージ名指定したパッケージをアップデートする
install パッケージ名指定したパッケージをインストールする
remove パッケージ名指定したパッケージをアンインストールする
info パッケージ名指定したパッケージの情報を表示する
list パッケージ名全パッケージ情報をリスト表示する
repolistリポジトリ一覧を表示する
search キーワードパッケージ情報をキーワードで検索する
search all キーワードパッケージをキーワードで検索する(パッケージ名及び説明文等すべて)
grouplistパッケージグループをリスト表示する
groupinstall グループ指定したグループのパッケージをインストールする

dnf(Dandified Yum)

  ・ yumの後継となるコマンドという位置付
  ・ yumと同じサブコマンド、オプションを使用可能

  ・コマンド dnf[オプション]

  オプション実行内容
check-update更新に利用できるパッケージを確認する
cleanキャッシュデータを削除する
upgrade (update)パッケージを更新する
upgrade パッケージ名指定したパッケージを更新する
install パッケージ名指定したパッケージに加え、依存関係があるパッケージもインストールする
(既にインストールされていた場合は更新する)
remove パッケージ名パッケージを依存関係のあるパッケージとともに削除する
info パッケージ名パッケージの情報を表示する
listパッケージを一覧表示する
search キーワード指定した文字列でパッケージの詳細を検索する
historyパッケージのインストールや削除の履歴を表示
updateinfo不リポジトリの更新情報を表示する

Zypper(Libzypp)

  ・ openSUSE(Slack Ware系ディストリビューション)でデフォルトで採用されているRPMパッケージ
   管理ツール
  ・ システム全体の設定は「/etc/zypp/zypper.conf」、ユーザ固有の設定は「~/.zypper.conf」に記述。

  ・コマンド dnf[オプション]

サブコマンド説明
install | in パッケージ名指定したパッケージをインストールする。
remove | rm パッケージ名指定したパッケージをアンインストールする。
info パッケージ名指定したパッケージの情報を表示する
update | upシステム全体のアップデートする。
update | up パッケージ名指定したパッケージをアップデートする。
list-updates | lu オプションアップデート対象のパッケージリストを表示する
dist-upgrade | dupディストリビューションをアップグレードする
search | se キーワードパッケージ情報をキーワードで検索
repos | lrリポジトリの一覧表示
refreshリポジトリの更新

その他

  ・ rpm2cpio
     RPM系パッケージをcpio形式のアーカイブに変換するコマンド
  ・ rpmコマンドの「-V(–verify)」オプション
     > 検査する内容ファイルのサイズ、MD5チェックサム、所有ユーザ、所有グループ、タイムスタンプ
     > RPMデータベースに格納されているファイルに関する情報と、インストールされた
      パッケージのファイルに関する情報を比較して変更(改ざんなど)が無いか検査する

仮想化のゲストOSとしてのLinux

クラウドコンピューティング

  ・ サーバ/ストレージ/アプリケーションなどのリソースをすべてクラウドに置き、
   それらのリソースをサービスとして利用するコンピューティング環境 

インスタンス(instance)

  ・ クラウド上に新しく設計された仮想サーバー 

IaaS(Infrastructure as a Service)

  ・ 別名HaaS(Hardware as a Service)
  ・ 情報システムの構築に必要な下記をインターネット上で提供するサービス
      ・仮想マシン
      ・ブロックストレージ
      ・仮想ネットワーク   
  ・ ミドルウェアやアプリケーションは管理書が必要に応じてインストールする

PaaS(Platform as a Service)

  ・ IaaSに更にミドルウェア(ソフトウエアの開発、実行環境)が提供されたサービス
  ・ すぐに開発に利用することができる

SaaS(Software as a Service)

  ・ PaaSに更にアプリケーションそのものが提供されたサービス
  ・ すぐに利用することができる

その他

  ・ 仮想化(Virtualization)
     コンピュータリソースを実際の物理的な構成にとらわれず、論理的に分割・統合して提供する技術
  ・ 仮想化環境
     ・仮想マシンのことをインスタンスと呼ぶ
     ・仮想マシンへのOSのインストールはテンプレートを利用できる
     ・ブログサービス環境などのように、ユーザの用途に応じて利用可能なコンテナを
      アプリケーションコンテナと呼ぶ
  ・ ハイパーバイザー型
     ・物理マシン上でハイパーバイザーを起動し、その上で仮想マシンとゲストOSを動作させる
     ・ハイパーバイザーがサポートしていれば、動作させるゲストOSの種類に制限はない
     ・「インスタンス」と呼ばれる仮想マシンにOSをインストールして使用
     ・OSのインストールは、あらかじめ用意されたテンプレート(OSイメージ)から行うのが一般的
     ・ソフトウェアの例:KVM、Xenなど
  ・ コンテナ型
     ・OSのリソースを「コンテナ」という単位で隔離して共有する方式。アプリケーションコンテナ
     ・オーバーヘッドが少なく、リソース・構築・管理の面がシンプル
     ・Linuxカーネルの機能によってコンテナごとのユーザ管理やリソース制限ができる
     ・ソフトウェアの例:LXC、OpenVZ、Dockerなど
  ・ 仮想マシンのクローン間で重複してはならないもの
     ・UUID
         ・ Universally Unique Identifier: 汎用一意識別子
         ・ 全世界で重複が起きないように生成される一意な値
     ・IPアドレス
     ・SSHホスト鍵
         ・ 公開鍵、秘密鍵。SSH接続時に使用
     ・マシンID
         ・ /etc/machine-idに格納。
         ・ マシンを再起動するかsystemd-machine-id-setupコマンドを実行
  ・ Cloud-init
     ・クラウドインスタンスを展開するためにインスタンスの構成やカスタマイズを行う
     ・UUID / IPアドレス / SSHホスト鍵 / マシンID等を設定
  ・ D-Bus マシンID
     ・インスタンスの識別に使用。インスタンス毎に異なる値。
     ・/etcmachine-idファイルに格納