2019年7月31日水曜日

Windows ServerにVMware Toolsをサイレントインストールする方法

Windows版のVMware Toolsは、昔からGUIによるインストーラが提供されており、GUIによるインストール操作が必要となっていた。

しかし、仮想マシンの台数が増えるとGUIで操作するのは手間となるので、サイレントインストールする手順を調べてみた。

VMware Toolsサイレントインストール手順

結論から言うと以下をコマンドプロンプトまたはPowerShellで実行すればよい。

PS C:\> D:\setup.exe /S /v "/qn"

なお、VMwareのKBなどでは、/vオプションの後の""はスペースなしで実行しているが、なぜかPowerShellでは実行できない(GUIのウィザードが表示される)。上記で示したコマンドのように、/vオプションの後にスペースを入れれば、コマンドプロンプトでもPowerShellでも、どちらでも問題なく実行できるようだ。

実際に試してみよう。

DドライブにVMware Toolsのメディアがマウントされた状態となる。

PowerShellを「管理者として実行」で開く。


先ほどのコマンドを実行してインストールを開始する。タスクマネージャーを開くと、「VMware installation launcher」などが実行されていることがわかる。


インストール終了後、自動でOSが再起動される。


OS再起動後、問題なければESXiにてVMware Toolsがインストール済み状態となる。


なお、インストール後に自動再起動を抑制したい場合は、以下コマンドを実行すればよい。
PS C:\> D:\setup.exe /S /v "/qn REBOOT=ReallySuppress"

参考

Windows 仮想マシンに VMware Tools をインストールする (1018377)
https://kb.vmware.com/s/article/1018377?lang=ja

2019年7月24日水曜日

RHEL 7でpartedコマンドを使って、2TB以上のディスクをLVMとして使えるようにする

RHEL 7で2TB以上のサイズのディスクを使用する場合、fdiskでパーティション作成をしようとすると、以下のようにWARNINGメッセージで怒られる。
[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x5a730435.

WARNING: The size of this disk is 3.2 TB (3221225472000 bytes).
DOS partition table format can not be used on drives for volumes
larger than (2199023255040 bytes) for 512-byte sectors. Use parted(1) and GUID
partition table format (GPT).
どうやらディスクサイズが2TB以上の場合は、DOS partition (いわゆるMBR)形式ではフォーマットできないので、partedコマンドを使ってGPT形式でフォーマットせよ、とのことらしい。

といわけで、partedコマンドでパーティション作成を実施してみよう。

環境

OSはRHEL 7.6となる。fdisk -lで確認したディスクの認識状況は以下の通り。
[root@localhost ~]# fdisk -l

Disk /dev/sda: 17.2 GB, 17179869184 bytes, 33554432 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x000b36a6

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    33554431    15727616   8e  Linux LVM

Disk /dev/sdb: 3221.2 GB, 3221225472000 bytes, 6291456000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
/dev/sdbが、3221GBほどあるので、これを「GPT形式」で「LVM」のディスクとして使えるようにする。

partedでパーティションを作成

1. パーティション作成前の状況を確認

作業前にpartedコマンドを使ってディスクの状況を確認する。操作体系はfdiskと似ており、「p」コマンドにて確認できる。
[root@localhost ~]# parted /dev/sdb
GNU Parted 3.1
/dev/sdb を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) p   ←★pで状況表示
エラー: /dev/sdb: ディスクラベルが認識できません。
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 3221GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: unknown
ディスクフラグ:

2. GPT形式に設定

mklabelでGPT形式に設定する。
(parted) mklabel gpt   ←★GPTに設定
(parted) p
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 3221GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt   ←★GPTになっている
ディスクフラグ:

番号  開始  終了  サイズ  ファイルシステム  名前  フラグ

3. パーティション作成

mkpartでパーティションを作成する。「パーティションの名前」や「ファイルシステムの種類」は空白で問題ないようだ。
ただし、設定値を誤ると「アライメントが正しくないためにパフォーマンスがでません」という警告が出る。以下に実行例を記載する。
(parted) mkpart
パーティションの名前?  []?      ←★空白でOK
ファイルシステムの種類?  [ext2]?   ←★空白でOK
開始? 0
終了? 3221G
警告: 操作の結果できるパーティションはアライメントが正しくないためにパフォーマンスがでません。
   ↑★警告が表示される
