Skip to content

102 install / Pkg#

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

  • Linuxをインストールする際、パーティションを設計する必要がある
  • 全てのディレクトリをルートパーティションに収めることも可能だが、通常はディレクトリの用途に応じて、特定のディレクトリを別のパーティションに割り当てる
  • Linuxをインストールする際、ルートパーティションから分割できないディレクトリは以下のとおり
  • /bin
  • /sbin
  • /etc
  • /lib
  • /dev
ディレクトリ 用途
/home 一般ユーザーのホームディレクトリ
/usr 起動には不要なプログラムなどを格納
/var ログファイルやメールなど可変ファイル群を格納
/opt 追加でインストールしたパッケージを格納
/boot Linuxカーネルなど起動に必須のファイルを格納
/tmp 一時ファイルを格納
/bin 一般ユーザ用のコマンドを格納
/sbin 管理者用のコマンドを格納
/etc システムの設定ファイルを格納
/lib 共有ライブラリを格納
/dev デバイスファイルを格納

Info

opt :容量が大きくなる可能性がある場合は、ルートパーティションとは別のパーティションを割り当てた方がよい

論理ボリュームを作成するまでの手順#

  1. 物理ボリューム(PV)の作成
    pvcreateコマンドを使用して作成します。

  2. ボリュームグループ(VG)の作成
    vgcreateコマンドを使用して作成します。

  3. 論理ボリューム(LV)の作成
    lvcreateコマンドを使用して作成します。

用語解説#

  • LVM
  • LVM (Logical Volume Manager) は、物理的な記憶デバイスの領域(物理ボリューム:PV)を複数にまとめてひとつの大きな仮想的な領域(ボリュームグループ:VG)とし、そこから仮想的なパーティション領域(論理ボリューム:LV)を切り出すことで、従来の物理的なパーティションを用いた方法よりも柔軟に記憶領域を管理することができるようにする仕組みのこと
  • 具体的には、各論理ボリューム(LVM を利用しない場合のパーティションに相当)のサイズを後から変更したり、単体のハードディスク(LVM では物理ボリュームと呼ぶ)の容量を超えるサイズの論理ボリュームを作ったり、後から新たな物理ボリュームを追加してボリュームグループ全体のサイズを増やしたり、不要な特定の物理ボリュームだけをボリュームグループから削除したり、といったことが可能
  • 物理ボリューム (PV:Physical Volume)
  • 物理的なハードディスクやパーティション
  • ボリュームグループ (VG:Volume Group)
  • 物理ボリュームを集めて作る、仮想的な領域(仮想的なハードディスクのようなもの)
  • 論理ボリューム (LV:Logical Volume)
  • ボリュームグループの一部(または全部)を使って作る、仮想的なパーティション。従来のパーティションと同じように、この論理ボリューム上にファイルシステムを作って利用可能
  • ESP(EFIシステムパーティション)
  • ESP(EFIシステムパーティション)はUEFIシステムにおいて、物理的なマシンを起動し、ファームウエアが読み込まれた後、その後の起動シーケンスで最初にアクセスされる領域になります。
  • ESPはFATでフォーマットされ、ブートローダなどの他、起動に必要なドライバやプログラムも置かれます。
  • UEFIシステムではブートローダは必ずしも必要ではなく、UEFIブートマネージャから直接カーネルを起動することも可能
  • RAID
  • (Linux システム上のソフトウェア)RAID で作成されるのは仮想的なひとつの論理ドライブ(RAID アレイ)のこと
  • RAID アレイを使うことで読み書きの高速化、データの安全性の確保などが可能
  • PV:LVM における物理ボリューム (Physical Volume) の略称
  • VG:LVM におけるボリュームグループ (Volume Group) の略称
  • LV:LVM における論理ボリューム (Logical Volume) の略称

