Eu tenho duas versões do apache rodando no Ubuntu, como posso remover uma?

2

Eu instalei o apache no Ubuntu fazendo o seguinte:

sudo -i
cd /usr/local/src
wget http://apache.mirrors.tds.net/httpd/httpd-2.2.11.tar.gz
tar -xvf httpd-2.2.11.tar.gz
cd httpd-2.11.9
./configure --enable-layout=Debian --enable-deflate --enable-proxy --enable-proxy-html --enable-proxy-http --enable-proxy-balancer --enable-rewrite --enable-cache --enable-mem-cache --enable-ssl --enable-headers --enable-mods-shared=most
make
make install
exit

Então eu instalei o php5 fazendo o seguinte:

sudo apt-get install php5

Agora tenho duas versões do apache:

tony@bootsy/etc/apache2 $ apachectl -v       
Server version: Apache/2.2.11 (Unix)
Server built:   May 26 2009 21:57:13
  tony@bootsy/etc/apache2 $ apache2ctl -v
Server version: Apache/2.2.8 (Ubuntu)
Server built:   Mar 10 2009 18:09:51

Eu tentei o apt-get remove, o apt-get autoremove, etc. Todos eles ainda deixam vestígios do apache. Eu obviamente só quero uma versão do apache rodando ... mas eu também não tenho certeza qual ... seria melhor rodar o Apache / 2.2.8 (Ubuntu)? Independentemente, como posso remover a outra versão?

Não é óbvio como instalar o php5 sem o apache ... o que eu acho que é uma loucura.

Obrigado!

    
por Tony 27.05.2009 / 07:40

5 respostas

4

A primeira coisa a ter em conta é que você não instalou apenas duas instâncias do apache, você realmente usou dois mecanismos de instalação diferentes - um compilando, o outro usando o mecanismo residente do dpkg (chamado via apt).

Nenhum método é mais (ou menos) válido que o outro, e, não se pode declarar categoricamente que você tem que usar apenas um método; mas você já identificou o primeiro problema com o uso de dois mecanismos diferentes - seu gerenciador de pacotes (dpkg) não sabe nada sobre sua instalação compilada manualmente.

A razão pela qual você acabou com uma versão do apache a partir do apt-get install php5, é que o pacote do php5 é uma série de dependências. Você pode consultar o banco de dados de empacotamento para as dependências com dpkg-query:

# dpkg-query -W -f='${Package} ${Version}\t${Maintainer}\n${Depends}\n' php5

php5 5.2.4-2ubuntu5.6   Ubuntu Core Developers <[email protected]>
libapache2-mod-php5 (>= 5.2.4-2ubuntu5.6) | php5-cgi (>= 5.2.4-2ubuntu5.6), 
  php5-common (>= 5.2.4-2ubuntu5.6)

Você verá um link para libapache2-mod-php5 , que, por sua vez, faz referência ao apache que foi instalado.

Quanto à remoção - o apt-get remove apache2 removerá a versão do apache2 instalada pelo gerenciador de pacotes, mas não tocará (nem você desejará) arquivos que foram adicionados manualmente - Isso exigirá sua inspeção e análise cuidadosas do sistema.

Se tiver sorte, o arquivo make que fez a instalação quando você digitou    faça a instalação

também tem um    make remove

No caso do apache2 / httpd - você não tem esse luxo, mas essa é uma instalação bastante limpa, já que as instalações vão, então você deve ser capaz de identificar o diretório que você instalou, e um

rm-rf / usr / local / apache2 (ou onde quer que você tenha instalado o apache)

deve remover a maioria dos arquivos colocados em seu sistema.

Se você não tiver uma instalação limpa, será necessário procurar os arquivos que foram instalados no sistema.

Uma maneira típica de determinar o que foi adicionado ao seu sistema após uma instalação feita manualmente (funciona para tudo, não apenas para instalações autoconfig) é executar o comando:

encontre / -cmin -2 2 > / dev / null | egrep -v '^ (/ proc | / sys)'

Você pode usar a saída desse comando para fornecer uma lista de arquivos que devem ser considerados para remoção.

Eu percebo que este não é um guia para remover o que foi colocado em seu sistema, mas os desafios que você está enfrentando são precisamente o motivo pelo qual as pessoas trabalham tanto para usar gerenciadores de pacotes para gerenciar seus sistemas (que, além disso para limpar a adição / remoção de arquivos, também fornece uma série de outros benefícios úteis, como a verificação binária para ver se alguma coisa foi modificada)

    
por 27.05.2009 / 08:49
1