無視(I)/Ignore/取消(C)/Cancel? I
(parted) p
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 3221GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始    終了    サイズ  ファイルシステム  名前  フラグ
 1    17.4kB  3221GB  3221GB
警告を出さないようにするには、単位を「%」で指定すればよい。これでエラーなくパーティション「1」が作成された。
(parted) mkpart
パーティションの名前?  []?      ←★空白でOK
ファイルシステムの種類?  [ext2]?   ←★空白でOK
開始? 0%
終了? 100%
(parted) p
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 3221GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始    終了    サイズ  ファイルシステム  名前  フラグ
 1    1049kB  3221GB  3221GB

4. LVMに設定

パーティション番号「1」に対して、LVMを有効に設定する。
(parted) set 1 lvm on
(parted) p
モデル: VMware Virtual disk (scsi)
ディスク /dev/sdb: 3221GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始    終了    サイズ  ファイルシステム  名前  フラグ
 1    1049kB  3221GB  3221GB                          lvm
↑★フラグに「lvm」と表示されている

(parted)

5. partedを終了

これでパーティション作成は終了となる。partedを終了すると、「/etc/fstabの更新を忘れないように」と、親切に表示される。
(parted) q
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。

PV・VG・LVを作成

PV・VG・LV作成は、MBRと同様の手順で実施できる。簡単に作業結果のみ記載する。ちなみに、確認系コマンドはコマンドが短くて打ちやすかったので以下を使ってみた。
確認対象 定番コマンド 今回コマンド
PV pvdisplay pvs
VG vgdisplay vgs
LV lvdisplay lvs

1. PV作成