ブートマネージャのインストール#

  • GRUBのバージョンが0.9x系のものを「GRUB Legacy」、1.9以降のものを「GRUB2」と呼ぶ
  • どちらのバージョンもインストールは、grub-installコマンドを利用
  • GRUBに代表されるブートローダはHDDの最初のセクタ(512バイト)にあるMBR(マスターブートレコード)に格納されている
  • MBRは使用する領域が決まっており、ブートローダは先頭の446バイトの領域に格納されている
  • ddコマンドはデータをコピーするコマンド
  • ddコマンドのbs(ブロックサイズ)オプションは一度に書き込むサイズを指定します。
  • ブートローダ部分だけに書き込みを行う際には、446を指定する必要がある
  • dd if=mbr_backup.img of=/dev/sda bs=[] count=1
  • なお、MBRにインストールされるGRUBのプログラム(stage1)のサイズは440バイトのため、MBRにあるGRUBのstage1を読み書きする場合はbs=440と指定することもできる
  • dd if=/dev/zero of=/dev/sda bs=446 count=1 (ブートローダのみがゼロクリアされる)
  • dd if=バックアップファイル of=/dev/hda bs=446 count=1 (既存のパーティションテーブルを残してMBRが復元される)
  • dd if=/dev/hda of=バックアップファイル bs=512 count=1 (MBRがバックアップされる)

GRUB Legacyの設定ファイル#

  • ブートローダであるGRUB Legacy(GRUB1)の設定ファイルは/boot/grub/menu.lst
  • ディストリビューションによっては/boot/grub/grub.conf
  • GRUB Legacyの設定ファイルでルートパーティションを指定するには、「root (hdディスク番号,パーティション番号)」と指定し、その際、番号はどちらも0から数える
  • なお、GRUB Legacy(GRUB1)は設定ファイル/boot/grub/menu.lstを変更しても、実行するコマンドはない
  • 例)
    • 1番目のディスクの1番目のパーティション → root (hd0,0)
    • 1番目のディスクの2番目のパーティション → root (hd0,1)
    • 2番目のディスクの2番目のパーティション → root (hd1,1)
  • GRUB Legacyの設定ファイルにおいてメニューに表示するエントリ名を指定する項目は title
  • GRUB Legacyの設定ファイルにおいてルートパーティションを指定する項目 root

GRUB2の設定ファイル#

  • GRUB2の設定ファイルは/boot/grub/grub.cfg
  • /boot/grub/grub.cfgファイルを直接編集することはない
  • 設定内容は/etc/default/grubaファイルおよび/etc/grub.dディレクトリ内のファイルに記述し、grub-mkconfigコマンドで設定内容を/boot/grub/grub.cfgファイルに反映させる
  • GRUB2の設定ファイルにおいて、ロードするモジュールを指定する項目はinsmod
  • GRUB2の設定ファイルにおいて、各項目の名前としてメニューに表示するエントリ名を指定する項目はmenuentry
  • GRUB2の設定ファイルにおいて設定項目を指定するキーワードはset
  • 参考:/boot/grub/grub.cfg

    root@ubuntu:/# cat /boot/grub/grub.cfg
    #
    # DO NOT EDIT THIS FILE
    #
    # It is automatically generated by grub-mkconfig using templates
    # from /etc/grub.d and settings from /etc/default/grub
    #
    
    ### BEGIN /etc/grub.d/00_header ###
    if [ -s $prefix/grubenv ]; then
      set have_grubenv=true
      load_env
    fi
    if [ "${initrdfail}" = 2 ]; then
       set initrdfail=
    elif [ "${initrdfail}" = 1 ]; then
       set next_entry="${prev_entry}"
       set prev_entry=
       save_env prev_entry
       if [ "${next_entry}" ]; then
          set initrdfail=2
       fi
    fi
    
    ... <<< snip >>> ...
    
    ### END /etc/grub.d/10_linux ###
    
    ### BEGIN /etc/grub.d/10_linux_zfs ###
    ### END /etc/grub.d/10_linux_zfs ###
    
    ### BEGIN /etc/grub.d/20_linux_xen ###
    
    ### END /etc/grub.d/20_linux_xen ###
    
    ### BEGIN /etc/grub.d/20_memtest86+ ###
    menuentry 'Memory test (memtest86+)' {
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos5'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  743075e2-ad08-48a1-bf07-27166c8f69c6
        else
          search --no-floppy --fs-uuid --set=root 743075e2-ad08-48a1-bf07-27166c8f69c6
        fi
        knetbsd /boot/memtest86+.elf
    }
    menuentry 'Memory test (memtest86+, serial console 115200)' {
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos5'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  743075e2-ad08-48a1-bf07-27166c8f69c6
        else
          search --no-floppy --fs-uuid --set=root 743075e2-ad08-48a1-bf07-27166c8f69c6
        fi
        linux16 /boot/memtest86+.bin console=ttyS0,115200n8
    }
    ### END /etc/grub.d/20_memtest86+ ###
    
    ### BEGIN /etc/grub.d/30_os-prober ###
    ### END /etc/grub.d/30_os-prober ###
    
    ### BEGIN /etc/grub.d/30_uefi-firmware ###
    ### END /etc/grub.d/30_uefi-firmware ###
    
    ### BEGIN /etc/grub.d/40_custom ###
    # This file provides an easy way to add custom menu entries.  Simply type the
    # menu entries you want to add after this comment.  Be careful not to change
    # the 'exec tail' line above.
    ### END /etc/grub.d/40_custom ###
    
    ### BEGIN /etc/grub.d/41_custom ###
    if [ -f  ${config_directory}/custom.cfg ]; then
      source ${config_directory}/custom.cfg
    elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
      source $prefix/custom.cfg;
    fi
    ### END /etc/grub.d/41_custom ###
    

  • 参考:/etc/default/grubファイル

