параметры игнорируемого типа, переданные из apt-get, ведут себя не так, как ожидалось

У пакета, устанавливаемого с помощью apt-get, есть зависимость от Java, которую я хочу игнорировать.

$ apt-cache depends some-package
some-package
  PreDepends: <java7-runtime-headless>
    default-jre-headless
    openjdk-7-jre-headless
  PreDepends: unzip
  ...

$ sudo apt-get install some-package -o Dpkg::Options::='--ignore-depends=default-jre-headless,openjdk-7-jre-headless,java7-runtime-headless'

The following extra packages will be installed:
ca-certificates-java fontconfig-config fonts-dejavu-core java-common
libasyncns0 libcups2 libflac8 libfontconfig1 libjpeg-turbo8 libjpeg8
liblcms2-2 libnspr4 libnss3 libnss3-nssdb libogg0 libpulse0 libsctp1
libsndfile1 libvorbis0a libvorbisenc2 lksctp-tools openjdk-7-jre-headless
tzdata-java

Я применил метод дробовика к параметру ignore-depends, чтобы попытаться покрыть различные пакеты, но openjdk-7-jre-headless, кажется, всегда используется. Также пытался добавить в PreDepends, чтобы исключить.

Как я могу предотвратить установку openjdk?

edit похоже, что установка запускается с помощью predepends:

из Что такое разница между зависимостями и предварительными зависимостями?

Pre-Depends

This field is like Depends, except that it also forces dpkg to 
complete installation of the packages named before even starting the
installation of the package which declares the pre-dependency

https://serverfault.com/questions/250224/how-do-i-get-apt-get-to- ignore-some-dependencies обсуждает способ обойти это:

Вы можете изменить зависимости пакета deb следующим образом:

  1. Распаковать deb: ar x golden-linux.deb (создаст то есть три файла: debian-binary control.tar.gz data.tar.gz)
  2. Распаковать контрольный архив: tar xzf control.tar.gz (создаст: postinst postrm preinst prerm md5sums control)
  3. Исправить зависимости в контроле (используйте текстовый редактор)
  4. Repack control.tar.gz: tar c {post,pre}{inst,rm} md5sums control | gzip -c > control.tar.gz
  5. Repack deb: ar rcs newpackage.deb debian-binary control.tar.gz data.tar.gz

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

0
задан 13 April 2017 в 15:25

1 ответ

Короткий ответ, согласно комментарию David-Foerster - It's not possible to install a package without its pre-dependencies because they're required to install the package. In contrast, regular dependencies are required to use the package

Подробнее:

От двоичных зависимостей в пакетах Debian

Pre-Depends

This field is like Depends, except that it also forces dpkg to 
complete installation of the packages named before even starting the
installation of the package which declares the pre-dependency

Это обходное решение обсуждает 1 подход путем изменения Pre-Depends из deb пакета:

  1. Распакуйте deb: ar x some-package-ver.deb (создаст файлы, например: debian-двоичный-файл control.tar.gz data.tar.gz). Можно захватить архив с apt-get download some-package
  2. Распакуйте архив управления: FILES=$(tar xzvf control.tar.gz | egrep -v '^./$) (создаст: postinst postrm preinst prerm управляют и т.д., но исключают ./ это может быть перечислено в некоторых архивах),
  3. Зафиксируйте зависимости в управлении (например, удалить Pre-Depends строка - sed -r -i '/^Pre-Depends:.+/d control)
  4. Переупаковка control.tar.gz: tar zcf control.tar.gz $FILES
  5. Переупаковка deb: ar rcs newpackage.deb debian-binary control.tar.gz data.tar.gz
  6. Установка без Pre-Depends: dpkg -i newpackage.deb.
  7. Если существуют регулярные зависимости, которые Вы хотите разрешить от пакета, можно разрешить и установить их после того, как это склонное использование - добирается: apt-get install -f если Вы предоставили возможности пропускать их.

Я нашел что, переместив зависимость от Java от Pre-Depends кому: Depends разрешенный меня для установки пакета с ignore-depends использование dpkg, но если я работал apt-get install после этого зависимости были бы все еще разрешены и установлены на более позднем этапе.

0
ответ дан 14 April 2017 в 01:25

Другие вопросы по тегам:

Похожие вопросы: