Esta é uma pergunta muito específica que o Google não ajudou em responder.
Estou executando o Ubuntu 13.04 com apt 0.9.7.7ubuntu4 for amd64 compiled on Oct 3 2013 15:25:56
.
Quero instalar o Erlang a partir de um pacote .deb, mas não quero extrair todas as suas dependências. O próprio pacote especifica que depende das bibliotecas Java e wx, mas, na realidade, elas não são necessárias, a menos que você deseje interagir com Java ou wxWidgets.
Eu posso instalar o Erlang assim
sudo dpkg -i --force-depends erlang.deb
No entanto, a instalação de qualquer outra coisa apt-get
posteriormente falha devido a dependências não atendidas. Portanto, se eu quiser instalar o git após o Erlang, recebo o seguinte
$ sudo apt-get install -y git
Reading package lists...
Building dependency tree...
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
esl-erlang : Depends: default-jre-headless but it is not going to be installed or
java2-runtime-headless or
java1-runtime-headless or
java2-runtime or
java1-runtime
Depends: libwxbase2.8-0 but it is not going to be installed
Depends: libwxgtk2.8-0 but it is not going to be installed
Recommends: erlang-mode but it is not going to be installed
git : Depends: libcurl3-gnutls (>= 7.16.2-1) but it is not going to be installed
Depends: perl-modules but it is not going to be installed
Depends: liberror-perl but it is not going to be installed
Depends: git-man (> 1:1.7.9.5) but it is not going to be installed
Depends: git-man (< 1:1.7.9.5-.) but it is not going to be installed
Recommends: patch
Recommends: rsync
Recommends: ssh-client
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
Existe uma maneira de esl-erlang
fechar o pacote sem executar apt-get install -f
?
Eu quero algo como isto:
sudo apt-get install --ignore-deps-for-package=esl-erlang git
ou assim:
sudo apt-cache shut-package-up esl-erlang
ou isto:
sudo apt-get download git
sudo dpkg -i --with-deps git.deb
Encontrei uma pergunta semelhante: /server/250224/how-do-i-get-apt-get-to-ignore-some-dependencies . Algumas respostas fornecem etapas manuais úteis para modificar as dependências de determinados pacotes.
Ainda estou procurando um método automatizado robusto.
fonte
--nodeps
(apt-get
) ou--ignore-depends
comdpkg
?Respostas:
Entendo o ponto de vista de bjanssen, mas parece ridículo para um gerente de pacotes permitir
--force-depends
uma única instalação de pacote, mas não permitir que a força dependa sempre e pare de me avisar sobre essa dependência.Eu tive um problema semelhante com um pacote que dependia de uma versão do libcairo ligeiramente superior à versão atualmente disponível no Debian. Para meus propósitos, ainda funciona bem. Fico feliz em continuar usando-o até que a atualização da libcairo apareça no apt. Não quero compilar a partir do código-fonte ou criar meu próprio pacote.
A solução que encontrei:
/var/lib/dpkg/status
,Depends:
linha para parar a reclamação do pacote.Presumo que será substituído na próxima vez que o pacote for atualizado, mas é exatamente isso que eu quero.
fonte
O que você tenta fazer é contra o objetivo de um gerenciador de pacotes, que tenta manter um ambiente saudável, como você está usando a ferramenta errada para o trabalho. Não tente quebrar o apt-get.
A maneira certa de resolver seu problema é criar seu próprio pacote com dependências adequadas a você. Existe a maneira oficial (bastante envolvida: http://www.debian.org/doc/manuals/maint-guide/index.en.html ) e a maneira rápida e suja de usar
apt-build
, ou para pacotes que não estão na fonte de distribuição,checkinstall
. Todos os pacotes de produção que o apt-get serão instalados com facilidade.Em uma nota final, você pode questionar a sabedoria do mantenedor do esl-erlang para incluir certas dependências, mas não pode culpar o gerenciador de pacotes pelo comportamento pretendido. Se você acha que essas dependências estão erradas, deve registrar um erro no pacote.
fonte
libmng1
. Mas eu tinhalibmng2
instalado E um link simbólico definido comolibmng1.so
. Trabalhou uma ameaça, nunca teve problemas. Masapt-get
sempre reclamou de "dependências não atendidas". Definitivamente, há uma boa razão para tentar encontrar uma maneira de silenciar a aptidão a esse respeito. Desde que as coisas fazer o trabalho, ele simplesmente continua reclamando por coisas que simplesmente são nenhum problema. Apenas vê problemas onde eles não são nenhum. E isso é chato.equivs
"silenciamento" do apt-get sem quebrá-lo.Verifique se o "proxy usado" no
apt.conf
é adequado (ou seja, de acordo com a sua rede). Isso também causa esses problemas, pois os URLs seriam inacessíveis.Normalmente, se você estiver usando proxy,
/etc/apt/apt.conf
será o seguinte:fonte