root@ubuntu:/# cat /etc/default/grub
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX="find_preseed=/preseed.cfg auto noprompt priority=critical locale=en_US"

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
  • 参考:/etc/grub.dディレクトリ
root@ubuntu:/etc/grub.d# ls -l
total 132
-rwxr-xr-x 1 root root 10627 Jan 13  2021 00_header
-rwxr-xr-x 1 root root  6258 Jan 13  2021 05_debian_theme
-rwxr-xr-x 1 root root 18151 Aug 12 02:18 10_linux
-rwxr-xr-x 1 root root 42359 Jan 13  2021 10_linux_zfs
-rwxr-xr-x 1 root root 12894 Jan 13  2021 20_linux_xen
-rwxr-xr-x 1 root root  1992 Aug 18  2020 20_memtest86+
-rwxr-xr-x 1 root root 12059 Jan 13  2021 30_os-prober
-rwxr-xr-x 1 root root  1424 Jan 13  2021 30_uefi-firmware
-rwxr-xr-x 1 root root   214 Jan 13  2021 40_custom
-rwxr-xr-x 1 root root   216 Jan 13  2021 41_custom
-rw-r--r-- 1 root root   483 Jan 13  2021 README

root@ubuntu:/etc/grub.d#
root@ubuntu:/etc/grub.d#
root@ubuntu:/etc/grub.d# cat README 

All executable files in this directory are processed in shell expansion order.

  00_*: Reserved for 00_header.
  10_*: Native boot entries.
  20_*: Third party apps (e.g. memtest86+).

The number namespace in-between is configurable by system installer and/or
administrator.  For example, you can add an entry to boot another OS as
01_otheros, 11_otheros, etc, depending on the position you want it to occupy in
the menu; and then adjust the default setting via /etc/default/grub.

Linux カーネル#

Linuxカーネルの主な起動オプションは以下のとおりです。

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

共有ライブラリの管理#

  • ライブラリとは、汎用性の高いプログラムを再利用可能な形にしてまとめたもの
  • ライブラリそれ自体を単独で実行する事はなく、他のプログラムに組み込んで呼び出す事で、ライブラリの持つ機能を利用できるように
  • 複数のプログラムから参照して使えるようにしたものを「共有ライブラリ」という
  • なお、プログラムの実行時に共有ライブラリを呼び出すことをダイナミックリンク(動的リンク)という。
  • また、プログラムのコンパイル時にライブラリの機能を実行ファイル内に埋め込むことをスタティックリンク(静的リンク)といい、埋め込むライブラリを「静的ライブラリ」と呼ぶ。
  • 共有ライブラリを使用するプログラムは、実行時に以下の順で共有ライブラリの場所を検索
  • 環境変数LD_LIBRARY_PATH
  • 共有ライブラリの検索パスを指定するための環境変数
  • /etc/ld.so.cacheファイル
  • 共有ライブラリを検索するためのバイナリファイルです。ldconfigコマンドを使用して作成します。
  • ldconfigコマンドは共有ライブラリの検索パスが記述されている/etc/ld.so.confファイルを参照し
  • /etc/ld.so.cacheファイルを更新(作成)します。/etc/ld.so.cacheファイルはバイナリファイルであるため/etc/ld.so.confファイルより早く検索できます。
  • /lib/usr/libディレクトリ
  • 一般的に使用される共有ライブラリは、/lib/usr/libディレクトリに格納されている
  • 64ビット版は/lib64/usr/lib64に格納されている

