yelp 找不到 GNOME 帮助文件

Fed*_*eli 5 gnome yelp helpfile

太长了;博士

\n\n

以下所有内容的总结大致是这样的:

\n\n
    \n
  • 删除或移动目录/usr/share/help/C/gnome-help
  • \n
  • 运行命令sudo apt reinstall gnome-user-docs gnome-getting-started-docs ubuntu-docs
  • \n
  • 丢失的目录及其内容必须恢复。
  • \n
\n\n

这在我的一个 20.04 系统上可以正常工作,但在另一个 20.04 系统上则不行。两个系统都是最新的。

\n\n

我想找出造成这种差异的原因。

\n\n
\n\n
\n\n

从 19.10 升级到 20.04 后,GNOME帮助应用程序 ( yelp) 找不到 GNOME 帮助文件。例如,当我在 GNOME文件应用程序 ( nautilus) 中并按下时F1,我在窗口中收到以下错误消息yelp

\n\n
Document Not Found\nThe URI \xe2\x80\x98help:gnome-help/files\xe2\x80\x99 does not point to a valid page.\n
Run Code Online (Sandbox Code Playgroud)\n\n

同样的事情也发生在其他 GNOME 应用程序中,例如等geditgnome-calculator

\n\n

yelp可以显示man页面OK。问题仅出在“帮助”页面。有没有需要安装的包?

\n\n

我尝试安装包gnome-user-guide,但没​​有帮助。套餐:

\n\n
gnome-getting-started-docs\ngnome-user-docs\nubuntu-docs\nxorg-docs-core\n
Run Code Online (Sandbox Code Playgroud)\n\n

已经安装并且是最新的。

\n\n
\n\n