Ao fazer 'make install', você provavelmente instalou um apache criado a partir da fonte nos diretórios que devem ser gerenciados pela distribuição.

Se você tiver sorte, o apache tem uma 'make uninstall' que deve remover todos os arquivos instalados. Caso contrário, faça um make install novamente e registre a saída para verificar quais arquivos / diretórios foram instalados e remova-os. Depois de terminar, reinstale o apache fornecido pelo Ubuntu (apt-get install --reinstall), pois alguns de seus arquivos podem ter sido excluídos.

Na próxima vez, certifique-se de instalá-lo em algum lugar que não seja gerenciado pela distribuição:

./ configure --prefix = / usr / local

Ou ainda melhor "./configure --prefix = / opt / apache-2.2.11" e crie links simbólicos onde você precisar deles.

It is not obvious how to install php5 without apache... which I think is crazy.

O PHP fornecido pelo Ubuntu foi compilado e testado com o apache fornecido pelo Ubuntu. Se você mesmo instalar um apache diferente, você também precisará instalar o php.

Se você quiser usar o PHP fornecido pelo Ubuntu com um apache compilado com opções ligeiramente diferentes, procure construir um pacote do Ubuntu a partir da fonte (o apt-get source é um ponto de partida).

    
por 27.05.2009 / 08:18
1

warpr explicou por que você tem duas instalações do apache. Normalmente, quando você está usando uma distribuição baseada em pacotes, você deve procurar por uma versão empacotada antes de instalar qualquer coisa da fonte.

Eu não diria que você não pode usar o pacote php5 com um apache compilado, mas a menos que você tenha um bom motivo, use o pacote. Isso economizará tempo e energia.

Por que o apache foi instalado automaticamente:

de " aptitude show php5 ":

This package is a metapackage that, when installed, guarantees that you have at
 least one of the three server-side versions of the PHP5 interpreter installed.

Depends: libapache2-mod-php5 (>= 5.2.6.dfsg.1-3ubuntu4.1) |
         libapache2-mod-php5filter (>= 5.2.6.dfsg.1-3ubuntu4.1) | php5-cgi (>=
         5.2.6.dfsg.1-3ubuntu4.1), php5-common (>= 5.2.6.dfsg.1-3ubuntu4.1)

Então, o que aconteceu é que o Ubuntu instalou o interpretador PHP mais comum, o libapache2-mod-php5, que, por sua vez, incluía o apache, e assim por diante.

Se você deseja instalar o php sem instalar o apache, você pode instalar o php5-cgi, que você pode usar com outros servidores http. Uma maneira de fazer isso seria:

sudo apt-get instala o php5-cgi php5

que usaria o php5-cgi como dependente para o pacote php5.

    
por 27.05.2009 / 08:35
0

Procure o arquivo httpd.

Em muitos sistemas linux está localizado aqui:

/etc/rc.d/init.d/httpd

Tente editar esse arquivo e verificar se você está iniciando duas versões do daemon http do apache. Exclua as linhas iniciando a que você não deseja.

    
por 27.05.2009 / 07:45
0

Não vejo uma boa razão para explicar por que você compilaria seu próprio apache. Uma boa razão para não fazer isso é que isso dificulta muito a manutenção. Patch de segurança não é brincadeira quando você tem que compilar 5 partes diferentes de software para corrigir. E isso é suposto que você realmente saiba sobre a vulnerabilidade de segurança. É por isso que usamos pacotes e o apache fornecido pelo Ubuntu neste caso.

Então, tendo em mente que você provavelmente não deveria fazer isso, há um truque que ninguém mencionou. Se você realmente quiser usar seu próprio apache compilado com outros pacotes do Ubuntu, use o pacote "equivs". A partir da descrição:

Another use is to circumvent dependency checking. If a package P is not installed on the system, packages that depend on P cannot normally be installed. However, if functionality equivalent to P is known to be installed, this tool can be used to trick the Debian package management system into believing that package P is actually installed. NOTE: this should be considered a crude hack to work around awkward situations, not a normal solution. If you use equivs to work around bugs in other Debian packages, you should also file bug reports against those packages.
    
por 27.05.2009 / 09:01