我可以禁用所有手册页吗?


14

特别是在树莓派(运行Raspbian Wheezy)上,但总体而言,我可以禁用所有手册页吗?

这将意味着没有存储的手册页,没有“处理man-db的触发器”,依此类推。由于手册页始终可以在Internet上找到,因此我真的不需要安装它们,而生成和存储它们似乎是不必要的。


恐怕您可能对手册页本身一无所知-它们是所附带软件的详细资料的一部分。
沙杜尔

6
当然,比手册页更适合节省空间吗?
2014年

我可以想象打包工具的配置会删除所有标记为docs的文件和/或与正则表达式匹配的文件。不过,我不知道这个概念的实现。
PavelŠimerda'14

您仅会节省1%的空间(实际上可能更少)?如果您还要压抑的话,可能还要多一点/usr/share/doc
吉尔(Gilles)'所以

Answers:


16

我在有人为Wandboard拼凑的Debian 8图像上遇到了相反的问题。我试图找到一些已经安装的软件包的手册页,发现安装了一些新软件包后,即使deb文件中存在手册页,它们也丢失了。

然后,我在/etc/dpkg/dpkg.conf.d中找到了该文件01_nodoc,它是原始问题的简单解决方案,该问题是如何通过删除手册页和语言环境以及版权非常宝贵的版权文件(例如嵌入式)来节省空间的系统)。

# /etc/dpkg/dpkg.conf.d/01_nodoc

# Delete locales
path-exclude=/usr/share/locale/*

# Delete man pages
path-exclude=/usr/share/man/*

# Delete docs
path-exclude=/usr/share/doc/*
path-include=/usr/share/doc/*/copyright

另一个有用的答案是在askubuntu.com/a/401144/162384,该网址(除了一个很好的例子)还指向文档:wiki.ubuntu.com/ReducingDiskFootprint#Documentation
berto

6

问题在于,程序包管理系统希望其安装的文件(包括手册页)保留在此处,因此,无论您使用哪种机制删除它们(除非重新构建每个程序包,如HalosGhost建议的那样)都会使它感到困惑。

如果您要生产的是单一用途的设备,则可以采取的一种方法是为设备创建和部署单独的步骤。也就是说,您将所需的所有软件包安装在单独的构建环境(不同的SD卡或仿真的RPi)中,然后仅将要在生产中拥有的内容从构建环境复制到生产环境。在那个阶段,您可以忽略手册页以及生产中不需要的任何其他内容。

为了获取升级的操作系统或安全修补程序,您可以升级或重建构建环境,然后再次复制(或rsync)到生产环境。

这还需要更多工作,但是与直接登录并在其上运行升级相比,它为您提供了一个受控制的生产设备。


5

好吧,不知道您的RPi正在运行哪个发行版,我无法为您提供确切的命令,但是您可能会删除man-db同时提供man实用程序和各种手册页的软件包。但是,删除所有手册页将需要从每个软件包中删除每个手册页-我无法想象这值得您节省时间来节省空间。

如果您确实想要,那么您将需要重新构建每个软件包。在诸如Archlinux或Gentoo的发行版中,这不一定是不可能的,但仍然很繁琐。在其他不那么动手的发行版中,您可能会发现此任务异常困难。


2
apt-get remove --purge man-db也将debhelper不需要卸载吗?
rubo77

4
$ cat /etc/apt/apt.conf.d/90debsums 
DPkg::Post-Invoke { "if [ -x /usr/bin/debsums ]; then /usr/bin/debsums --generate=nocheck -sp /var/cache/apt/archives; fi"; };

程序包debsums将安装一个操作,以在安装程序包之后自动生成程序包的md5sum列表,而无需拥有自己的md5sums文件。

您可以添加类似的安装后操作扫描,以在每次安装操作后扫描并删除手册页(和信息文档)。

要获取手册页和拥有的软件包,您需要浏览所有/var/lib/dpkg/info/PACKAGENAME.list文件。

您也应该更新*.list文件,更不用说删除的联机帮助页了。

localepurge部分也这样做。引用自apt-cache show localepurge

这是一个脚本,用于恢复不必要的语言环境,Gnome / KDE本地化和本地化手册页所浪费的磁盘空间。根据安装情况,可以节省大约200、300甚至更多兆字节的磁盘空间,这些磁盘空间专用于本地化,您可能永远不会使用过。完成任何适当的安装操作后,它将自动运行。

最重要的报价:

如果您通过使用它破坏系统,请绝对不要报告任何将localepurge归咎于此类错误。如果您不知道自己在做什么,并且无法自行处理任何导致的损坏,请不要使用此软件包。

;-D

因此,只需进行完整备份,然后尝试编写您的manpagekiller...


1
这也是我想到的解决方案(而且不要安装man-db)。我将通过/etc/dpkg.cfg.d而不是通过APT 添加调用后挂钩,以处理的直接调用dpkg
吉尔斯(Gilles)'“ SO-不要邪恶”

精细!作为每个程序包(每个.deb)的操作dpkg甚至比安装后操作更容易,apt因为您将拥有该程序包的名称,并且不需要*.list一次又一次地扫描所有文件的手册页。我只是忘记了也dpkg有一个钩子……

嗯...但是处理早于此处理程序安装的软件包仍然需要扫描*.list文件。但是,dpkg调用后挂钩是触发该动作的更好位置。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.