LoginSignup
3
2

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

Last updated at Posted at 2023-08-10

パーティションとは?

用途別にストレージの中身を分割するようなイメージ。分割することで、ディスクの障害発生時に被害を最小限にしデータの圧迫を防ぐことができる。ストレージを複数のパーティションに分割することをパーティショニングという。

パーティション

データのバックアップはパーティション単位で行われる

  • 基本パーティション(物理パーティション)
    1つのハードディスクにMBRだと最大4個、GPTだと最大128個作成することができる。また、それぞれのパーティションにはファイルシステムを作成することができ、ファイルシステムを作成することで、パーティション内でファイルやディレクトリのようなデータを扱うことができるようになる。

ハードディスクのデバイスファイル名:/dev/sda
基本パーティション:/dev/sda1~/dev/sda4

  • 拡張パーティション
    基本パーティションのうち1つだけ変更したもの。その中に更に複数の論理的なパーティションを作成して利用できるパーティション。以下のように設定される
    ハードディスクのデバイスファイル名:/dev/sda
    拡張パーティション:/dev/sda5~

・SCSIとは??
ハードディスクやDVDドライブ、テープドライブなど様々な周辺機器を接続するための一般的な規格。高速性や拡張性を要求されるサーバやワークステーション環境で利用されることがある

  • 論理パーティション
    拡張パーティション内に作成されたパーティションのこと。デバイスファイル名は、作成済み基本パーティションの数に関わらず、/dev/sda5以降になる

キャプチャ5.PNG

パーティションタイプ

  • 82:Linuxスワップパーティション
  • 83:Linuxデータパーティション
  • 8e:Linux LVMパーティション

パーティション設計

Linuxをインストールする際、HDDやSSDの中身をどのように区切るかというパーティション設計を行う必要がある。設計には「どのように分割するか」だけではなく、「各パーティションに割り当てる容量」も決めなければならない。その際2つのパーティションが必要になる

  • ルートパーティション
    ルートファイルシステムに割り当てるパーティション(ルートディレクトリが格納されるパーティション)。システムが小さければ、障害時の復旧が容易になる

  • スワップ領域
    物理メモリが不足した際に仮想メモリ領域として利用するパーティションのこと。割り当てる容量の目安は物理メモリの1~2倍。

ノートPCのハイバネーション(休止状態)時にメモリ内容を保存するために使われる

パーティション 内容
/パーティション ルートディレクトリが格納される領域。/etc,/bin,/sbin,/lib,/devディレクトリは必ず配置
/bootパーティション ブートローダー関連のファイルやカーネルイメージなどシステム起動時に必要なファイルを配置する。目安は100MB程度
/homeパーティション 一般ユーザーのデータを配置する。容量が大きくなりやすく、バックアップ頻度も多いため、独立したパーティションにすることが多い
/var(variable)パーティション ログファイルなど更新頻度が高いファイルを配置する。ファイルサイズが急激に大きくなることがあるため、独立したパーティションにすることが多い
/usr(user services and routines)パーティション プログラムやライブラリ、ドキュメントなどユーザー間で共有するデータを配置する。独立したパーティションにすることが多い
/tmpパーティション 一時的に使用するデータを配置する。ユーザー間で共有する。独立したパーティションにすることが多い
/optパーティション Linuxインストール後に、追加でインストールしたパッケージ(ソフトウェア)を配置する。独立したパーティションになる
swapパーティション 実メモリに入りきらないプロセスを退避させる領域

ESP(EFI System Partition)

UEFI(Unified Extensible Firmware Interface)に遵守したシステムで必要となるパーティション。ブートローダーやカーネルイメージ、デバイスドライブなどを格納するために使用される。インストール時に自動作成される

LVM(Logical Volume Manager)

