Я пытаюсь установить openjdk-7-jdk
в Ubuntu Trusty (с apt
или aptitude
), но, похоже, это зависит от systemd
, которого я бы хотел избежать. Но также я не вижу systemd
в выходных данных debtree
или apt-rdepends
. Почему это так? Зависит ли openjdk-7-jdk
от systemd
или нет?
Чтобы дать вам более полную картину, я готовлю сервер. И все это происходит при установке elasticsearch
. Он хочет java
, а java
хочет systemd
. Но после установки systemd
он не может включить elasticsearch
, так как он поставляется со скриптом инициализации, а не с файлом systemd unit. Он видит systemctl
и предполагает, что он будет использоваться, а не service
.
UPD Ему не нужно systemd
, пока я не сделаю apt update
. До apt update
:
# apt-cache policy openjdk-7-jdk
openjdk-7-jdk:
Installed: (none)
Candidate: 7u101-2.6.6-0ubuntu0.14.04.1
Version table:
7u101-2.6.6-0ubuntu0.14.04.1 0
500 http://archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages
7u51-2.4.6-1ubuntu4 0
500 http://archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
# apt-cache policy systemd
systemd:
Installed: (none)
Candidate: (none)
Version table:
После apt update
:
# apt-cache policy openjdk-7-jdk
openjdk-7-jdk:
Installed: (none)
Candidate: 7u121-2.6.8-1ubuntu0.14.04.1
Version table:
7u121-2.6.8-1ubuntu0.14.04.1 0
500 http://archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages
7u51-2.4.6-1ubuntu4 0
500 http://archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
# apt-cache policy systemd
systemd:
Installed: (none)
Candidate: 204-5ubuntu20.20
Version table:
204-5ubuntu20.20 0
500 http://archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
Они не переключают Ubuntu Trusty на systemd
?
Кроме того, ОС работает в контейнере lxc, но я сомневаюсь, что это связано с этим. И это свежая установка, так сказать. Я создаю контейнер, регистрируюсь, apt update
, apt install openjdk-7-jdk
, и он хочет systemd
.
/etc/apt/sources.list
:
deb http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
И ничего в /etc/apt/sources.list.d
.
Это сложилось, systemd
был втянут как рекомендация, а именно:
http://packages.ubuntu.com/trusty-updates/openjdk-7-jdk
http://packages.ubuntu.com/trusty-updates/openjdk-7-jre
http://packages.ubuntu.com/trusty-updates/libgtk-3-0
http://packages.ubuntu.com/trusty/libcolord1 (рекомендует окрашенный),
http://packages.ubuntu.com/trusty/colord
http://packages.ubuntu.com/trusty-updates/policykit-1
http://packages.ubuntu.com/trusty-updates/libpam-systemd
http://packages.ubuntu.com/trusty-updates/systemd-services
И здесь мы видим различие в поведении между контейнерами LXC и физическими серверами. Контейнеры LXC обычно идут с основным набором пакетов. Вещи как они могли бы отсутствовать: man
, less
, ping
, vi
, curl
.
Точка быть, systemd-services
зависит от systemd
или systemd-shim
(> = 3). После новой установки Ubuntu Вы обычно имеете systemd-shim
установленный. Так установка openjdk-7-jdk
не сдерживается systemd
пакет.
В случае контейнера LXC ни один из тех двух не установлен, поэтому при выяснении apt
устанавливать openjdk-7-jdk
это choses первый: systemd
пакет.
Одним способом бороться с ним является установка systemd-shim
перед установкой openjdk-7-jdk
. Который мне нравится больше, начиная с другой одного (apt install --no-install-recommends openjdk-7-jdk
) мог бы отклонить некоторые полезные зависимости.
Дополнительную информацию см. в этом обсуждении списка рассылки.
Посмотрите этот вопрос для получения дополнительной информации о прослеживании зависимостей.
Существует пакет openjdk-7-jdk, доступных для Ubuntu 14.04 (Надежный человек) . 14.04 основан на Выскочке, не надежном человеке. Поэтому пакет должен работать 14.04 без systemd init система.
systemd пакет Вы относящийся к systemd от испытанных обновлений . От той страницы Вы можете загрузка и рассматривать пакеты, которые Debian добавил для создания пакета.
В сжатом архиве, Вы найдете это в файле README:
systemd может быть установлен вместе с sysvinit и не изменит поведение системы из поля. Это является намеренным. Для тестирования systemd добавьте:
init=/bin/systemd
к командной строке ядра и затем перезагрузке или установке systemd-sysv пакет.
systemd обеспечивает много пакетов, из которых OpenJDK должен зависеть от одного. Можно подтвердить, что systemd-sysv
пакет не является зависимостью.
я не знаю ни о каком обстоятельстве, при котором установка стандартных пакетов на Ubuntu 14.04 привела бы к переключению системы для использования systemd в качестве init системы без пользователя, явно подписывающегося.
Должен Ваши 14,04 систем так или иначе заканчиваться и с Выскочкой и с установленным systemd, можно прервать процесс начальной загрузки, ввести меню личинки и изменить командную строку ядра для добавления init=/sbin/upstart
, чтобы загрузить его назад с Выскочкой, и затем удалить или изменить то, что Вы должны.
Для решения проблемы с elasticsearch, не запускающимся, используйте http://packages.ubuntu.com , чтобы найти версию elasticsearch от trusty
или ранее и скопировать "init.d" сценарий оттуда. Эта фиксация сохранится посредством обновлений elasticsearch, который можно сделать.
я думаю, что Вы пойманы нечетное состояние, потому что даже при том, что Вы используете 14.04, некоторые специалисты по обслуживанию пакета перемещаются для ожидания systemd
. Я не думаю, что Вы собираетесь найти лучшую фиксацию, чем обходное решение как этот.
-d
обновления версии разработки, и вероятны плохая идея для большинства пользователей, взгляните на эту опцию вместо этого: askubuntu.com/questions/1085295/… – Ciro Santilli 新疆改造中心996ICU六四事件 15 December 2018 в 06:11