確かに、昔、昔(20年ほど前?!)HTMLはShift_JISで書いてたよなぁ・・・
サーバ上でShift_JISからUTF8に一括変換したくてnkfをインストールした時の記録を残しておきます。

環境
$ cat /etc/redhat-release
Rocky Linux release 8.6 (Green Obsidian)

OSDNから最新版(nkf-2.1.5.tar.gz)をダウンロードする。

# cd /usr/local/src/
# wget https://osdn.net/dl/nkf/nkf-2.1.5.tar.gz
--2022-08-04 20:23:17--  https://osdn.net/dl/nkf/nkf-2.1.5.tar.gz
osdn.net (osdn.net) をDNSに問いあわせています... 35.167.238.130, 35.167.9.219
osdn.net (osdn.net)|35.167.238.130|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: https://osdn.net/projects/nkf/downloads/70406/nkf-2.1.5.tar.gz/ [続く]
--2022-08-04 20:23:17--  https://osdn.net/projects/nkf/downloads/70406/nkf-2.1.5.tar.gz/
osdn.net:443 への接続を再利用します。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: https://osdn.net/frs/redir.php?m=rwthaachen&f=nkf%2F70406%2Fnkf-2.1.5.tar.gz [続く]
--2022-08-04 20:23:17--  https://osdn.net/frs/redir.php?m=rwthaachen&f=nkf%2F70406%2Fnkf-2.1.5.tar.gz
osdn.net:443 への接続を再利用します。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: https://ftp.halifax.rwth-aachen.de/osdn/nkf/70406/nkf-2.1.5.tar.gz [続く]
--2022-08-04 20:23:18--  https://ftp.halifax.rwth-aachen.de/osdn/nkf/70406/nkf-2.1.5.tar.gz
ftp.halifax.rwth-aachen.de (ftp.halifax.rwth-aachen.de) をDNSに問いあわせていま す... 2a00:8a60:e012:a00::21, 137.226.34.46
ftp.halifax.rwth-aachen.de (ftp.halifax.rwth-aachen.de)|2a00:8a60:e012:a00::21|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 215879 (211K) [application/octet-stream]
`nkf-2.1.5.tar.gz' に保存中

nkf-2.1.5.tar.gz    100%[===================>] 210.82K   294KB/s 時間 0.7s

2022-08-04 20:23:21 (294 KB/s) - `nkf-2.1.5.tar.gz' へ保存完了 [215879/215879]

 

解凍します。

#  tar -zxvf nkf-2.1.5.tar.gz
nkf-2.1.5/
nkf-2.1.5/nkf32.h
nkf-2.1.5/.gitignore
nkf-2.1.5/Makefile
nkf-2.1.5/nkf.1
nkf-2.1.5/INSTALL
nkf-2.1.5/man/
nkf-2.1.5/NKF.mod/
nkf-2.1.5/make_test.pl
nkf-2.1.5/utf8tbl.c
nkf-2.1.5/dll.rc
nkf-2.1.5/nkf.1j
nkf-2.1.5/nkf.h
nkf-2.1.5/MANIFEST
nkf-2.1.5/nkf.mak
nkf-2.1.5/NKF.python2/
nkf-2.1.5/.travis.yml
nkf-2.1.5/dll.def
nkf-2.1.5/Changes
nkf-2.1.5/nkf.doc
nkf-2.1.5/test.pl
nkf-2.1.5/config.h
nkf-2.1.5/nkf32dll.c
nkf-2.1.5/nkf32.c
nkf-2.1.5/nkf_utf8.txt
nkf-2.1.5/nkf_test.pl
nkf-2.1.5/INSTALL.j
nkf-2.1.5/version.rc
nkf-2.1.5/NKF.python3/
nkf-2.1.5/utf8tbl.h
nkf-2.1.5/README.md
nkf-2.1.5/nkf.c
nkf-2.1.5/NKF.python3/NKF_python.c
nkf-2.1.5/NKF.python3/setup.py
nkf-2.1.5/NKF.python3/README
nkf-2.1.5/NKF.python2/setup.py
nkf-2.1.5/NKF.python2/NKF_python.c
nkf-2.1.5/NKF.python2/README
nkf-2.1.5/NKF.mod/test.pl
nkf-2.1.5/NKF.mod/NKF.pm
nkf-2.1.5/NKF.mod/NKF.xs
nkf-2.1.5/NKF.mod/Changes
nkf-2.1.5/NKF.mod/Makefile.PL
nkf-2.1.5/NKF.mod/README
nkf-2.1.5/NKF.mod/MANIFEST
nkf-2.1.5/man/make_doc.sh
nkf-2.1.5/man/nkf.1.pm
nkf-2.1.5/man/nkf.1j.pm

 

久し振りにコンパイル(笑)
ありゃ。
# make
-bash: make: コマンドが見つかりません

