У пакета, устанавливаемого с помощью 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 следующим образом:
ar x golden-linux.deb
(создаст то есть три файла: debian-binary control.tar.gz data.tar.gz) tar xzf control.tar.gz
(создаст: postinst postrm preinst prerm md5sums control) tar c {post,pre}{inst,rm} md5sums control | gzip -c > control.tar.gz
ar rcs newpackage.deb debian-binary control.tar.gz data.tar.gz
Так что я предполагаю это это то, что мне нужно сделать, чтобы заставить это работать ...
Короткий ответ, согласно комментарию 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 пакета:
ar x some-package-ver.deb
(создаст файлы, например: debian-двоичный-файл control.tar.gz data.tar.gz). Можно захватить архив с apt-get download some-package
FILES=$(tar xzvf control.tar.gz | egrep -v '^./$)
(создаст: postinst postrm preinst prerm управляют и т.д., но исключают ./
это может быть перечислено в некоторых архивах),Pre-Depends
строка - sed -r -i '/^Pre-Depends:.+/d control
)tar zcf control.tar.gz $FILES
ar rcs newpackage.deb debian-binary control.tar.gz data.tar.gz
Pre-Depends
: dpkg -i newpackage.deb
. apt-get install -f
если Вы предоставили возможности пропускать их.Я нашел что, переместив зависимость от Java от Pre-Depends
кому: Depends
разрешенный меня для установки пакета с ignore-depends
использование dpkg, но если я работал apt-get install
после этого зависимости были бы все еще разрешены и установлены на более позднем этапе.