似乎*所需的文件是下面的文件,/usr/share/help/C/gnome-help/并且包gnome-user-docs是提供这些文件的包(https://packages.ubuntu.com/focal/all/gnome-user-docs/filelist)。但是,即使删除、清除并重新安装此软件包也不会将这些文件带入我的系统。

\n\n

*笔记:dpkg -S /usr/share/help/C/gnome-help/files.page输出是这样的:

\n\n
gnome-user-docs: /usr/share/help/C/gnome-help/files.page\n
Run Code Online (Sandbox Code Playgroud)\n\n

ls -lisad /usr/share/help/ /usr/share/help/C为:

\n\n
8651957 4 drwxr-xr-x 59 root root 4096 May 14 19:55 /usr/share/help/\n8651631 4 drwxr-xr-x 31 root root 4096 May 17 17:39 /usr/share/help/C\n
Run Code Online (Sandbox Code Playgroud)\n\n

这些目录中文件的权限和所有权是-rw-r--r-- root root

\n\n
\n\n

同样,其他 GNOME 软件包(例如gnome-calculator)在(重新)安装时,不会填充到下面的相关目录中/usr/share/help/C/

\n\n

我通过/usr/share/help/C/gnome-help/从另一个系统复制目录及其内容然后重新安装gnome-user-docs软件包进行测试。重新安装删除了我刚刚复制到那里的必要文件!在重新安装之前,但手动复制这些文件后,yelp能够正常显示其主屏幕和相关帮助屏幕。重新安装后,又出现上述问题。

\n\n
\n\n

我尝试过使用各种语言环境来安装软件包 gnome-user-docs。每次都会发生同样的事情。我手动复制的文件在下面/usr/share/help/C/正在被删除:

\n\n
# LANG=en_US.UTF-8 apt --reinstall install gnome-user-docs\n# LANG=en_GB.UTF-8 apt --reinstall install gnome-user-docs\n# LANG=C.UTF-8     apt --reinstall install gnome-user-docs\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的locale输出是这样的:

\n\n
LANG=C.UTF-8\nLANGUAGE=\nLC_CTYPE="C.UTF-8"\nLC_NUMERIC=en_GB.UTF-8\nLC_TIME=en_GB.UTF-8\nLC_COLLATE="C.UTF-8"\nLC_MONETARY=en_GB.UTF-8\nLC_MESSAGES="C.UTF-8"\nLC_PAPER=en_GB.UTF-8\nLC_NAME=en_GB.UTF-8\nLC_ADDRESS=en_GB.UTF-8\nLC_TELEPHONE=en_GB.UTF-8\nLC_MEASUREMENT=en_GB.UTF-8\nLC_IDENTIFICATION=en_GB.UTF-8\nLC_ALL=\n
Run Code Online (Sandbox Code Playgroud)\n\n

(请注意,我测试了LANG=en_US.UTF-8也进行了测试;结果是相同的。)

\n\n

的输出check-language-support --show-installed是:

\n\n
firefox-locale-en gimp-help-en hunspell-en-au hunspell-en-ca hunspell-en-gb hunspell-en-us hunspell-en-za hyphen-en-ca hyphen-en-gb hyphen-en-us language-pack-en language-pack-gnome-en libreoffice-help-en-gb libreoffice-help-en-us libreoffice-l10n-en-gb libreoffice-l10n-en-za mythes-en-au mythes-en-us poppler-data thunderbird-locale-en thunderbird-locale-en-gb thunderbird-locale-en-us wamerican wbritish\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

当前安装的软件包:

\n\n
# apt --installed list | grep -i "docs"\n\ngnome-getting-started-docs/focal,focal,now 3.36.1-0ubuntu1 all [installed]\ngnome-user-docs/focal,focal,now 3.36.1-0ubuntu1 all [installed]\nubuntu-docs/focal,focal,now 20.04.2 all [installed]\nxorg-docs-core/focal,focal,now 1:1.7.1-1.1 all [installed,automatic]\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

更多信息

\n\n

(1)

\n\n

的输出sudo apt-cache depends yelp是这样的:

\n\n
yelp\n  Depends: libc6\n  Depends: libglib2.0-0\n  Depends: libgtk-3-0\n  Depends: libwebkit2gtk-4.0-37\n  Depends: libyelp0\n |Depends: dconf-gsettings-backend\n  Depends: <gsettings-backend>\n    dconf-gsettings-backend\n  Depends: python3-distro\n  Depends: yelp-xsl\n  Depends: man-db\n    man-db:i386\n  Recommends: docbook-xml\n
Run Code Online (Sandbox Code Playgroud)\n\n

注意:这与另一个不存在此问题的系统上的输出相同

\n\n

(2)

\n\n

包的校验yelp和正常:

\n\n
$ debsums yelp | wc -l\n230\n$ debsums yelp | grep \'OK$\' | wc -l\n230\n$ debsums -a yelp | grep \'OK$\' | wc -l\n230\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,包的校验和gnome-user-docs显示的结果不一致。在出现此问题的系统上:

\n\n
$ debsums gnome-user-docs | wc -l\n4\n$ debsums gnome-user-docs | grep \'OK$\' | wc -l\n4\n$ debsums -a gnome-user-docs | grep \'OK$\' | wc -l\n4\n$ debsums gnome-user-docs\n/usr/share/doc/gnome-user-docs/NEWS.gz                                        OK\n/usr/share/doc/gnome-user-docs/README                                         OK\n/usr/share/doc/gnome-user-docs/changelog.Debian.gz                            OK\n/usr/share/doc/gnome-user-docs/copyright                                      OK\n
Run Code Online (Sandbox Code Playgroud)\n\n

而在没有此问题的系统上:

\n\n
$ debsums gnome-user-docs | wc -l\n465\n
Run Code Online (Sandbox Code Playgroud)\n\n

区别在于/usr/share/help/C/gnome-help//usr/share/help/C/system-admin-guide/文件:我在这篇文章中讨论的文件。

\n

Fed*_*eli 2

罪魁祸首是localepurge

经过进一步调查后,我发现在有问题的系统上localepurge安装了一个名为 的软件包,而在没有问题的系统上未安装该软件包。

有关更多信息,您可以查看 localepurge 的手册页

有一个/etc/locale.nopurge不包含C区域设置的文件,将其排除在清除在其下创建的文件之外。

无论如何,我不记得安装过localepurge软件包,所以我删除了它。然后我重新运行:

# apt reinstall gnome-user-docs gnome-getting-started-docs ubuntu-docs xorg-docs-core
Run Code Online (Sandbox Code Playgroud)

丢失的文件又回来了。

在手册页中/usr/share/doc/localepurge/reinstall_debs.sh提到了一个名为的脚本,实际上是这样的:

apt-get -u --reinstall --fix-missing install $(dpkg -S LC_MESSAGES | cut -d: -f1 | tr ', ' '\n' | sort -u)
Run Code Online (Sandbox Code Playgroud)

我也运行了该命令。

  • 有趣的。很高兴读到你已经修好了。 (2认同)