yumでmakeインストールできるのかな?

# yum install make -y
メタデータの期限切れの最終確認: 0:08:38 時間前の 2022年08月04日 20時18分20秒 に 実施しました。
依存関係が解決しました。
================================================================================
 パッケージ    Arch            バージョン                 リポジトリー    サイズ
================================================================================
インストール:
 make          x86_64          1:4.2.1-11.el8             baseos          497 k

トランザクションの概要
================================================================================
インストール  1 パッケージ

ダウンロードサイズの合計: 497 k
インストール後のサイズ: 1.4 M
パッケージのダウンロード:
make-4.2.1-11.el8.x86_64.rpm                    2.6 MB/s | 497 kB     00:00
--------------------------------------------------------------------------------
合計                                            795 kB/s | 497 kB     00:00
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                        1/1
  インストール中   : make-1:4.2.1-11.el8.x86_64                             1/1
  scriptletの実行中: make-1:4.2.1-11.el8.x86_64                             1/1
  検証             : make-1:4.2.1-11.el8.x86_64                             1/1

インストール済み:
  make-1:4.2.1-11.el8.x86_64

完了しました!

 

あちゃ、gccもないらしい(汗

# yum install gcc
メタデータの期限切れの最終確認: 0:10:42 時間前の 2022年08月04日 20時18分20秒 に 実施しました。
依存関係が解決しました。
================================================================================
 パッケージ            Arch      バージョン                  リポジトリー サイズ
================================================================================
インストール:
 gcc                   x86_64    8.5.0-10.1.el8_6            appstream     23 M
依存関係のインストール:
 binutils              x86_64    2.30-113.el8                baseos       5.8 M
 cpp                   x86_64    8.5.0-10.1.el8_6            appstream     10 M
 glibc-devel           x86_64    2.28-189.5.el8_6            baseos        78 k
 glibc-headers         x86_64    2.28-189.5.el8_6            baseos       482 k
 isl                   x86_64    0.16.1-6.el8                appstream    834 k
 kernel-headers        x86_64    4.18.0-372.19.1.el8_6       baseos       9.4 M
 libmpc                x86_64    1.1.0-9.1.el8               appstream     60 k
 libpkgconf            x86_64    1.4.2-1.el8                 baseos        34 k
 libxcrypt-devel       x86_64    4.1.1-6.el8                 baseos        24 k
 pkgconf               x86_64    1.4.2-1.el8                 baseos        37 k
 pkgconf-m4            noarch    1.4.2-1.el8                 baseos        16 k
 pkgconf-pkg-config    x86_64    1.4.2-1.el8                 baseos        14 k

トランザクションの概要
================================================================================
インストール  13 パッケージ

ダウンロードサイズの合計: 51 M
インストール後のサイズ: 122 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/13): isl-0.16.1-6.el8.x86_64.rpm             1.9 MB/s | 834 kB     00:00
(2/13): libmpc-1.1.0-9.1.el8.x86_64.rpm          57 kB/s |  60 kB     00:01
(3/13): cpp-8.5.0-10.1.el8_6.x86_64.rpm         4.5 MB/s |  10 MB     00:02
(4/13): gcc-8.5.0-10.1.el8_6.x86_64.rpm         5.6 MB/s |  23 MB     00:04
(5/13): glibc-devel-2.28-189.5.el8_6.x86_64.rpm  42 kB/s |  78 kB     00:01
(6/13): glibc-headers-2.28-189.5.el8_6.x86_64.r 1.8 MB/s | 482 kB     00:00
(7/13): libpkgconf-1.4.2-1.el8.x86_64.rpm       752 kB/s |  34 kB     00:00
(8/13): libxcrypt-devel-4.1.1-6.el8.x86_64.rpm  538 kB/s |  24 kB     00:00
(9/13): pkgconf-1.4.2-1.el8.x86_64.rpm          752 kB/s |  37 kB     00:00
(10/13): pkgconf-m4-1.4.2-1.el8.noarch.rpm      337 kB/s |  16 kB     00:00
(11/13): pkgconf-pkg-config-1.4.2-1.el8.x86_64. 282 kB/s |  14 kB     00:00
(12/13): binutils-2.30-113.el8.x86_64.rpm       1.6 MB/s | 5.8 MB     00:03
(13/13): kernel-headers-4.18.0-372.19.1.el8_6.x 5.7 MB/s | 9.4 MB     00:01
--------------------------------------------------------------------------------
合計                                            7.5 MB/s |  51 MB     00:06
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                        1/1
  インストール中   : libmpc-1.1.0-9.1.el8.x86_64                           1/13
  インストール中   : cpp-8.5.0-10.1.el8_6.x86_64                           2/13
  scriptletの実行中: cpp-8.5.0-10.1.el8_6.x86_64                           2/13
  インストール中   : pkgconf-m4-1.4.2-1.el8.noarch                         3/13
  インストール中   : libpkgconf-1.4.2-1.el8.x86_64                         4/13
  インストール中   : pkgconf-1.4.2-1.el8.x86_64                            5/13
  インストール中   : pkgconf-pkg-config-1.4.2-1.el8.x86_64                 6/13
  インストール中   : kernel-headers-4.18.0-372.19.1.el8_6.x86_64           7/13
  scriptletの実行中: glibc-headers-2.28-189.5.el8_6.x86_64                 8/13
  インストール中   : glibc-headers-2.28-189.5.el8_6.x86_64                 8/13
  インストール中   : libxcrypt-devel-4.1.1-6.el8.x86_64                    9/13
  インストール中   : glibc-devel-2.28-189.5.el8_6.x86_64                  10/13
  scriptletの実行中: glibc-devel-2.28-189.5.el8_6.x86_64                  10/13
  インストール中   : binutils-2.30-113.el8.x86_64                         11/13
  scriptletの実行中: binutils-2.30-113.el8.x86_64                         11/13
  インストール中   : isl-0.16.1-6.el8.x86_64                              12/13
  scriptletの実行中: isl-0.16.1-6.el8.x86_64                              12/13
  インストール中   : gcc-8.5.0-10.1.el8_6.x86_64                          13/13
  scriptletの実行中: gcc-8.5.0-10.1.el8_6.x86_64                          13/13
  検証             : cpp-8.5.0-10.1.el8_6.x86_64                           1/13
  検証             : gcc-8.5.0-10.1.el8_6.x86_64                           2/13
  検証             : isl-0.16.1-6.el8.x86_64                               3/13
  検証             : libmpc-1.1.0-9.1.el8.x86_64                           4/13
  検証             : binutils-2.30-113.el8.x86_64                          5/13
  検証             : glibc-devel-2.28-189.5.el8_6.x86_64                   6/13
  検証             : glibc-headers-2.28-189.5.el8_6.x86_64                 7/13
  検証             : kernel-headers-4.18.0-372.19.1.el8_6.x86_64           8/13
  検証             : libpkgconf-1.4.2-1.el8.x86_64                         9/13
  検証             : libxcrypt-devel-4.1.1-6.el8.x86_64                   10/13
  検証             : pkgconf-1.4.2-1.el8.x86_64                           11/13
  検証             : pkgconf-m4-1.4.2-1.el8.noarch                        12/13
  検証             : pkgconf-pkg-config-1.4.2-1.el8.x86_64                13/13

