Я уверен, что это глупый вопрос, но я все же задам его. Можно ли установить пакеты xterm и xorg-x11-fonts на машине с OpenSuSE, не загружая массу других пакетов, от которых он, похоже, зависит? Все ли в этом множестве пакетов действительно необходимо? Если нет, то я хотел бы знать, как сократить этот список и при этом иметь функциональный Xterm. (Например, вы можете выбрать пакет на несколько уровней ниже и заставить его установить без некоторых его зависимостей).
Можно ли установить x11, не загружая сотни других пакетов?
Ответы (2)
Если бы вы использовали один из дистрибутивов на основе 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
(чтобы получить краткий список добавленных пакетов), а затем отменить установку.
Возможно, вы сможете это сделать, если потратите достаточно времени на разбор зависимостей на каждом этапе пути.
При этом я не ожидаю, что это будет простой процесс или обязательно даже плодотворный. Это также может оказаться в потенциально запутанном и запутанном состоянии на более позднем этапе, если зависимости изменятся. Вам также нужно будет поддерживать этот блок в будущем, так как будущие обновления, вероятно, добавят пропущенные пакеты.
Это также, как правило, просто не лучший подход к вещам. Если вы действительно заинтересованы в уменьшении зависимостей, вам может быть лучше попытаться собрать xterm из исходного кода самостоятельно (хотя, опять же, это может не сильно помочь).