物理ボリューム(PV:物理的な記憶デバイスの領域)を、複数にまとめてボリュームグループ(VG:大きな仮想的な領域)を作成する。そこから論理ボリューム(LV;仮想的なパーティション領域)を切り出すことで、従来の物理的なパーティションを用いた方法よりも柔軟に記憶領域を管理することが出来るようにする仕組み。
利用することで容量の変更が容易になったり、バックアップがしやすくなるなどストレージを柔軟に管理できる。

  • ファイルシステムを動的に作成、削除できる

  • ファイルシステムを拡張できる

  • スナップショットが取れる

  • PV(Phisical Volume)
    pvcreateコマンドにて作成
    物理ボリュームのこと。物理的なハードディスクやパーティションを指す

  • VG(Volume Group)
    vgcreateコマンドにて作成
    物理ボリュームを集めて作る仮想的な領域(仮想的なハードディスクみたいなもの)

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

LVM

fdisk(Format Disk)コマンド

書式:fdisk [-l] デバイスファイル名
MBR形式のハードディスクに対してパーティションの作成、削除、変更および情報表示を行うことが出来るコマンド。
オプションを指定せずに実行すると、対話的な操作を通じてパーティションの作成や削除を行うことが出来る。rootユーザーのみ実行可能。

サブコマンド 説明
m サブコマンドのメニューの表示
l パーティションタイプの一覧表示
n パーティションの作成
d パーティションの削除
p パーティションテーブルの表示
t パーティションタイプ(システムID)の変更
w パーティションテーブルの変更を保存して終了
q パーティションテーブルの変更を保存せずに終了

既存のパーティションに対して、サイズを変更したり削除したりすると記録されているデータが失われる。実行する前に必ずデータのバックアップを取るようにする

gdisk(GPT fdisk)コマンド

書式:gdisk [-l] デバイスファイル名
GPT(GUIDパーティションテーブル)形式のハードディスクにおいて、パーティションの作成、削除、変更および情報表示を行うことが出来るコマンド

・GPT(GUID Partition Table)とは??
MBR(Master Boot Record)形式のパーティションテーブルにあった制約を克服している新しい方式のこと。EFI(Extensible Firmware Interface)の機能の1つ

  • 基本パーティション数:4
    MBRでは基本パーティションが4つしか作成できず、それ以上は拡張パーティションとしその中に倫理パーティションを複数作成する必要があった
    それに対して、GPTでは基本パーティションは最大128個作成可能

  • ハードディスク容量:2.2TB(2TiB)
    HDDへのアクセス最小単位はセクタとよび、1セクタのサイズは512バイト。
    MBRで指定可能なセクタ数は32ビット分で、最大容量は2.2TB(2TiB: テビバイト)だった。
    対してGPTは指定可能なセクタ数が64ビットとなり、最大容量は約9.4ZB(8ZiB: ゼビバイト)と増加した

  • 起動用システムファームウェア:BIOS
    システムファームウェアがBIOSの場合、上記のような2.2TBを超える大容量ディスクを正しく認識できない。そのためGPT形式のHDDからOSを起動する場合はシステムファームウェアがUEFI(Unified Extensible Firmware Interface)である必要がある

partedコマンド

書式:parted [-l] デバイスファイル名
MBR(マスターブートレコード)、GPTにも対応したパーティション操作が可能になる。[-l]は全てのデバイスのパーティションテーブルを表示する。以下の制約がなくなる

サブコマンド 機能
mklabel,mktable 新しいパーティションテーブルを作成する
mkpart 新しいパーティションを作成する
rm パーティションを削除する
print(:p) パーティションテーブルの情報を表示する
quit(:q) partedでの作業を終了する

「-s」オプションでサブコマンド指定で編集を行うことも可能

# parted /dev/sdb -s mklabel msdos

mkswapコマンド

書式:mkswap [オプション] [デバイスファイル名|ファイル名]
デバイス上またはファイル上に確保されたスワップ領域の初期化を行うコマンド。

