O openjdk-7-jdk depende do systemd?

4

Estou tentando instalar openjdk-7-jdk no Ubuntu Trusty (com apt ou aptitude ), mas parece depender de systemd , que gostaria de evitar. Mas também não consigo ver systemd na saída de debtree ou apt-rdepends . Por que? O openjdk-7-jdk depende do systemd ou não?

Para dar uma visão geral, estou provisionando um servidor. E tudo acontece ao instalar elasticsearch . Quer java e java quer systemd . Mas depois de instalar o systemd , ele não pode ativar o elasticsearch , já que ele vem com o script de inicialização, não com o arquivo de unidade do systemd. Veja systemctl e supõe que seja usado, não service .

UPD Ele não precisa de systemd até eu apt update . Antes de 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:

Após 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

Eles não estão mudando o Ubuntu Trusty para systemd ?

Além disso, o sistema operacional está em execução no contêiner lxc, mas duvido que isso tenha a ver com isso. E é uma instalação nova, por assim dizer. Eu crio contêiner, log in, apt update , apt install openjdk-7-jdk e ele quer 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

E nada em /etc/apt/sources.list.d .

    
por x-yuri 30.12.2016 / 12:43

2 respostas

2

Acontece que systemd foi incluído como recomendação, a saber:

link - link
link
link (recomenda colord)
link
link
="http://packages.ubuntu.com/trusty-updates/libpam-systemd"> link
link

E aqui podemos ver a diferença de comportamento entre contêineres LXC e servidores físicos. Recipientes LXC geralmente vêm com um conjunto básico de pacotes. Coisas como estas podem estar em falta: man , less , ping , vi , curl .

O ponto a ser, systemd-services depende de systemd ou systemd-shim (> = 3). Após a nova instalação do Ubuntu, você geralmente tem systemd-shim instalado. Então, instalar openjdk-7-jdk não puxa systemd package.

No caso do contêiner LXC, nenhum desses dois está instalado, portanto, ao solicitar que apt instale openjdk-7-jdk , ele escolhe o primeiro: systemd package.

Uma maneira de combatê-lo é instalar systemd-shim antes de instalar openjdk-7-jdk . Qual eu gosto mais, já que o outro ( apt install --no-install-recommends openjdk-7-jdk ) pode rejeitar algumas dependências úteis.

Veja esta lista de discussão discussion para obter mais detalhes.

Veja esta questão para detalhes sobre como rastrear dependências.

    
por x-yuri 05.01.2017 / 02:23
6

Existe um pacote do openjdk-7-jdk disponível para o Ubuntu 14.04 (Trusty) . 14.04 é baseado no Upstart, não é confiável. Portanto, o pacote deve executar 14.04 sem o sistema init systemd.

O pacote systemd ao qual você está se referindo é systemd de trusty-updates . A partir dessa página, você pode baixar e revisar os pacotes que Debian adicionado para fazer o pacote.

No arquivo compactado, você encontrará isso no arquivo README:

% bl0ck_qu0te%

O systemd fornece vários pacotes, dos quais o OpenJDK deve depender de um. Você pode confirmar que o pacote systemd-sysv não é uma dependência.

Não estou ciente de nenhuma circunstância em que a instalação de pacotes padrão no Ubuntu 14.04 resultaria na troca do sistema para usar o systemd como o sistema init sem que o usuário explicitamente optasse por fazê-lo.

Se o seu sistema 14.04 terminar com o Upstart e o systemd instalados, você pode interromper o processo de inicialização, entrar no menu grub e modificar a linha de comando do kernel para adicionar init=/sbin/upstart para inicializar com o Upstart e desinstalar ou mudar o que você precisa.

Para resolver o problema com o elasticsearch não iniciado, use o link para encontrar uma versão do elasticsearch a partir de trusty ou anterior, e copie o "init.d" script de lá. Essa correção persistirá por meio de atualizações do elasticsearch que você pode fazer.

Eu acho que você foi pego em um estado estranho porque mesmo que você esteja usando o 14.04, alguns mantenedores de pacotes estão se movendo para esperar systemd . Eu não acho que você vai encontrar uma solução melhor do que a solução alternativa assim.

    
por Mark Stosberg 30.12.2016 / 16:32