DVD-ROM からパッケージ追加
〜 CentOS7 版 〜
2021-03-09 作成 福島
TOP > tips > pkgadd-afterinstall
CentOS のインストールが終わって、『さあこれから設定だ』と思ったら、必要なパッケージが不足していた。
しかし、設定前なのでインターネットから追加できない。どうしよう。

慣れていないディストリビューションをインストールするとき等、そんなこともあると思いますが、
目的のパッケージが DVD-ROM (CD-ROM) にあるなら、そこから追加インストールをすることができます。
(というか、どうして CentOS7 は GUI デスクトップと Web サーバが排他なの?)

1. ドライブにインストールメディアが入っているか確認
$ lsblk -f
CentOS7 で「ベーシック Web サーバー」をインストールした直後のブロックデバイスの様子。
DVD-ROM っぽいメディアが無い。
NAME            FSTYPE      LABEL           UUID                                   MOUNTPOINT
sda
┣sda1          xfs                         b5d21871-401d-4d33-99e9-bbe6d4ce6330   /boot
┗sda2          LVM2_member                 e4E4uH-iej4-lxlg-k5b7-itnA-fSv8-PwEtGS
  ┣centos-root xfs                         63c43823-44c5-4f64-b59b-3c886c936a81   /
  ┗centos-swap swap                        0eab182d-9eea-4e11-ab70-bea778e1c8aa   [SWAP]
sr0
先頭の /dev/ が省略されて表示される。sda は /dev/sda の意味。
$ lsblk -f
DVD-ROM をドライブに入れて再度確認。
/dev/sr0 に認識された。
NAME            FSTYPE      LABEL           UUID                                   MOUNTPOINT
sda
┣sda1          xfs                         b5d21871-401d-4d33-99e9-bbe6d4ce6330   /boot
┗sda2          LVM2_member                 e4E4uH-iej4-lxlg-k5b7-itnA-fSv8-PwEtGS
  ┣centos-root xfs                         63c43823-44c5-4f64-b59b-3c886c936a81   /
  ┗centos-swap swap                        0eab182d-9eea-4e11-ab70-bea778e1c8aa   [SWAP]
sr0             iso9660     CentOS 7 x86_64 2020-11-04-11-36-43-00     # ← これ

2. DVD-ROM をマウント
もしもシンボリックリンクがあるなら、それを指定したい。(なければ /dev/sr0 のまま)
$ ls -l /dev/ | grep sr0
lrwxrwxrwx. 1 root root           3  3月  9 17:33 cdrom -> sr0      # ← あった
brw-rw----+ 1 root cdrom    11,   0  3月  9 17:33 sr0
$ su
# mkdir -p /media/cdrom
# mount -r /dev/cdrom /media/cdrom # ← (A) 後述
# lsblk -f
/media/cdrom にマウントできた。
NAME            FSTYPE      LABEL           UUID                                   MOUNTPOINT
sda
┣sda1          xfs                         b5d21871-401d-4d33-99e9-bbe6d4ce6330   /boot
┗sda2          LVM2_member                 e4E4uH-iej4-lxlg-k5b7-itnA-fSv8-PwEtGS
  ┣centos-root xfs                         63c43823-44c5-4f64-b59b-3c886c936a81   /
  ┗centos-swap swap                        0eab182d-9eea-4e11-ab70-bea778e1c8aa   [SWAP]
sr0             iso9660     CentOS 7 x86_64 2020-11-04-11-36-43-00                 /media/cdrom

3. パッケージを追加インストール
CD-ROM のリポジトリ定義 (CentOS-Media.repo) が既にあるので、これを利用する。

# cat /etc/yum.repos.d/CentOS-Media.repo
リポジトリ名は c7-media となっている。
# (コメントなので省略)

[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
        file:///media/cdrom/
        file:///media/cdrecorder/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
# yum --disablerepo=\* --enablerepo=c7-media repoinfo
DVD-ROM がリポジトリとして認識されている。
上記 (A) では、これ (file:///media/cdrom/) に合わせた名前にしておいた。
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * c7-media:
リポジトリー ID            : c7-media
リポジトリーの名前         : CentOS-7 - Media
リポジトリーのリビジョン   : 1604489706
リポジトリー更新日         : Wed Nov  4 20:35:19 2020
リポジトリー内パッケージ数 : 4,070
リポジトリー容量           : 3.8 G
リポジトリー基準 URL       : file:///media/CentOS/, file:///media/cdrom/, file:///media/cdrecorder/
リポジトリーの期限         : 21,600 秒 (最終: Tue Mar  9 18:45:30 2021)
  Filter     : read-only:present
Repo ファイル名: /etc/yum.repos.d/CentOS-Media.repo

repolist: 4,070
まとめてインストールできるパッケージ名を表示する。
# yum --disablerepo=\* --enablerepo=c7-media grouplist
読み込んだプラグイン:fastestmirror, langpacks
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
 * c7-media:
Available Environment Groups:
   最小限のインストール
   インフラストラクチャーサーバー
   コンピュートノード
   ファイルとプリントサーバー
   ベーシック Web サーバー
   仮想化ホスト
   サーバー (GUI 使用)
   GNOME Desktop
   KDE Plasma Workspaces
   開発およびクリエイティブワークステーション
利用可能なグループ
   グラフィカル管理ツール
   コンソールインターネットツール
   システム管理
   システム管理ツール
   スマートカードサポート
   セキュリティーツール
   レガシーな UNIX 互換性
   互換性ライブラリー
   科学的サポート
   開発ツール
完了

起動直後で、まだ漢字変換が使えないときは、コピー&ペーストを使うか、
    # LANG=C yum --disablerepo=\* --enablerepo=c7-media grouplist
とすると良い。
今回は GNOME Desktop をまとめてインストールする。
# yum --disablerepo=\* --enablerepo=c7-media groupinstall 'GNOME Desktop' -y
読み込んだプラグイン:fastestmirror, langpacks
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
 * c7-media:
Warning: Group core does not have any packages to install.
Warning: Group base does not have any packages to install.
Group base does have 1 conditional packages, which may get installed.
依存性の解決をしています
--> トランザクションの確認を実行しています。

~ 長すぎるので省略 ~

  xorg-x11-xkb-utils.x86_64 0:7.7-14.el7
  yelp-libs.x86_64 2:3.28.1-1.el7
  yelp-xsl.noarch 0:3.28.0-1.el7
  zenity.x86_64 0:3.28.1-1.el7

完了しました!

groupinstall ではなく、個別にインストールする場合は、(例: telnet クライアントの場合)
    # yum --disablerepo=\* --enablerepo=c7-media list telnet
    # yum --disablerepo=\* --enablerepo=c7-media install telnet
等とする。

4. 再起動 (GNOME Desktop をインストールした場合)
今回は GNOME Desktop をインストールしたので、ランレベルを変更する。
(変更しなくても良いが、コンソールから GUI を使用するときに startx コマンドを実行する必要がある)

# ls -l /etc/systemd/system/default.target
multi-user.target (CLI のマルチユーザモード) になっている。
lrwxrwxrwx. 1 root root 37  3月  9 16:09 /etc/systemd/system/default.target -> /lib/systemd/system/multi-user.target
# ln -nfs /lib/systemd/system/graphical.target /etc/systemd/system/default.target
# ls -l /etc/systemd/system/default.target
graphical.target (GUI のマルチユーザモード) へ変更された。
lrwxrwxrwx. 1 root root 40  3月  9 19:49 /etc/systemd/system/default.target -> /lib/systemd/system/graphical.target
ここで再起動すれば、次回から GUI (GNOME Desktop) で起動する。
# shutdown -r now