オプション 説明
-c 不良ブロックのチェックを行う
-L ラベル名 ラベルを指定し、そのラベルでswaponできるようにする
-v0 古い形式のスワップ領域を初期化する
-v1 新しい形式のスワップ領域を初期化する

swaponコマンド

書式:swapon [オプション] [デバイスファイル名|ファイル名]
mkswapコマンドでスワップ領域を初期化後、有効にするコマンド

オプション 説明
-a /etc/fstab中でswapマークがついているデバイスを全て有効にする
-L ラベル名 指定されたラベルのパーティションを有効にする
-s スワップの使用状況をデバイスごとに表示する

swapoffコマンド

書式:swapoff [オプション] [デバイスファイル名|ファイル名]
指定したデバイスやファイルのスワップ領域を無効にする

パーティションの作成

partedコマンドで新しいハードディスクにパーティションを作成するには、以下の順に作業を行う

1. パーティションテーブルの指定
書式:parted mklabel [パーティションテーブル]
mklabelサブコマンドでパーティションテーブルの方式を指定する。未指定の場合はMBR形式として動作する

2. パーティションテーブルの作成
書式:parted mkpart [パーティションタイプ ファイルシステム種別 パーティション名] 開始位置 終了位置
mkpartサブコマンドでパーティションを作成する。パーティションタイプはMBR形式で指定可能で、primary(基本),extended(拡張),logical(論理)を指定する。

最後に作成されたパーティション情報を、printコマンドで確認する

# pa rted /dev/sdb
GNU Parted 3 コ
/dev/sdb を 使 用
GNU Partedへようこそ!コマンド一覧を見るには'help'と入力してください。
(parted) mklabel msdos
警告:いま存在している /dev/sdb の ディスクラベルは破壊され、このディスクの全データが失われます。続行しますか?はい( Y )/ Yes/いいえ( N ) / No? y
(parted) mkpart pr imary ext4 1 1OOOMB
(parted) print
モデル: ATA VBOX HARDDISK (scsi)
ディスク /dev/sdb : 8590MB
セクタサイズ(論理/物理) :512B/512B
パーティションテーブル:msdos
ディスクフラグ:
番号  開始   終了   サイズ  タイプ ファイルシステム フラグ
1   1049kB IOOOMB 999MB   pnmary

共有ライブラリ管理

ライブラリとはよく使われる機能を集めてひとまとめにした部品のこと。以下の種類が存在する

  • 静的ライブラリ(拡張子:.a)
    プログラムの作成時に組み込まれるライブラリ。ライブラリのコードのコピーがプログラムに組み込まれプログラムの一部になる

  • 共有ライブラリ(動的ライブラリ)(拡張子:.so)
    プログラムの作成時に組み込まれず、実行時に呼び出されるライブラリ。以下の場所に格納されることがある

共有ライブラリのパスの指定

一般的に使用される共有ライブラリは、/lib/usr/libディレクトリに格納されている。64ビット版は/lib64/usr/lib64に格納されている。

プログラムに必要な共有ライブラリは、プログラムの実行時にダイナミックリンカ(リンクを行うプログラム)がいくつかのディレクトリの中から検索を行う。検索するディレクトリの指定方法は2パターンある。

1. /etc/ld.so.confファイルに記載する
2. /etc/ld.so.conf.dディレクトリ以下に複数の設定ファイル(*.conf)を配置し、/etc/ld.so.confファイルでそれらを読み込む

ただ、実行のたびに検索するのは非効率のため、Linuxではキャッシュファイル/etc/ld.so.cacheを参照している

ldconfigコマンド

/etc/ld.so.confファイルの内容に基づいてキャッシュファイルである/etc/ld.so.cacheを更新・作成するコマンド。共有ライブラリを変更するたびに実行しなければならない

キャプチャ9.PNG

既存のライブラリのバージョンをアップしたり、新しいディレクトリを作ってその下に新しいライブラリをインストールする場合に有効

