我确定这是一个愚蠢的问题,但无论如何我都会问。 是否有可能在OpenSuSE机器上安装xterm和xorg-x11-fonts软件包而不需要提供大量依赖的其他软件包?真的需要那些包装中的所有东西吗?如果没有,那么我想知道的是如何修剪该列表并仍然具有功能Xterm。 (比如可能选择几个级别的程序包并强制它安装而没有一些依赖项)。
答案 0 :(得分:0)
如果您使用的是基于Red Hat的发行版之一,那么通常的响应是展示如何使用yum
来查找依赖项。 OpenSUSE不使用yum
,但提供了类似的工具zypper
。
如上所述,列表会有所帮助。如果我跑
zypper search --requires xterm
只显示了十几个包:
S | Name | Summary
--+---------------------------------+------------------------------------------------
i | codelite | Powerful open-source, cross platform code editor
| eaglemode | Eagle Mode the deep application Cosmos
| leechcraft-shaitan | LeechCraft Shaitan Module
i | lxterminal-lang | Languages for package lxterminal
| package-lists-openSUSE-GNOME-cd | Patterns for Installation (full ftp tree)
| package-lists-openSUSE-KDE-cd | Patterns for Installation (full ftp tree)
| package-lists-openSUSE-X11-cd | Patterns for Installation (full ftp tree)
| package-lists-openSUSE-images | Patterns for Installation (full ftp tree)
i | xdg-menu | XDG Menus for WindowMaker and other Window Manager
i | xdm | X Display Manager
i | xinit | X Window System initializer
i | xterm | X terminal emulator (development version)
但xorg-x11-fonts
的相同命令向我展示了200多个包,包括xorg-x11-server
。
但是,以这种方式查看依赖项只会给故事提供一个方面:它显示删除给定包的效果。要问的实际问题是:将添加哪些包作为添加这两个包的副作用。该列表通常比--requires
选项显示的更短(通常 更短)。
例如,如果您真的只希望xterm
在计算机上可用,以便ssh
进入服务器并在本地计算机上运行xterm
,则不需要远程计算机上的X服务器。我们需要的是xterm
使用的字体和运行时库。您可以获得这些库正在使用的(粗略)图片
rpm -qR xterm
例如:
/bin/bash
/bin/sh
/bin/sh
/bin/sh
aaa_base
libICE.so.6()(64bit)
libX11.so.6()(64bit)
libXaw.so.7()(64bit)
libXft.so.2()(64bit)
libXmu.so.6()(64bit)
libXpm.so.4()(64bit)
libXt.so.6()(64bit)
libc.so.6()(64bit)
libc.so.6(GLIBC_2.11)(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.15)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libfontconfig.so.1()(64bit)
libtinfo.so.5()(64bit)
libutempter.so.0()(64bit)
luit
perl
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsLzma) <= 4.4.6-1
这些是xterm
包的直接文件依赖项。由于rpm
跟踪依赖关系的方式,您可能会注意到列表中有一些明显的重复。但是十几个包(一些已经安装)就是这个列表的含义。
可以编写一个脚本,为每个文件询问zypper --provides
,并获取一个包列表,这些包将通过在裸机服务器上安装xterm
来提取。这将给出最终列表的第一个近似值。但是,这不会显示必须作为副作用安装的软件包。过去那个更难 - 这就是zypper
的用途。
如果您从没有安装xterm
的配置开始,则要求zypper
安装xterm
软件包更简单(以使简短添加的软件包列表),然后取消安装。
答案 1 :(得分:-1)
如果你花了足够的时间整理出每一步的依赖关系,你或许可以做到这一点。
话虽如此,我并不认为这是一个简单的过程,或者甚至是一个富有成果的过程。如果依赖关系发生变化,它也将在以后的日期陷入一种可能令人困惑和混乱的状态。您还需要继续维护此块,因为将来的升级可能会将跳过的包拉出来。
这通常也不是一个很好的方法。如果你真的对保持依赖关系感兴趣,那么你最好尝试从源代码构建xterm(尽管这可能实际上并没有多大帮助)。