Como fixar um pacote PPA?

0

Instalei ppa:ondrej/php5 (para usar o PHP 5.5 mais recente) no Ubuntu 14.04 LTS, mas também inclui apache2 package, o que me impossibilita de instalar apache2-mpm-worker :

$ sudo apt-get install apache2-mpm-worker
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 apache2-mpm-worker : Depends: apache2 (= 2.4.12-1+deb.sury.org~trusty+5) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

E quando você usa apt-cache policy para verificar, você descobrirá que o apache2 foi substituído pelo PPA:

$ apt-cache policy apache2
apache2:
  Installed: (none)
  Candidate: 2.4.16-3+deb.sury.org~trusty+1
  Version table:
     2.4.16-3+deb.sury.org~trusty+1 0
        500 http://ppa.launchpad.net/ondrej/php5/ubuntu/ trusty/main amd64 Packages
     2.4.7-1ubuntu4.5 0
        500 http://tw.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages
     2.4.7-1ubuntu4 0
        500 http://tw.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages

Por isso, configuro o pin em /etc/apt/preferences para sua menor prioridade:

#
Package: apache2
Pin: origin "ppa.launchpad.net"
Pin-Priority: 1

Mas não funciona:

$ apt-cache policy apache2
apache2:
  Installed: (none)
  Candidate: 2.4.16-3+deb.sury.org~trusty+1
  Package pin: 2.4.16-3+deb.sury.org~trusty+1
  Version table:
     2.4.16-3+deb.sury.org~trusty+1 1
        500 http://ppa.launchpad.net/ondrej/php5/ubuntu/ trusty/main amd64 Packages
     2.4.7-1ubuntu4.5 1
        500 http://tw.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages
     2.4.7-1ubuntu4 1
        500 http://tw.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages

Mesmos resultados com release o=LP-PPA-ondrej-php5 e version 2.4.16-* . Eu gostaria de saber como fazer o pino corretamente?

    
por Gea-Suan Lin 20.08.2015 / 03:12

1 resposta

2

Acho que o pacote que você deseja instalar está obsoleto e foi deixado no repositório PPA. Este é o primeiro problema aí.

O pacote fonte pode gerar vários pacotes binários de uma vez, por exemplo, O pacote fonte do apache2 consiste em vários pacotes incluindo apache2 , apache2-bin , apache2-dbg , apache2-dev , apache2-mpm-worker , apache2-mpm-prefork , apache2-mpm-event ... e assim por diante. É razoável que todos compartilhem o mesmo número de versão, dependendo um do outro.

No seu caso, você deseja instalar o pacote apache2-mpm-worker 2.4.12-1, mas ele não possui o apache2 (2.4.12-1). Por quê? Porque o upstream removeu todos os pacotes de transição incluindo apache2-mpm-worker .

apache2 (2.4.12-2) unstable; urgency=medium

  [ Jean-Michel Nirgal Vourgère ]
  * d/control:
    + Update Vcs-Browser.
  * d/copyright:
    + Change d/debhelper/dh_apache2 to dh_apache2.in.
    + Drop paragraph about inexistant itk patches.

  [ Stefan Fritsch ]
  * Remove all the transitional packages:
    apache2-mpm-worker, apache2-mpm-prefork, apache2-mpm-event,
    apache2-mpm-itk, apache2.2-bin, apache2.2-common,
    libapache2-mod-proxy-html, libapache2-mod-macro, apache2-suexec
    This also fixes the dependency problems caused by a recent version
    of debhelper (see #784803).

A versão mais recente de apache2 (2.4.16-3) já foi construída no repositório PPA. Não é possível ter duas versões diferentes em um repositório. Assim, o apache2_2.4.12-1 é substituído pelo apache2_2.4.16-3 . Esta é uma limitação conhecida do apt, já que o PPA é um repositório apt. Ele também tem essa limitação.

Portanto, Pacote apache2_2.4.12-1, as depedências do apache2-mpm-worker_2.4.12 estão faltando. É por isso que sua instalação foi interrompida de acordo com sua descrição.

The following packages have unmet dependencies:
 apache2-mpm-worker : Depends: apache2 (= 2.4.12-1+deb.sury.org~trusty+5) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Eu acho que você já tem o apache2_2.4.16-3 instalado. As etapas a seguir são a nova abordagem para alterar o MPM para trabalhador:

$ a2enmod mpm_worker

Considerando o conflito mpm_event para o mpm_worker:

Considerando o conflito mpm_prefork para o mpm_worker:

ERRO: o módulo mpm_prefork está ativado - não pode prosseguir devido a conflitos. Precisa ser desativado primeiro!

$ a2dismod mpm_prefork

Não foi possível remover o /etc/apache2/mods-enabled/mpm_prefork.load: permissão negada

$ sudo a2dismod mpm_prefork

Módulo mpm_prefork desativado.

Para ativar a nova configuração, você precisa executar:

serviço apache2 restart

$ sudo a2enmod mpm_worker

Considerando o conflito mpm_event para o mpm_worker:

Considerando o conflito mpm_prefork para o mpm_worker:

Ativando o módulo mpm_worker.

Para ativar a nova configuração, você precisa executar:

serviço apache2 restart

$ sudo service apache2 restart
  • Reiniciando o servidor da web apache2 ... concluído.

$ apache2ctl status

Can't create config directory (/.w3m)!Apache Server Status for localhost (via 127.0.0.1)

Server Version: Apache/2.4.16 (Ubuntu)
Server MPM: worker
Server Built: 2015-08-18T00:00:00

-------------------------------------------------------------------------------

Current Time: Thursday, 20-Aug-2015 07:20:23 UTC
Restart Time: Thursday, 20-Aug-2015 07:19:38 UTC
Parent Server Config. Generation: 1
Parent Server MPM Generation: 0
Server uptime: 44 seconds
Server load: 0.00 0.01 0.05
Total accesses: 0 - Total Traffic: 0 kB
CPU Usage: u0 s0 cu0 cs0
0 requests/sec - 0 B/second -
1 requests currently being processed, 49 idle workers

_____W____________________________________________..............
................................................................
......................

Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C" Closing connection, "L" Logging, "G" Gracefully finishing,
"I" Idle cleanup of worker, "." Open slot with no current process

Voltando ao problema das preferências do apt, sua configuração parece boa para mim. Mas isso não funciona como esperado. Essa é uma parte interessante para mim. Depois de fazer algumas escavações, isso muda minha mente para o meu passado experimentado de apt. Pode haver alguma falta de recurso ou bugs para fixar um pacote específico.

    
por Gasol 20.08.2015 / 10:59

Tags