Quando apt-get
decide remover um pacote como parte da instalação de outro pacote, é porque há um conflito declarado (que pode não refletir um conflito real). Pacotes não-multiarch entram em conflito com o mesmo pacote de outra arquitetura; como explicado em resposta a Por que tentar instalar uma biblioteca de 64 bits via apt ameaça excluir um número de 32 bits requeridos? este é frequentemente o caso dos pacotes de desenvolvimento.
Você pode, no entanto, forçar a instalação de um pacote conflitante, usando dpkg --force-conflicts
. Você precisará baixar os pacotes afetados e instalá-los manualmente, e você não poderá usar apt-get
até que o conflito seja resolvido (ou melhor, apt-get
insistirá em resolver o conflito). Você pode quebrar os pacotes envolvidos no conflito, mas pelo menos você pode tentar ...
Não estou ciente de uma opção para desabilitar o tratamento de conflitos de apt-get
.
Uma alternativa é corrigir os pacotes afetados; Isso é bastante simples na maioria dos casos e evitará problemas subsequentes com apt
. Por exemplo, para harfbuzz
no Debian 8:
-
faça o download do código-fonte e extraia:
dget http://httpredir.debian.org/debian/pool/main/h/harfbuzz/harfbuzz_0.9.35-2.dsc cd harfbuzz-0.9.35
-
edite
debian/control
e adicioneMulti-Arch: same
após a linhaArchitecture
emPackage: libharfbuzz-dev
-
adicione uma entrada de changelog para que seus pacotes personalizados não sejam substituídos pela versão atual do arquivo:
dch -n "Enable Multi-Arch on the -dev package."
-
construa o pacote (você precisará fazer isso em um construtor
amd64
e um construtori386
- é aqui quepbuilder
ousbuild
são úteis)dpkg-buildpackage -us -uc
Isso produzirá libharfbuzz-dev
pacotes co-instaláveis. Isso funciona porque os pacotes já eram co-instaláveis, eles simplesmente não tinham os meta-dados necessários. Por harfbuzz
isto foi corrigido no Debian 9.