インストール済み:
  binutils-2.30-113.el8.x86_64
  cpp-8.5.0-10.1.el8_6.x86_64
  gcc-8.5.0-10.1.el8_6.x86_64
  glibc-devel-2.28-189.5.el8_6.x86_64
  glibc-headers-2.28-189.5.el8_6.x86_64
  isl-0.16.1-6.el8.x86_64
  kernel-headers-4.18.0-372.19.1.el8_6.x86_64
  libmpc-1.1.0-9.1.el8.x86_64
  libpkgconf-1.4.2-1.el8.x86_64
  libxcrypt-devel-4.1.1-6.el8.x86_64
  pkgconf-1.4.2-1.el8.x86_64
  pkgconf-m4-1.4.2-1.el8.noarch
  pkgconf-pkg-config-1.4.2-1.el8.x86_64

完了しました!

 

これで、コンパイル&インストールできるはず。

# make
cc -g -O2 -Wall -pedantic -c nkf.c
関数 ‘get_backup_filename’ 内,
    inlined from ‘main’ at nkf.c:7164:28:
nkf.c:1035:3: 警告: ‘strncat’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
   strncat(backup_filename, filename, filename_length);
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
nkf.c: 関数 ‘main’ 内:
nkf.c:1024:27: 備考: length computed here
     int filename_length = strlen(filename);
                           ^~~~~~~~~~~~~~~~
cc -g -O2 -Wall -pedantic -c utf8tbl.c
cc -g -O2 -Wall -pedantic  -o nkf nkf.o utf8tbl.o
# make install
mkdir /usr/local/bin
mkdir: ディレクトリ `/usr/local/bin' を作成できません: File exists
make: [Makefile:49: install-main] エラー 1 (無視されました)
cp -f nkf /usr/local/bin/
mkdir /usr/local/man
mkdir /usr/local/man/man1
cp -f nkf.1 /usr/local/man/man1/
mkdir /usr/local/man/ja
mkdir /usr/local/man/ja/man1
cp -f nkf.1j /usr/local/man/ja/man1/nkf.1

 

Shift_JISのindex.htmlをUTF8でindex2.htmlに変換してみる。

cat index.html | nkf -w > index2.html

おぉ!!!上手くいきました。
後は一括変換してみます( ̄ー ̄)ニヤリ

以上