Tip

  • 共有ライブラリを/lib/usr/libディレクトリ以外に配置する場合は、以下のいずれかの方法で共有ライブラリの検索パスを設定する必要がある
  • 環境変数LD_LIBRARY_PATHに検索パスを追加する
  • /etc/ld.so.confファイルに検索パスを追記してldconfigコマンドで/etc/ld.so.cacheファイルを更新(作成)する

ldconfig#

共有ライブラリのキャッシュファイル/etc/ld.so.cacheを更新するコマンド

Note

/etc/ld.so.cacheは共有ライブラリを検索するためのバイナリファイルです。 ldconfigコマンドは共有ライブラリの検索パスが記述されている/etc/ld.so.conf ファイルを参照し/etc/ld.so.cacheファイルを更新(作成)します。 なお、ldconfigは管理者(rootユーザ)のみが使用できるコマンドです。

ldd#

あるプログラムが必要としている共有ライブラリを表示するコマンド

  • (例)「/bin/bash」を実行するときに必要となる共有ライブラリを調べる
    ldd /bin/bash

  • 表示例:

    root@ubuntu:/# ldd /bin/bash
        linux-vdso.so.1 (0x00007ffce55ea000)
        libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007fbac67a0000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fbac679a000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fbac65a8000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fbac6910000)
    

Debianパッケージ管理#

dpkg#

  • dpkgはDebian形式のパッケージのインストール・アンインストールなど、基本的なパッケージ管理を行うコマンド
  • dpkgコマンドの書式および主なオプション・アクションは以下のとおりです。
  • dpkg [①オプション] ②アクション
①オプション 説明
-E 同じバージョンがすでにインストールされている場合、インストールは行わない
-G 新バージョンがすでにインストールされている場合、インストールはしない
-R ディレクトリ構造を再帰的に処理する
②アクション 説明
-i (--install) パッケージファイル名を指定して、パッケージをインストール
-I パッケージファイル名を指定して、インストール済みの詳細情報を表示
-r (--remove) パッケージ名を指定して、パッケージをアンインストール (設定ファイルは残す)
-P (--purge) パッケージ名を指定して、パッケージをアンインストール (設定ファイルを含めて完全に削除)
-l (--list) インストール済みパッケージを検索して表示
-L (--listfiles) パッケージ名を指定して、パッケージからインストールされたファイルを一覧表示
-s (--status) パッケージ名を指定して、インストール済みのパッケージの詳細情報の表示
-S (--search) 指定したファイルが、どのパッケージからインストールされたものかを調査
-c (--audit) パッケージファイル名を指定して、パッケージに含まれるファイルの一覧表示
-C パッケージのインストール状態を検査

dpkg-reconfigure#

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

apt-get#

  • apt-getコマンドは、APT(Advanced Packaging Tool)というパッケージ管理ツールに含まれるコマンド。
  • apt-getコマンドはアプリケーションの依存関係を調整しながらパッケージのインストール、アップグレードを行う
  • インターネットで最新パッケージを入手してインストールと依存関係の解決ができる

apt-get [①オプション] ②サブコマンド

①apt-getコマンドのオプション 説明
-d インストールせずに、ダウンロードのみ行う ( /var/cache/apt/archives に保存 )
-s システムを変更せずに、動作をシミュレートする
--purge 設定ファイルを含めて、パッケージを削除する ( removeコマンドと一緒に指定する)
②apt-getのサブコマンド 説明
clean ダウンロードしたパッケージファイルを削除する
dist-upgrade Debianのシステムを最新にアップグレードする
install 指定したパッケージをインストール、またはアップグレードする
remove 指定したパッケージをアンインストール ( 設定ファイルは残す )
update パッケージのリスト情報(データベース)を最新に更新する
upgrade システムの全パッケージを最新版にアップグレードする

