最近のアップグレード後、人が動作を停止しましたが、その理由がわかりません。これは私のシステムです。
# cat /etc/*release*
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
man - 空のマニュアルページを実行すると、次の内容が表示されます。
# man ksh
Manual page ksh(1) byte 0/0 (END) (press h for help or q to quit)
押した後q
:
man: command exited with status 1: (cd /usr/share/man && /usr/lib/man-db/zsoelim) | (cd /usr/share/man && /usr/lib/man-db/manconv -f UTF-8:ISO-8859-1 -t UTF-8//IGNORE) | (cd /usr/share/man && preconv -e UTF-8) | (cd /usr/share/man && tbl) | (cd /usr/share/man && nroff -mandoc -rLL=156n -rLT=156n -Tutf8)
strace
stderrへのいくつかの出力以外には何も見つかりませんでした。
# grep 'write(2' man.trc
10614 write(2, "troff: can't find 'DESC' file\n", 30) = 30
10614 write(2, "troff: fatal error: sorry, I can"..., 44) = 44
10599 write(2, "man: ", 5) = 5
10599 write(2, "command exited with status 1: (c"..., 299) = 299
10599 write(2, "\n", 1) = 1
#
# grep DESC man.trc
10613 openat(AT_FDCWD, "/usr/share/groff/site-font/devutf8/DESC", O_RDONLY) = -1 ENOENT (No such file or directory)
10613 openat(AT_FDCWD, "/usr/share/groff/1.22.4/font/devutf8/DESC", O_RDONLY) = 3
10614 openat(AT_FDCWD, "/usr/share/groff/site-font/devutf8/DESC", O_RDONLY) = -1 ENOENT (No such file or directory)
10614 openat(AT_FDCWD, "/usr/share/groff/1.22.4/font/devutf8/DESC", O_RDONLY) = -1 EACCES (Permission denied)
10614 openat(AT_FDCWD, "/usr/lib/font/devutf8/DESC", O_RDONLY) = -1 ENOENT (No such file or directory)
10614 write(2, "troff: can't find 'DESC' file\n", 30) = 30
/usr/share/groff/1.22.4/font/devutf8/DESC
誰でも読めるように権限を変更しましたが、違いはありませんでした。
どんなアイデアがありますか?
コメントに対する編集者の回答:
エラーメッセージは、パイプラインが失敗していることを示しています。
# man zip
man: command exited with status 1: (cd /usr/share/man && /usr/lib/man-db/zsoelim) |
(cd /usr/share/man && /usr/lib/man-db/manconv -f UTF-8:ISO-8859-1 -t UTF-8//IGNORE) |
(cd /usr/share/man && preconv -e UTF-8) | (cd /usr/share/man && tbl) |
(cd /usr/share/man && nroff -mandoc -rLL=156n -rLT=156n -Tutf8)
手動で実行してみました。
# gunzip -c /usr/share/man/man1/zip.1.gz | /usr/lib/man-db/zsoelim | /usr/lib/man-db/manconv -f UTF-8:ISO-8859-1 -t UTF-8//IGNORE | preconv -e UTF-8 | tbl | nroff -mandoc -rLL=156n -rLT=156n -Tutf8
正しい出力が生成されるため、問題が発生してもその部分の前に発生する必要があります。おそらくどこかにマンページを解凍してパイプで接続する必要があるようですが、見つかりません。
編集2:
私はもう少し興味深く調べました。
# grep DESC man.trc
666097 openat(AT_FDCWD, "/usr/share/groff/site-font/devutf8/DESC", O_RDONLY) = -1 ENOENT (No such file or directory)
666097 openat(AT_FDCWD, "/usr/share/groff/1.22.4/font/devutf8/DESC", O_RDONLY) = 3
666098 openat(AT_FDCWD, "/usr/share/groff/site-font/devutf8/DESC", O_RDONLY) = -1 ENOENT (No such file or directory)
666098 openat(AT_FDCWD, "/usr/share/groff/1.22.4/font/devutf8/DESC", O_RDONLY) = -1 EACCES (Permission denied)
666098 openat(AT_FDCWD, "/usr/lib/font/devutf8/DESC", O_RDONLY) = -1 ENOENT (No such file or directory)
666098 write(2, "troff: can't find 'DESC' file\n", 30) = 30
だからpid 666097はそれを見つけてうまく/usr/share/groff/1.22.4/font/devutf8/DESC
開きました。それからpid 666098で見つけましたが、権限の取得が拒否されました。
どうやってこれができますか?
答え1
明らかにgroff
見つかりませんでした/usr/share/groff/site-font/devutf8/DESC
。私が理解したのは、これが答えの一部である必要があるため、groff-base
あなたの意見がsudo apt reinstall groff-base
正当であるようです。
ディレクトリが/usr/share/groff/site-font/devutf8
存在しない場合は、次のようになります。
ln -s /usr/share/groff/current/font/devutf8 /usr/share/groff/site-font/devutf8
man
ファイルを見つけるのに役立ちますDESC
。
ディレクトリが存在するが含まれていない場合は、DESC
ディレクトリからコピーすると便利です。DESC
/usr/share/groff/current/font/devutf8
存在する場合は、DESC
読み取り可能であることを確認してください(644
)。