Можно ли установить x11, не загружая сотни других пакетов?

Я уверен, что это глупый вопрос, но я все же задам его. Можно ли установить пакеты xterm и xorg-x11-fonts на машине с OpenSuSE, не загружая массу других пакетов, от которых он, похоже, зависит? Все ли в этом множестве пакетов действительно необходимо? Если нет, то я хотел бы знать, как сократить этот список и при этом иметь функциональный Xterm. (Например, вы можете выбрать пакет на несколько уровней ниже и заставить его установить без некоторых его зависимостей).


person Joe Gibbs    schedule 07.05.2015    source источник
comment
У вас должна получиться дюжина или около того пакетов, а не тонна. К ним относятся библиотеки (но не сервер).   -  person Thomas Dickey    schedule 07.05.2015
comment
Только сколько упаковок? Включение списка может быть полезным здесь.   -  person Etan Reisner    schedule 07.05.2015


Ответы (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 (чтобы получить краткий список добавленных пакетов), а затем отменить установку.

person Thomas Dickey    schedule 08.05.2015

Возможно, вы сможете это сделать, если потратите достаточно времени на разбор зависимостей на каждом этапе пути.

При этом я не ожидаю, что это будет простой процесс или обязательно даже плодотворный. Это также может оказаться в потенциально запутанном и запутанном состоянии на более позднем этапе, если зависимости изменятся. Вам также нужно будет поддерживать этот блок в будущем, так как будущие обновления, вероятно, добавят пропущенные пакеты.

Это также, как правило, просто не лучший подход к вещам. Если вы действительно заинтересованы в уменьшении зависимостей, вам может быть лучше попытаться собрать xterm из исходного кода самостоятельно (хотя, опять же, это может не сильно помочь).

person Etan Reisner    schedule 07.05.2015
comment
Спасибо. Это в принципе то, что я ожидал услышать. Я просто надеялся, что ошибся. - person Joe Gibbs; 07.05.2015
comment
Сборка xterm из исходного кода не решит проблему OP, а усугубит ее, затруднив обновление системы и не нарушая его конфигурацию xterm. - person Thomas Dickey; 09.05.2015
comment
@ThomasDickey Моя точка зрения, хотя я не смог объяснить это там, заключалась в том, что можно было бы отказаться от определенных зависимостей, если бы он сам их построил. Зависимости, на которые согласился пакет, предоставленный дистрибутивом. - person Etan Reisner; 10.05.2015