apt-cache#

  • apt-cacheコマンドは、パッケージ情報の照会と検索が可能なコマンド
  • 照会や検索を行う際にそのパッケージがインストールされていなくても実行できる。
apt-cacheのサブコマンド 説明
search キーワード 指定したキーワードを含むパッケージの検索
show パッケージ名 指定したパッケージの詳細情報を表示
showpkg パッケージ名 指定したパッケージのバージョン、依存関係を表示
depends パッケージ名 指定したパッケージが依存するパッケージの一覧を表示

aptitude#

aptitudeコマンドは、apt-getやapt-cacheコマンドより高度なパッケージ管理機能を持っています。

aptitudeのサブコマンド 説明
update パッケージのリスト情報(データベース)を最新に更新
show パッケージ名 指定したパッケージの詳細情報を表示
search パターン 指定したパターンでのパッケージ検索 ( 正規表現を使用可能 )
install パッケージ名 指定したパッケージをインストールまたはアップグレード
remove パッケージ名 設定ファイルを残して、パッケージをアンインストール
purge パッケージ名 設定ファイルも含めて、パッケージをアンインストール
download パッケージ名 指定したパッケージファイルをダウンロード ( カレントディレクトリに保存 )
dist-upgrade Debianのシステム(ディストリビューション)を最新にアップデート
upgrade システムの全パッケージをアップデート

Info

aptコマンドはapt-getとapt-cacheの機能を統合したコマンド

