【问题标题】:Is it possible to install x11 without pulling in hundreds of other packages?是否可以在不引入数百个其他软件包的情况下安装 x11?
【发布时间】:2015-05-07 19:45:47
【问题描述】:

我确定这是一个愚蠢的问题,但我还是要问。 是否可以在 OpenSuSE 机器上安装 xterm 和 xorg-x11-fonts 包,而不需要引入大量它似乎依赖的其他包?真的需要这些软件包中的所有东西吗?如果没有,那么我想知道的是如何精简该列表并仍然具有功能性 Xterm。 (就像可能选择一个包向下几个级别并强制它在没有一些依赖项的情况下安装)。

【问题讨论】:

  • 你应该得到一打左右的包裹——而不是“一吨”。这些将包括库(但不包括服务器)。
  • 到底有多少包?在这里包含一个列表可能会有所帮助。

标签: dependencies x11 rpm opensuse xterm


【解决方案1】:

如果您使用的是基于 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,你不需要在远程机器。需要的是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 包更简单(以获取添加包的简短列表),然后取消安装。

【讨论】:

    【解决方案2】:

    如果您花足够的时间整理出每一步的依赖关系,您也许可以做到这一点。

    话虽如此,我并不认为这是一个简单的过程,甚至不一定是一个富有成果的过程。如果依赖关系发生变化,它也会在以后进入潜在的混乱和混乱状态。您还需要继续维护这个块,因为未来的升级可能会拉入跳过的包。

    这通常也不是一个很好的处理方法。如果您真的对降低依赖关系感兴趣,那么您最好尝试自己从源代码构建 xterm(尽管这实际上可能没有太大帮助)。

    【讨论】:

    • 谢谢。这基本上是我期望听到的。我只是希望我错了。
    • 从源代码构建 xterm 并不能解决 OPs 问题,反而会因为更难进行系统更新并避免破坏他的 xterm 配置而加剧问题。
    • @ThomasDickey 我的意思是,虽然我没有很好地解释它,但如果他自己构建它,可能会选择退出某些依赖项。分发包提供的包选择加入的依赖项。
    猜你喜欢
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    相关资源
    最近更新 更多