[root@localhost ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.
[root@localhost ~]# pvs
  PV         VG   Fmt  Attr PSize   PFree
  /dev/sda2  rhel lvm2 a--  <15.00g     0
  /dev/sdb1       lvm2 ---   <2.93t <2.93t

2. VG作成

LVMの時代はPEの個数に65536個上限の制約があり、-sオプションでPEサイズを大きく指定する必要があったようだが、現在はLVM2が使われており、PE個数の上限の心配はしなくてよい
[root@localhost ~]# vgcreate data /dev/sdb1
  Volume group "data" successfully created
[root@localhost ~]# vgs
  VG   #PV #LV #SN Attr   VSize   VFree
  data   1   0   0 wz--n-  <2.93t <2.93t
  rhel   1   2   0 wz--n- <15.00g     0

3. LV作成

[root@localhost ~]# lvcreate -n data -l 100%FREE data
  Logical volume "data" created.
[root@localhost ~]# lvs
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  data data -wi-a----- <2.93t                                                   
  root rhel -wi-ao---- 13.39g                                                   
  swap rhel -wi-ao----  1.60g                                                   

4. ファイルシステム作成

RHEL 7だったのでxfsにする。
[root@localhost ~]# mkfs.xfs /dev/data/data
meta-data=/dev/data/data         isize=512    agcount=4, agsize=196603904 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=786415616, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=383992, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

5. マウント

試しに手動でマウントしてみる。
[root@localhost ~]# mkdir /data
[root@localhost ~]# mount /dev/mapper/data-data /data
[root@localhost ~]# df -h
ファイルシス          サイズ  使用  残り 使用% マウント位置
/dev/mapper/rhel-root    14G  1.1G   13G    8% /
devtmpfs                908M     0  908M    0% /dev
tmpfs                   920M     0  920M    0% /dev/shm
tmpfs                   920M  8.9M  911M    1% /run
tmpfs                   920M     0  920M    0% /sys/fs/cgroup
/dev/sda1              1014M  146M  869M   15% /boot
tmpfs                   184M     0  184M    0% /run/user/0
/dev/mapper/data-data   3.0T   33M  3.0T    1% /data

6. OS起動時の自動マウント設定

partedコマンド終了時に親切に言われているので、/etc/fstabにマウント設定を追記しておこう。
[root@localhost ~]# cat /etc/fstab

/dev/mapper/rhel-root   /                       xfs     defaults        0 0
UUID=1b3eb24d-7d2c-4023-9d4d-933bea63cd3f /boot                   xfs     defaults        0 0
/dev/mapper/rhel-swap   swap                    swap    defaults        0 0
/dev/mapper/data-data   /data                   xfs     defaults        0 0
 ↑★追記
以上で作業は完了となる。
2019年7月17日水曜日

RHEL 7のemergency modeを体験した話

先日RHEL 7のディスクマウントの検証をしていた際に、OS再起動後、emergency modeになって正常に起動できなくなってしまった


対処した内容

rootパスワードでログインせよ、と記載されているのでrootパスワードを入力してログインしてみる。


ログインすると通常のコマンドを受け付ける状態になる。

emergency modeの冒頭のメッセージに記載されていたjournalctl -xbを素直に叩いてみる。すると、大量の起動時のログが出力されるので、ひたすらスペースキーを押して確認していくと、ログの終盤に赤字のエラーログを発見した。


メッセージは以下。
Time out waiting for device dev-mapper-rhel\x2ddata.device.
どうやらLVM2のデーモンがデバイスのタイムアウトで異常終了している模様。直前に設定した/etc/fstabがあやしいので確認してみると、デバイス名をミスっている。。。
[root@localhost ~]# cat /etc/fstab

/dev/mapper/rhel-root   /                       xfs     defaults        0 0
UUID=1b3eb24d-7d2c-4023-9d4d-933bea63cd3f /boot                   xfs     defaults        0 0
/dev/mapper/rhel-swap   swap                    swap    defaults        0 0
/dev/mapper/rhel-data   /data                   xfs     defaults        0 0
 ↑★rhel-dataではなくdata-dataが正しい
上記を修正して再起動すると、問題なく起動することができた。よかったよかった。

……と思ったのだが、fstabの記述ミスはともかく、障害等でディスクが見えない状況となった場合もemergency modeになってしまい、OSが起動できなくなるという問題がある。

そこで今回は、もしマウントが失敗する場合であっても、該当のマウント処理をスキップしてOSを起動させる方法も調べてみた。

回避策「fstabでnofailをオプションを指定する」

emergency modeとなった原因の「/etc/fstab」は、以下構文で記載する。

<ストレージデバイス> <マウントポイント> <ファイルシステム> <マウントオプション> <dumpコマンドの対象とするか> <起動時にfsckでファイルチェックを行うか>

上記の「マウントオプション」は通常defaultsのみ指定をすることが多いが、ここにnofailオプションも追加し、nofail,defaultsを指定する。このオプションにより、OS起動時にストレージデバイスが存在しない場合でもエラーとならず、OS起動に成功する

# cat /etc/fstab
/dev/mapper/rhel-root   /                       xfs     defaults        0 0
UUID=68f1f8f7-ab56-410a-aa4c-8401fc6f7894 /boot                   xfs     defaults        0 0
/dev/mapper/rhel-swap   swap                    swap    defaults        0 0
/dev/mapper/vg_sdb1-lv_sdb1   /                 xfs     nofail,defaults 0 0 ←★nofailを指定

「/var/log/messages」にはemergency mode時と同様に、Timed out waiting for device dev-mapper-vg_sdb1\x2dlv_sdb1.device.のエラーメッセージが出力されるが、その後Startup finishedと表示されており、起動に成功していることがわかる。

# tail /var/log/messages
Aug 29 16:01:01 localhost systemd: Removed slice User Slice of root.
Aug 29 16:01:37 localhost systemd: Job dev-mapper-vg_sdb1\x2dlv_sdb1.device/start timed out.
Aug 29 16:01:37 localhost systemd: Timed out waiting for device dev-mapper-vg_sdb1\x2dlv_sdb1.device.
Aug 29 16:01:37 localhost systemd: Dependency failed for /mnt2.
Aug 29 16:01:37 localhost systemd: Job mnt2.mount/start failed with result 'dependency'.
Aug 29 16:01:37 localhost systemd: Startup finished in 498ms (kernel) + 3.065s (initrd) + 1min 30.363s (userspace) = 1min 33.927s.
Aug 29 16:01:37 localhost systemd: Job dev-mapper-vg_sdb1\x2dlv_sdb1.device/start failed with result 'timeout'.
Aug 29 16:01:49 localhost systemd: Created slice User Slice of root.
Aug 29 16:01:49 localhost systemd: Started Session 2 of user root.
Aug 29 16:01:49 localhost systemd-logind: New session 2 of user root.

上記設定をしたのち、試しに仮想ディスクを取り外した状態で仮想マシンを起動させてみたところ、問題なく起動することができた。

2019年7月3日水曜日

CentOSやRed Hat Enterprise Linuxにて、オフラインでRPMファイルからPerlをインストールする方法

CentOSやRHELなどを構築する際に、インターネットに接続できないためyumによるパッケージインストールができない場面は多い。このような場合は代替策として、OSイメージの中に保存されているRPMファイルから直接インストールするという手段を選ぶこともよくあるだろう。

依存関係の少ないパッケージなら、RPMからインストールする手順でも問題はないが、依存関係が多いパッケージは、一つ一つ依存関係を紐解きながらインストールする必要があり、非常に難儀する。

Perlがまさにそれである。

本記事では、今後、PerlをRPMからインストール際に悩まないように、コマンド一発でインストールできるよう調査した。

環境

今回確認した環境は以下の通りとなる。
# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

依存関係の調査

OSイメージを/mntにマウントする。
# mount /dev/cdrom /mnt/
mount: /dev/sr0 is write-protected, mounting read-only
# cd /mnt/Packages/

とりあえず、Perlをインストールしようとすると、大量の依存関係ではじかれる。
# rpm -ivh perl-5.16.3-293.el7.x86_64.rpm
警告: perl-5.16.3-293.el7.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID f4a80eb5: NOKEY
エラー: 依存性の欠如:
        libperl.so()(64bit) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(Carp) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(Cwd) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(Exporter) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(File::Path) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(File::Spec) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(File::Spec::Functions) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(File::Spec::Unix) は perl-4:5.16.3-293.el7.x86_64 に必要とされてい ます
        perl(File::Temp) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(Filter::Util::Call) は perl-4:5.16.3-293.el7.x86_64 に必要とされて います
        perl(Getopt::Long) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(Pod::Simple::Search) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(Pod::Simple::XHTML) は perl-4:5.16.3-293.el7.x86_64 に必要とされて います
        perl(Scalar::Util) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(Scalar::Util) >= 1.10 は perl-4:5.16.3-293.el7.x86_64 に必要とされ ています
        perl(Socket) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(Socket) >= 1.3 は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(Storable) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(Time::HiRes) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(Time::Local) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(constant) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(threads) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(threads::shared) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl-libs は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl-libs = 4:5.16.3-293.el7 は perl-4:5.16.3-293.el7.x86_64 に必要とさ れています
        perl-macros は perl-4:5.16.3-293.el7.x86_64 に必要とされています

いったん、それっぽいRPMを羅列してインストールを試みる。多少は依存関係が減ったように見えるが、新たな依存関係も生まれている。
# rpm -ivh perl-5.16.3-293.el7.x86_64.rpm \
> perl-Carp-1.26-244.el7.noarch.rpm \
> perl-Exporter-5.68-3.el7.noarch.rpm \
> perl-File-Path-2.09-2.el7.noarch.rpm \
> perl-File-Temp-0.23.01-3.el7.noarch.rpm \
> perl-Filter-1.49-3.el7.x86_64.rpm \
> perl-Getopt-Long-2.40-3.el7.noarch.rpm \
> perl-Pod-Simple-3.28-4.el7.noarch.rpm \
> perl-Scalar-List-Utils-1.27-248.el7.x86_64.rpm \
> perl-Socket-2.010-4.el7.x86_64.rpm \
> perl-Storable-2.45-3.el7.x86_64.rpm \
> perl-Time-HiRes-1.9725-3.el7.x86_64.rpm \
> perl-Time-Local-1.2300-2.el7.noarch.rpm \
> perl-constant-1.27-2.el7.noarch.rpm \
> perl-threads-1.87-4.el7.x86_64.rpm perl-threads-shared-1.43-6.el7.x86_64.rpm \
> perl-libs-5.16.3-293.el7.x86_64.rpm \
> perl-macros-5.16.3-293.el7.x86_64.rpm
警告: perl-5.16.3-293.el7.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID f4a80eb5: NOKEY
エラー: 依存性の欠如:
        perl(Cwd) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(File::Spec) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(File::Spec::Functions) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(File::Spec::Unix) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(Cwd) は perl-File-Path-2.09-2.el7.noarch に必要とされています
        perl(File::Spec) は perl-File-Path-2.09-2.el7.noarch に必要とされています
        perl(Cwd) は perl-File-Temp-0.23.01-3.el7.noarch に必要とされています
        perl(File::Spec) >= 0.8 は perl-File-Temp-0.23.01-3.el7.noarch に必要とされています
        perl(Pod::Usage) >= 1.14 は perl-Getopt-Long-2.40-3.el7.noarch に必要とされています
        perl(Text::ParseWords) は perl-Getopt-Long-2.40-3.el7.noarch に必要とされています
        perl(Cwd) は perl-Pod-Simple-1:3.28-4.el7.noarch に必要とされています
        perl(Encode) は perl-Pod-Simple-1:3.28-4.el7.noarch に必要とされています
        perl(File::Spec) は perl-Pod-Simple-1:3.28-4.el7.noarch に必要とされています
        perl(Pod::Escapes) >= 1.04 は perl-Pod-Simple-1:3.28-4.el7.noarch に必要とされています

再度それっぽいRPMを追加してインストールを試みる、という作業を何回か繰り返すと、最終的に以下状況となり、インストールするRPMがファイル名では特定できなくなり、詰んでしまった。
# rpm -ivh perl-5.16.3-293.el7.x86_64.rpm \
> perl-Carp-1.26-244.el7.noarch.rpm \
> perl-Exporter-5.68-3.el7.noarch.rpm \
> perl-File-Path-2.09-2.el7.noarch.rpm \
> perl-File-Temp-0.23.01-3.el7.noarch.rpm \
> perl-Filter-1.49-3.el7.x86_64.rpm \
> perl-Getopt-Long-2.40-3.el7.noarch.rpm \
> perl-Pod-Simple-3.28-4.el7.noarch.rpm \
> perl-Scalar-List-Utils-1.27-248.el7.x86_64.rpm \
> perl-Socket-2.010-4.el7.x86_64.rpm \
> perl-Storable-2.45-3.el7.x86_64.rpm \
> perl-Time-HiRes-1.9725-3.el7.x86_64.rpm \
> perl-Time-Local-1.2300-2.el7.noarch.rpm \
> perl-constant-1.27-2.el7.noarch.rpm \
> perl-threads-1.87-4.el7.x86_64.rpm perl-threads-shared-1.43-6.el7.x86_64.rpm \
> perl-libs-5.16.3-293.el7.x86_64.rpm \
> perl-macros-5.16.3-293.el7.x86_64.rpm \
> perl-Pod-Usage-1.63-3.el7.noarch.rpm \
> perl-Text-ParseWords-3.29-4.el7.noarch.rpm \
> perl-Encode-2.51-7.el7.x86_64.rpm \
> perl-Pod-Escapes-1.04-293.el7.noarch.rpm \
> perl-Pod-Perldoc-3.20-4.el7.noarch.rpm \
> perl-HTTP-Tiny-0.033-3.el7.noarch.rpm \
> perl-parent-0.225-244.el7.noarch.rpm
警告: perl-5.16.3-293.el7.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID f4a80eb5: NOKEY
エラー: 依存性の欠如:
        perl(Cwd) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(File::Spec) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(File::Spec::Functions) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(File::Spec::Unix) は perl-4:5.16.3-293.el7.x86_64 に必要とされています
        perl(Cwd) は perl-File-Path-2.09-2.el7.noarch に必要とされています
        perl(File::Spec) は perl-File-Path-2.09-2.el7.noarch に必要とされています
        perl(Cwd) は perl-File-Temp-0.23.01-3.el7.noarch に必要とされています
        perl(File::Spec) >= 0.8 は perl-File-Temp-0.23.01-3.el7.noarch に必要とされています
        perl(Cwd) は perl-Pod-Simple-1:3.28-4.el7.noarch に必要とされています
        perl(File::Spec) は perl-Pod-Simple-1:3.28-4.el7.noarch に必要とされています
        perl(File::Spec) >= 0.82 は perl-Pod-Usage-1.63-3.el7.noarch に必要とされています
        perl(Pod::Text) >= 3.15 は perl-Pod-Usage-1.63-3.el7.noarch に必要とされています
        perl(File::Spec::Functions) は perl-Pod-Perldoc-3.20-4.el7.noarch に必要とされています
        perl(Pod::Man) >= 2.18 は perl-Pod-Perldoc-3.20-4.el7.noarch に必要とされています
        perl(Pod::Text) は perl-Pod-Perldoc-3.20-4.el7.noarch に必要とされています
        perl(Pod::Text::Color) は perl-Pod-Perldoc-3.20-4.el7.noarch に必要とされています
        perl(Pod::Text::Termcap) は perl-Pod-Perldoc-3.20-4.el7.noarch に必要とされています

仕方がないので、1つずつ調べてみる。

perl(File::Spec::Functions)でググると、以下URLよりperl-PathToolsをインストールすればよいことがわかる。

同様にperl(Pod::Man)でググると以下が見つかる。perl-podlatorsをインストールすればよいらしい。

三度目の正直で、再度インストールを試みると、ようやく成功!
# rpm -ivh perl-5.16.3-293.el7.x86_64.rpm \
> perl-Carp-1.26-244.el7.noarch.rpm \
> perl-Exporter-5.68-3.el7.noarch.rpm \
> perl-File-Path-2.09-2.el7.noarch.rpm \
> perl-File-Temp-0.23.01-3.el7.noarch.rpm \
> perl-Filter-1.49-3.el7.x86_64.rpm \
> perl-Getopt-Long-2.40-3.el7.noarch.rpm \
> perl-Pod-Simple-3.28-4.el7.noarch.rpm \
> perl-Scalar-List-Utils-1.27-248.el7.x86_64.rpm \
> perl-Socket-2.010-4.el7.x86_64.rpm \
> perl-Storable-2.45-3.el7.x86_64.rpm \
> perl-Time-HiRes-1.9725-3.el7.x86_64.rpm \
> perl-Time-Local-1.2300-2.el7.noarch.rpm \
> perl-constant-1.27-2.el7.noarch.rpm \
> perl-threads-1.87-4.el7.x86_64.rpm perl-threads-shared-1.43-6.el7.x86_64.rpm \
> perl-libs-5.16.3-293.el7.x86_64.rpm \
> perl-macros-5.16.3-293.el7.x86_64.rpm \
> perl-Pod-Usage-1.63-3.el7.noarch.rpm \
> perl-Text-ParseWords-3.29-4.el7.noarch.rpm \
> perl-Encode-2.51-7.el7.x86_64.rpm \
> perl-Pod-Escapes-1.04-293.el7.noarch.rpm \
> perl-Pod-Perldoc-3.20-4.el7.noarch.rpm \
> perl-HTTP-Tiny-0.033-3.el7.noarch.rpm \
> perl-parent-0.225-244.el7.noarch.rpm \
> perl-PathTools-3.40-5.el7.x86_64.rpm \
> perl-podlators-2.5.1-3.el7.noarch.rpm
警告: perl-5.16.3-293.el7.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID f4a80eb5: NOKEY
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:perl-HTTP-Tiny-0.033-3.el7       ################################# [  4%]
   2:perl-parent-1:0.225-244.el7      ################################# [  7%]
   3:perl-Pod-Perldoc-3.20-4.el7      ################################# [ 11%]
   4:perl-podlators-2.5.1-3.el7       ################################# [ 15%]
   5:perl-Text-ParseWords-3.29-4.el7  ################################# [ 19%]
   6:perl-Pod-Escapes-1:1.04-293.el7  ################################# [ 22%]
   7:perl-Encode-2.51-7.el7           ################################# [ 26%]
   8:perl-Pod-Usage-1.63-3.el7        ################################# [ 30%]
   9:perl-Carp-1.26-244.el7           ################################# [ 33%]
  10:perl-Exporter-5.68-3.el7         ################################# [ 37%]
  11:perl-Filter-1.49-3.el7           ################################# [ 41%]
  12:perl-Scalar-List-Utils-1.27-248.e################################# [ 44%]
  13:perl-Socket-2.010-4.el7          ################################# [ 48%]
  14:perl-Storable-2.45-3.el7         ################################# [ 52%]
  15:perl-Time-HiRes-4:1.9725-3.el7   ################################# [ 56%]
  16:perl-Time-Local-1.2300-2.el7     ################################# [ 59%]
  17:perl-constant-1.27-2.el7         ################################# [ 63%]
  18:perl-threads-1.87-4.el7          ################################# [ 67%]
  19:perl-threads-shared-1.43-6.el7   ################################# [ 70%]
  20:perl-libs-4:5.16.3-293.el7       ################################# [ 74%]
  21:perl-macros-4:5.16.3-293.el7     ################################# [ 78%]
  22:perl-File-Path-2.09-2.el7        ################################# [ 81%]
  23:perl-File-Temp-0.23.01-3.el7     ################################# [ 85%]
  24:perl-PathTools-3.40-5.el7        ################################# [ 89%]
  25:perl-Pod-Simple-1:3.28-4.el7     ################################# [ 93%]
  26:perl-Getopt-Long-2.40-3.el7      ################################# [ 96%]
  27:perl-4:5.16.3-293.el7            ################################# [100%]

コマンドまとめ

上記調査結果をもとに、汎用的に使えるようコマンドを綺麗にすると以下のようになる。
rpms=""
rpms="$rpms $(ls | grep -e '^perl-[0-9]\+.*')"
rpms="$rpms $(ls | grep -e 'perl-Carp-[0-9]\+.*')"
rpms="$rpms $(ls perl-Exporter-*)"
rpms="$rpms $(ls perl-File-Path-*)"
rpms="$rpms $(ls perl-File-Temp-*)"
rpms="$rpms $(ls perl-Filter-*)"
rpms="$rpms $(ls perl-Getopt-Long-*)"
rpms="$rpms $(ls perl-Pod-Simple-*)"
rpms="$rpms $(ls perl-Scalar-List-Utils-*)"
rpms="$rpms $(ls perl-Socket-*)"
rpms="$rpms $(ls perl-Storable-*)"
rpms="$rpms $(ls perl-Time-HiRes-*)"
rpms="$rpms $(ls perl-Time-Local-*)"
rpms="$rpms $(ls perl-constant-*)"
rpms="$rpms $(ls perl-threads-*)"
rpms="$rpms $(ls perl-libs-* | grep -v i686)"
rpms="$rpms $(ls perl-macros-*)"
rpms="$rpms $(ls perl-Pod-Usage-*)"
rpms="$rpms $(ls perl-Text-ParseWords-*)"
rpms="$rpms $(ls | grep -e 'perl-Encode-[0-9]\+.*')"
rpms="$rpms $(ls perl-Pod-Escapes-*)"
rpms="$rpms $(ls perl-Pod-Perldoc-*)"
rpms="$rpms $(ls perl-HTTP-Tiny-*)"
rpms="$rpms $(ls perl-parent-*)"
rpms="$rpms $(ls perl-PathTools*)"
rpms="$rpms $(ls perl-podlators-*)"
rpm -ivh $rpms

実行結果は以下の通り。
# rpms=""
# rpms="$rpms $(ls | grep -e '^perl-[0-9]\+.*')"
# rpms="$rpms $(ls | grep -e 'perl-Carp-[0-9]\+.*')"
# rpms="$rpms $(ls perl-Exporter-*)"
# rpms="$rpms $(ls perl-File-Path-*)"
# rpms="$rpms $(ls perl-File-Temp-*)"
# rpms="$rpms $(ls perl-Filter-*)"
# rpms="$rpms $(ls perl-Getopt-Long-*)"
# rpms="$rpms $(ls perl-Pod-Simple-*)"
# rpms="$rpms $(ls perl-Scalar-List-Utils-*)"
# rpms="$rpms $(ls perl-Socket-*)"
# rpms="$rpms $(ls perl-Storable-*)"
# rpms="$rpms $(ls perl-Time-HiRes-*)"
# rpms="$rpms $(ls perl-Time-Local-*)"
# rpms="$rpms $(ls perl-constant-*)"
# rpms="$rpms $(ls perl-threads-*)"
# rpms="$rpms $(ls perl-libs-* | grep -v i686)"
# rpms="$rpms $(ls perl-macros-*)"
# rpms="$rpms $(ls perl-Pod-Usage-*)"
# rpms="$rpms $(ls perl-Text-ParseWords-*)"
# rpms="$rpms $(ls | grep -e 'perl-Encode-[0-9]\+.*')"
# rpms="$rpms $(ls perl-Pod-Escapes-*)"
# rpms="$rpms $(ls perl-Pod-Perldoc-*)"
# rpms="$rpms $(ls perl-HTTP-Tiny-*)"
# rpms="$rpms $(ls perl-parent-*)"
# rpms="$rpms $(ls perl-PathTools*)"
# rpms="$rpms $(ls perl-podlators-*)"
# rpm -ivh $rpms
警告: perl-5.16.3-293.el7.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID f4a80eb5: NOKEY
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:perl-HTTP-Tiny-0.033-3.el7       ################################# [  4%]
   2:perl-parent-1:0.225-244.el7      ################################# [  7%]
   3:perl-Pod-Perldoc-3.20-4.el7      ################################# [ 11%]
   4:perl-podlators-2.5.1-3.el7       ################################# [ 15%]
   5:perl-Text-ParseWords-3.29-4.el7  ################################# [ 19%]
   6:perl-Pod-Escapes-1:1.04-293.el7  ################################# [ 22%]
   7:perl-Encode-2.51-7.el7           ################################# [ 26%]
   8:perl-Pod-Usage-1.63-3.el7        ################################# [ 30%]
   9:perl-Carp-1.26-244.el7           ################################# [ 33%]
  10:perl-Exporter-5.68-3.el7         ################################# [ 37%]
  11:perl-Filter-1.49-3.el7           ################################# [ 41%]
  12:perl-Scalar-List-Utils-1.27-248.e################################# [ 44%]
  13:perl-Socket-2.010-4.el7          ################################# [ 48%]
  14:perl-Storable-2.45-3.el7         ################################# [ 52%]
  15:perl-Time-HiRes-4:1.9725-3.el7   ################################# [ 56%]
  16:perl-Time-Local-1.2300-2.el7     ################################# [ 59%]
  17:perl-constant-1.27-2.el7         ################################# [ 63%]
  18:perl-threads-1.87-4.el7          ################################# [ 67%]
  19:perl-threads-shared-1.43-6.el7   ################################# [ 70%]
  20:perl-libs-4:5.16.3-293.el7       ################################# [ 74%]
  21:perl-macros-4:5.16.3-293.el7     ################################# [ 78%]
  22:perl-File-Path-2.09-2.el7        ################################# [ 81%]
  23:perl-File-Temp-0.23.01-3.el7     ################################# [ 85%]
  24:perl-PathTools-3.40-5.el7        ################################# [ 89%]
  25:perl-Pod-Simple-1:3.28-4.el7     ################################# [ 93%]
  26:perl-Getopt-Long-2.40-3.el7      ################################# [ 96%]
  27:perl-4:5.16.3-293.el7            ################################# [100%]

人気の投稿