RPMとYUMパッケージ管理#

  • RPMはRedHat社が開発したソフトウェアのパッケージ管理システム。
  • 現在はRedHat系のCentOS、Fedora等のディストリビューションにも採用されています。
  • RPM形式のパッケージファイルの見方は以下のとおり。
  • 例として紹介している以下の「nmap」というパッケージは、ポートスキャンを行うアプリケーションです。
  • nmap-5.51-2.el6.i686.rpm`
  • 【解説】区切りで順に
    • パッケージの名称
    • ソフトウェアのバージョン
    • リリース番号
    • アーキテクチャ
    • 拡張子

rpm#

構文 : rpm [ オプション ] パッケージ名

RPMコマンド - インストール/アップグレードモード#

インストール・アップグレードモード 説明
-i パッケージファイル名 指定したキーワードを含むパッケージをインストール
-U パッケージファイル名 指定したパッケージのアップグレード(存在しない場合はインストールする)
-F パッケージファイル名 指定したパッケージのアップグレード(存在しない場合はインストールしない)
-v (併用オプション) 詳細な情報を表示する
-h (併用オプション) インストールの進行状況を # で表示する
--nodeps (併用オプション) パッケージの依存関係を無視してインストール
--force (併用オプション) 既存のファイルを新しいものに置き換える
--prefix (併用オプション) パッケージをインストールするディレクトリを指定
--test (併用オプション) インストールはせずにテストを実施

RPMコマンド - アンインストールモード#

アンインストールモード 説明
-e パッケージ名 パッケージをアンインストール
--nodeps (併用オプション) 依存関係を無視してアンインストール

RPMコマンド - 照会モード#

照会モード 説明
-q パッケージ名 指定したパッケージがインストールされているか照会
-a (併用オプション) インストール済みの全てのパッケージを表示
-c (併用オプション) 設定ファイルのみを表示
-d (併用オプション) ドキュメントのみを表示
-i (併用オプション) 指定したパッケージの詳細情報を表示
-l (併用オプション) 指定したパッケージに含まれるファイルを一覧表示
-R (併用オプション) 指定したパッケージが依存しているファイルなどを表示
-f ファイル名 (併用オプション) 指定したファイルを含むパッケージ名を表示
-p パッケージファイル名 (併用オプション) 指定したパッケージファイルの情報を表示
-changelog (併用オプション) パッケージの変更履歴を表示

よく使用する -q オプションの一覧#

オプション 説明
-qa インストール済みのパッケージ一覧の表示
-ql [パッケージ名] インストール済みのパッケージに含まれるファイルの一覧表示
-qi [パッケージ名] インストール済みのパッケージの詳細情報を表示
-qlp [ファイル名] インストール前のパッケージに含まれるファイルの一覧表示
-qip [ファイル名] インストール前のパッケージの詳細情報を表示

パッケージの管理 - YUM#

  • YUM(Yellowdog Updater Modified)ツールはAPTツール同様、パッケージ間の依存関係を解決しながらダウンロード、インストール、アップデート、アンインストールすることができるツール。
  • YUMの設定は、/etc/yum.conf ファイルに記述
  • パッケージのリポジトリ情報を設定するためには、/etc/yum.conf ファイルに設定を行うか、 /etc/yum.repos.dディレクトにダウンロードサイトのURLを記載したファイルを格納する
  • /etc/yum.confファイルは基本的に変更の必要はない
  • YUMツールの設定ファイルは/etc/yum.confで、キャッシュやログの保存先などの基本設定を行います。

パッケージの管理 - DNF#

  • DNFはYUMの後継となるパッケージ管理ツール
  • dnfコマンドでは、yumコマンドとほぼ同じオプションが使用できる
  • また、リポジトリ(パッケージの取得元)もyumと同様に/etc/yum.repos.dディレクトリを使用

yum [ オプション ] サブコマンド#

オプション 説明
-y すべての質問に yes と回答する
サブコマンド 説明
check-update アップデート対象となるパッケージ一覧を表示
update パッケージ名 指定したパッケージのアップデート(パッケージ名を省略する全パッケージが対象)
install パッケージ名 指定したパッケージのインストール
remove パッケージ名 指定したパッケージのアンインストール
info パッケージ名 指定したパッケージの情報の表示
list 全パッケージ情報をリスト表示
repolist リポジトリ一覧の表示
search キーワード パッケージ情報をキーワードで検索
search all キーワード パッケージ情報をキーワードで検索(パッケージ名、説明文)
grouplist パッケージグループのリスト表示
groupinstall グループ 指定したグループのパッケージをインストール

yumdownloader#

  • パッケージファイルのダウンロードのみを行いたい場合は yumdownloaderコマンドを使用
  • yumdownloaderコマンドを使用するために事前にyum-utilsパッケージをインストールする必要がある
  • 構文: yumdownloader [ オプション ] パッケージ名
オプション 説明
--source RPMではなく、ソースファイル(SRPM)をダウンロード

Zypper#

  • ZypperはopenSUSE(SUSE Linuxから改名)が採用しているコマンドラインのパッケージ管理ツール
  • aptコマンドやyumコマンドのように、zypperコマンドでリポジトリやパッケージの操作を行えます。
  • zypper [オプション] サブコマンド
サブコマンド (略) 説明
install (in) パッケージ名 パッケージmのインストr-ル
update (up) パッケージ名 パッケージのアップデート
remove (rm) パッケージ名 パッケージのアンインスト-ル
info パッケージ名 パッケージの詳細情報の表示
searce (se) キーワード 指定したキーワードでパッケージの検索
list-updates (lu) [オプション] アップデート可能なパッケージの表示
repos (lr) リポジトリの一覧表示
refresh リポジトリの更新

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

  • 仮想化とは 仮想化(Virtualization)とは、コンピュータリソースを実際の物理的な構成にとらわれず、 論理的に分割・統合して提供する技術です。仮想化の対象となるコンピュータリソースには サーバやOS、ストレージ、ネットワークなどがあります。
  • 仮想化の種類 現在、主に以下の2つの仮想化手法が使われています。
  • ハイパーバイザー型
    物理マシン上で動作するハイパーバイザー(仮想化のための専用のOS)上で直接仮想マシンを起動し、 ゲストOS(仮想マシンにインストールしたOS)を動作させる方式です。物理マシンのハードウェアを エミュレー卜(模倣)する完全仮想化を実現できます。

    ゲストOSからは通常の物理マシン上で動作しているように見えるため、これまでのサーバにOSを インストールしているのと同様の環境を構築できます。ハイパーバイザーがサポートしている 種類のゲストOSであれば、LinuxやWindows、macOSなども使用できます。 ハイパーバイザー型の仮想化ソフトウェアには、Xenや、KVMなどがあります。

  • コンテナ型
    OSのリソースを「コンテナ」という単位で隔離して共有する方式です。 OS上のアプリケーションと同レベルの扱いですので、オーバーヘッドが少なく、リソース・構築・管理の面で非常にシンプルになります。 コンテナ型仮想化では、Linuxカーネルの機能によってコンテナごとのユーザ管理やリソース制限を行います。 コンテナ型ソフトウェアには、LXC、Dockerなどがあります。

  • クラウドコンピューティング
    クラウドコンピューティングとは、サーバ/ストレージ/アプリケーションなどのリソースをすべてクラウドに置き、 それらのリソースをサービスとして利用するコンピューティング環境です。(「クラウド」の名称は、構成図上 「どのように構築されているかはわからないが、確かにそこにあって利用可能なリソース(例:インターネット)」を 雲のアイコンで表していた事に由来します。)

  • SaaS(Software as a Service) ソフトウエアをサービスとして提供します。ユーザはインフラも開発環境も意識することなく、単純にソフトウエアを利用する、 というサービスを受けることができます。

  • PaaS(Platform as a Service) ソフトウエアの開発、実行環境をサービスとして提供します。ユーザは環境構築や保守に気を遣わずに、開発に専念できます。 また、仮想化により、規模をあらかじめ把握できなくても柔軟に増減できるメリットがあります。

  • IaaS(Infrastructure as a Service) サーバ、ストレージ、ネットワーク等、仮想化されたインフラ環境をサービスとして提供する、サーバの仮想化技術と関連が深い サービスモデルです。HaaS(Hardware as a Service)と呼ばれることもあります。 IaaSでは仮想マシンや仮想ネットワーク、ブロックストレージ(ハードディスク)などのリソースを、ユーザにサービスとして 提供しています。

    クラウドサービス側でハイパーバイザー型の仮想化環境を提供する場合、ユーザは「インスタンス」と呼ばれる仮想マシンにOSを インストールして使用します。OSのインストールは、あらかじめ用意されたテンプレート(OSイメージ)から行うのが一般的です。 クラウドサービス側でコンテナ型の仮想化環境を提供する場合、ユーザは仮想環境上で動作する「コンテナ」を利用することになります。

    また、ユーザが利用するコンテナ環境を選択できる場合もあります。このようにアプリケーションとして利用可能なコンテナは 「アプリケーションコンテナ」と呼ばれます。アプリケーションコンテナの例として、Webサーバやデータベースサーバが組み込まれた ブログサービス環境などがあります。

  • 仮想マシンの複製
    個々の仮想マシンの環境設定やハードディスクはファイルとして保存されます。それらのファイルをコピーすることで任意の仮想マシンをクローンとして複製できるため、 テンプレートとして使用したり、同様の仕様のシステム展開が容易にできるようになります。

    ただし、同一の仮想化ソフトウェア上で複製した仮想マシンのUUID (Universally Unique Identifier: 汎用一意識別子、全世界で重複が起きないように生成される一意な値)が重複していると正常に動作しませんので、注意が必要です。

    また、ホスト名やIPアドレス、SSH接続時に使用するSSHホスト鍵(公開鍵、秘密鍵)などサーバごとに一意でなければならないものも変更しなければなりません。

    上記に加えて、systemdのマシンはホストを識別するための32バイトのマシンIDを持っています。インストール時に、ランダムに生成されるUUIDがマシンIDとして 設定されます。仮想マシンを複製するとマシンIDもコピーされるので、ネットワーク内で重複しないようにクローンのマシンIDを初期化する必要があります。

    マシンIDは「/etc/machine-id」ファイルに格納されています。

    • (例)
      # cat /etc/machine-id
      d602b9b22ae94e7d871f403f2ab5eb46
      

    なお、クラウド上のインスタンスはテンプレートから展開されるため、テンプレートから複製された環境を重複しないようにインスタンスごとに変更する必要があります。 この作業をまとめて行う「cloud-init」というパッケージが用意されています。 cloud-initパッケージはクラウド上でなくても、インストールして使うことができます。

    例:CentOSの場合
    # yum install cloud-init