Como você talvez saiba, você pode fixar pacotes em suas versões atuais. Isso é feito dando ao pacote o status "hold". Por exemplo, se você instalou a versão 1.1 de algum pacote e configurou esse pacote para o status "hold", ele não será atualizado, mesmo quando a versão 1.2 ou posterior estiver disponível.
No seu caso, parece que há um ou mais pacotes definidos para "manter". Isso proíbe o apt-get de resolver algumas dependências quando você tenta instalar o apache2
. Digamos, por exemplo, que você fixou apache2-bin
em uma versão anterior a 2.4.7-1ubuntu4.4. Então você tenta instalar o apache2
na versão 2.4.7-1ubuntu4.4. apache2 2.4.7-1ubuntu4.4
depende de apache2-bin 2.4.7-1ubuntu4.4
, então o apt-get tenta resolver essa dependência instalando apache2-bin 2.4.7-1ubuntu4.4
também. Mas não é possível, porque apache2-bin
está no status "hold" de uma versão anterior. Então, o apt-get diz "Incapaz de corrigir problemas, você realizou pacotes quebrados".
Esse é apenas um dos cenários possíveis, mas deve lhe dar uma ideia de onde provavelmente está seu problema.
Existem duas maneiras de tentar: Uma possibilidade é, ter o apt-get tentando o problema. Isso deve te dar alguma solução, mas não é necessário o que você está procurando. O comando para que o apt-get tente e corrija a bagunça seria
apt-get upgrade -f
O -f
é para "correção quebrada" ou melhor, "tente consertar as coisas quebradas".
A outra possibilidade é procurar o pacote fixado por você mesmo e "desmarcá-lo". Isso é mais trabalho, mas eu ficaria mais confortável com isso se comparado a dizer ao apt-get "apenas faça alguma coisa para acertar";)
Você pode obter o stati de todos os pacotes instalados com
dpkg --get-selections
Para filtrar aqueles de interesse, você pode simplesmente procurar os nomes, por exemplo
dpkg --get-selections | grep -i ^apache2
Isso deve lhe dar algo parecido com
apache2 install
apache2-bin install
apache2-data install
apache2-doc install
Eu diria que um ou mais dos pacotes relacionados ao Apache estão "em espera". Você pode alterar o status de um pacote por
# set a package to status "hold"
apt-mark hold somepackage
# for example
apt-mark hold apache2-bin
# remove status "hold" from a package
apt-mark unhold somepackage
# for example
apt-mark unhold apache2-bin
O pacote que está "retendo tudo" pode ser apache2-bin
ou outro pacote do qual o apache2-bin
depende. Você pode verificar de quais pacotes um pacote depende
apt-cache depends somepackage
por exemplo
apt-cache depends apache2-bin