首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >还原mandb-在取消安装最小化后触发

还原mandb-在取消安装最小化后触发
EN

Ask Ubuntu用户
提问于 2022-05-25 10:23:30
回答 1查看 196关注 0票数 0

问题

我已经安装了Ubuntu22.04和最小化的安装,然后我通过执行sudo unminimize来“模拟”它。但是,最初并不存在man包,因此触发了最初安装的包的mandb触发器。

其结果如下:

代码语言:javascript
运行
复制
$ man ls
No manual entry for ls
$ man bash
No manual entry for bash

对于一些软件包,这是通过重新安装它们来解决的:

代码语言:javascript
运行
复制
$ man curl
No manual entry for curl
$ sudo apt-get reinstall curl
<...>
$ man curl
# Works!

然而,对于一些实用程序来说,情况并非如此:

代码语言:javascript
运行
复制
$ dpkg -S "$(which env)"
coreutils: /usr/bin/env
# Could be reinstalled with apt

$ dpkg -S "$(which bash)"
dpkg-query: no path found matching pattern /usr/bin/bash
# Could not

因此,

,我在问:

  1. 是否有任何选项可以为系统包(如lsbash等)添加手册
  2. 如果没有,是否有任何选项强制dpkg处理已安装的包的触发器?对于.deb文件,我已经看到了这样的选项,但对于已经安装的文件,却没有这样的选项。

Upd.1:“非包”程序和非最优解决方案

/bin/usr/bin

另外,ls和其他一些是由包coreutils提供的,但是/bin//usr/bin/目录中都有:

代码语言:javascript
运行
复制
$ which ls
/usr/bin/ls
$ ll /usr/bin/ls
-rwxr-xr-x 1 root root 138208 Feb  7 16:03 /usr/bin/ls*
$ ll /bin/ls
-rwxr-xr-x 1 root root 138208 Feb  7 16:03 /bin/ls*
$ dpkg -L coreutils | grep /ls
/bin/ls
/usr/share/man/man1/ls.1.gz

bash包将bash安装到/bin/bash中也是如此,但是PATH/usr/bin/bash上找到了它

非最优解

通过重新安装机器上的每一个软件包,我成功地解决了这个问题:

代码语言:javascript
运行
复制
# WARNING: This will reinstall ALL EXISTING packages
$ apt list --installed 2>/dev/null | tail -n +2 | sed -E 's|^(.+)/.*$|\1|gm' | xargs sudo apt-get reinstall -y

这导致了1小时的下载和安装、内核升级和重新启动,但问题最终得到了解决。

EN

回答 1

Ask Ubuntu用户

发布于 2022-05-25 10:33:00

如果我没有弄错,软件包中包含手册页,所以可能是手册页在那里,只是还没有在man索引数据库中编目。如果是这样的话,一个简单的sudo mandb应该找到所有丢失的手册页,并且问题应该得到解决。如果由于某种原因这不起作用,请尝试sudo mandb -c,这将迫使mandb从头开始重建整个索引数据库。

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1410529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档