ldd(List Dynamic Dependencies)コマンド

書式:ldd プログラムの実行ファイル名
あるプログラムが必要としている共有ライブラリを確認できる。

LD_LIBRARY_PATH環境変数

あるライブラリを一時的に利用する場合などに使用可能。/lib,/usr/lib,usr/local/libへ書き込み権限のないユーザーが使用する場合や、検証目的で特定のライブラリを使用したい場合などに、ライブラリの保存ディレクトリ名を指定することが出来る。

リンク

リンクとはプログラム本体ファイルにライブラリなどの部品を結合すること。

  • スタティックリンク(静的リンク)
    プログラムを作成する(コンパイルする)時に埋め込むリンク方法。コンパイルとはプログラムをコンピュータが理解できる機械語に翻訳すること

  • ダイナミックリンク(動的リンク)
    プログラムを実行するときに呼び出すリンク方法

link

パッケージ管理

多くのディストリビューションに導入されていて、ソフトウェアの導入や削除を簡単に行うことができる。現在インストールされているソフトウェアの情報の調査、ソフトウェア間での依存関係の確認や競合の回避なども行うことが可能。

パッケージファイルにはアーキテクチャを表す文字列が含まれていたり、バイナリのほかにライブラリや設定ファイル、マニュアルなども含まれる。

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

・パッケージの依存関係とは??
あるパッケージが別のパッケージに依存しているような関係のこと。パッケージAなしではパッケージBを使うことが出来ないといった状態

・パッケージの競合関係とは??
パッケージAとパッケージCが同名のファイルをインストールし互いにぶつかり合う状態のこと

ディストリビューションの系統ごとで独自の形式を利用している。

Debianパッケージ管理

Debian GNU/LinuxやUbuntuなどのDebian系ディストリビューションで採用されている管理システム。
ライブラリやフレームワークなどのプログラムをインターネットを通じてインストールし、更新や依存関係の解決など様々な管理を行う。拡張子が.debのパッケージが使われる。

tree_1.6.0-1_i386.deb

tree:パッケージの名称
1.6.0:バージョン番号
-1:Debianリビジョン番号
i386:アーキテクチャ

dpkg(Debian Package)コマンド

書式:dpkg [オプション] アクション
最も基本的なパッケージ管理システムを行うコマンド。

オプション 内容
-E 既に同じバージョンのパッケージがインストールされている場合はインストールしない
-G 既に新しいバージョンのパッケージがインストールされている場合はインストールしない
-R(--recursive) ディレクトリ内を再帰的に処理する
アクション 内容
-i パッケージファイル名(--install) 指定したパッケージをインストール
-r パッケージ名(--remove) 設定ファイルを残して指定したパッケージをアンインストール
-P パッケージ名(--purge) 設定ファイルも含めて完全にパッケージをアンインストール
-l 検索パターン(--list) インストール済みパッケージを検索して表示
-s パッケージ名(--status) 指定したパッケージの情報を表示
-L パッケージ名(--listfiles) 指定したパッケージに含まれる全てのファイルを表示
-S ファイル名検索パターン(--search) 指定したファイルがどのパッケージからインストールされたかを表示
--configure パッケージ名 展開されたパッケージを構成する
--unpack パッケージ名 パッケージを展開する(インストールはしない)
-C(--audit)  インストールが完了していない(不完全)パッケージの表示。部分的にインストールしたパッケージを探す
#apache2パッケージをインストール
# dpkg -i apache2_2.4.29-1ubuntu4.5_amd64.deb

#apache2パッケージをアンインストール
# dpkg --purge apache2

dpkg-reconfigureコマンド

インストール済みのパッケージを再設定するコマンド。引数に指定したパッケージの初期設定スクリプトを実行する。

dselectコマンド

パッケージ管理用ユーザーインターフェースを起動するコマンド。メインメニューから利用可能パッケージのバージョンリストの更新や、インストール済み・利用可能パッケージの状況表示などを行うことが出来る。

