是否可以在不拉入数百个其他软件包的情况下安装x11?

时间:2015-05-07 19:45:47

标签: dependencies x11 rpm opensuse xterm

我确定这是一个愚蠢的问题,但无论如何我都会问。 是否有可能在OpenSuSE机器上安装xterm和xorg-x11-fonts软件包而不需要提供大量依赖的其他软件包?真的需要那些包装中的所有东西吗?如果没有,那么我想知道的是如何修剪该列表并仍然具有功能Xterm。 (比如可能选择几个级别的程序包并强制它安装而没有一些依赖项)。

2 个答案:

答案 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(尽管这可能实际上并没有多大帮助)。