APT(Advanced Package Tool)

Debian形式の代表的なパッケージ管理システムで、インターネット経由でパッケージをインストールでき依存関係を解決することができる。普段のパッケージ管理にはAPTを利用し、個々のパッケージの詳細を確認・管理する場合にはdpkgを利用するといったパターンが一般的。
インストールした際/etc/apt/sources.listファイルで管理される

apt-getコマンド

書式:apt-get [オプション] サブコマンド [パッケージ名など]
依存関係を解決しながらパッケージのインストール・アンインストール、更新などを行う

/etc/apt/sources.listに記述された入手リストに従い、パッケージのインストールを行っている。必要に応じてURLを追加することができ、終了後は「update」サブコマンドを実行し最新バージョンに更新する。

オプション 内容
-d ファイルをダウンロードする(インストールはしない) 
-s システムを変更せず動作をシミュレートする 
サブコマンド 内容
install 指定したパッケージをインストール。依存関係を自動的に解決してインストールを行う
upgrade 全パッケージのうち、既存パッケージの削除や新規パッケージの追加をせずに更新できるものについて、アップグレードする
dist-upgrade インストール済みの全パッケージを更新する。その際古いパッケージは削除する
update パッケージリのデータベースを最新版に更新
remove 設定ファイルを残して指定したパッケージをアンインストール
purge 設定ファイルも含めて指定したパッケージを完全にアンインストール
clean 過去に取得し保持していたパッケージファイルを削除する

apt-cacheコマンド

書式:apt-cache [オプション] サブコマンド [パッケージ名など]
パッケージ情報を検索・表示するコマンド

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

aptコマンド

書式:apt [オプション] サブコマンド [パッケージ名など]
上記2つのコマンドを統合した新しいコマンド。aptコマンドの使用が推奨されている。

オプション 内容
-c 設定ファイル 設定ファイルを指定する(デフォルトは/etc/apt/sources.list
-d パッケージのダウンロードのみ行う
-y 問い合わせに対して自動的にyesと回答する
--no-install-recommends 必須ではない推奨パッケージはインストールしない
--install-suggests 推奨パッケージもインストールする
--reinstall インストール済みパッケージの再インストールを許可する
サブコマンド 内容
install 指定したパッケージをインストール
upgrade インストール済みの全パッケージを更新する。その際パッケージの削除は行わない
full-upgrade インストール済みの全パッケージを更新する。その際古いパッケージは削除する
update パッケージリストを更新
remove 設定ファイルを残して指定したパッケージをアンインストール
purge 設定ファイルも含めて指定したパッケージを完全にアンインストール
search 指定したキーワードを含むパッケージを検索・表示
show 指定したパッケージの表示
depends 指定したパッケージの依存関係を表示

RPM(RPM Package Manager)パッケージ管理

Red Hat系ディストリビューションで採用されている管理システム。拡張子が.rpmのパッケージが使用される。

rpmコマンド

書式:rpm オプション
パッケージのインストールやアップロード、アンインストールはrootユーザーのみ行える。参照及び検査も行える。
インストールやアンインストールを行う際、パッケージ同士の依存関係に問題がある場合はエラーが発生する

rpmコマンドではオプションは必須!!
併用オプションは単独で使用不可!!

オプション 説明
-i(--install) パッケージファイル名 パッケージをインストール
-e(--erase) パッケージ名 設定したパッケージをアンインストール
-U(--upgrade) パッケージファイル名 パッケージをアップグレードする。インストール済みのパッケージがなければ新規にインストールする
-F(--freshen) パッケージのアップデートする。インストール済みのパッケージが存在しない場合何も行わない
-q(--query) パッケージ名 指定したパッケージインストールされていればバージョンを表示する
-V(--verify) パッケージ名 パッケージの検査。PRMデータベースに格納されているファイルに関する情報と、インストールされたパッケージのファイルに関する情報を比較する方法で行う。

「-V(--verify)」オプションは以下の内容を検査する

  • ファイルのサイズ
  • MD5チェックサム
  • 所有ユーザー
  • 所有グループ
  • タイムスタンプ
併用オプション 説明
-v(--verbose) 詳細情報の表示
-h(--hash) 進行状況を#で表示
--nodeps 依存関係を無視
-a(--all) インストール済みの全パッケージの表示
-l(--list) 指定したパッケージに含まれるすべてのファイルを表示する
-i(--info) 指定したパッケージの詳細情報の表示
-f(--file) 指定したファイルを含むrpmパッケージを表示
-c(--configfiles) 指定したパッケージ内の設定ファイルのみ表示
--changelog 指定したパッケージの変更履歴の表示
-p(--package) インストールされたパッケージではなく、指定したrpmパッケージファイルの情報を表示する
-R(--requires) 指定したパッケージが依存するファイルの表示。依存関係を調べる

パッケージ名とパッケージファイル名の違いに注意!!
htop⇒パッケージ名
htop-2.2.0-3.el7.x86_64.rpm⇒パッケージファイル名

rpm2cpioコマンド

rpmファイルをcpioアーカイブ形式に変換し、標準出力に出力するコマンド

Yum(Yellowdog Updater Modified)

RPM形式の代表的なパッケージ管理システムで、Debian形式におけるAPTに相当する。インターネット経由で必要なパッケージを自動的にインストールでき依存関係を解決できるという特徴も一緒。以下のファイル・ディレクトリで設定を行うことができる

  • /etc/yum.confファイル
    Yum実行時のログファイルの指定など基本設定情報が記述されている。

  • /etc/yum.repos.dディレクトリ
    Yumのリポジトリ情報(URLなど)に関する設定ファイルが格納されている。
    $releasever$basearchなどの変数を利用できる

yumコマンド

書式:yum [オプション] サブコマンド [パッケージ名など]
パッケージのインストールやアップロード、アンインストールはrootユーザーのみ行える

サブコマンド 内容
install 指定したパッケージをインストール
update インストール済みの全パッケージを更新する。パッケージの指定も可能
remove 指定したパッケージをアンインストール
search 指定したキーワードでパッケージを検索・表示
list 全パッケージのリスト表示
list installed インストール済みのrpmパッケージの詳細情報を表示する
deplist 指定したパッケージの依存関係を表示
info 指定したパッケージの詳細情報の表示
check-update インストール済みのパッケージのうち更新可能なものを表示
grouplist パッケージグループリストを表示
groupinstall 指定したグループのパッケージをインストール
# 「Emacs」パッケージグループをインストール
# yum groupinstall Emacs

・パッケージグループとは??
システムツールや特定のアプリケーションなど、共通の目的でサービス提供するパッケージの集合

yumdownloaderコマンド

書式:yumdownloader パッケージ名
個別にrpmファイルをダウンロードすることが出来る。一般ユーザー権限でも使用可能。

dnf(Dandified Yum)コマンド

Yumの後継バージョン。Fedora 22以降やCentOS 8以降で置き換えられている。サブコマンドはyumコマンドと一緒。

zypperコマンド

書式:zypper [グローバルオプション] サブコマンド [コマンドオプション] [パッケージ名など]
Slackware系ディストリビューションのopenSUSE(オープン・スーゼ)ではRPM形式によるパッケージ管理を行う。

サブコマンド 内容
install(in) 指定したパッケージをインストール
update(up) インストール済みの全パッケージを更新する。パッケージの指定も可能
remove(rm) 指定したパッケージをアンインストール
search(se) 指定したキーワードでパッケージを検索・表示
info 指定したパッケージの詳細情報の表示
list-updates(lu) 全パッケージのリスト表示
repos(lr) リポジトリの一覧表示
refresh リポジトリの更新
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2