
Estou executando o Debian Wheezy de 64 bits. Recentemente, quando o faço, apt-get upgrade
recebo isto:
The following packages have been kept back:
libsmbclient libtevent0 samba-libs
Está me deixando louco. Eu apenas removi o samba porque não o uso de qualquer maneira, mas algum gênio fez o Gnome depender dele:
# apt-get remove libsmbclient
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
gnome gnome-core gvfs-backends libgnomevfs2-extra libsmbclient mencoder mplayer
Como faço para atualizar esses pacotes com segurança?
Não há muito material personalizado instalado:
deb http://ftp.pl.debian.org/debian/ wheezy main
deb-src http://ftp.pl.debian.org/debian/ wheezy main
deb http://security.debian.org/ wheezy/updates main
deb-src http://security.debian.org/ wheezy/updates main
# wheezy-updates, previously known as 'volatile'
deb http://ftp.pl.debian.org/debian/ wheezy-updates main
deb-src http://ftp.pl.debian.org/debian/ wheezy-updates main
# wheezy-backports
deb http://ftp.pl.debian.org/debian/ wheezy-backports main contrib non-free
# virtualbox
deb http://download.virtualbox.org/virtualbox/debian/ wheezy contrib
[ATUALIZAR]
O que eu tentei:
apt-get dist-upgrade
- o resultado é o mesmo (os pacotes foram retidos).- usado
aptitude
, mas tudo o que sugere é remover o gnome e alguns outros pacotes relacionados ao gnome e instalar muitos pacotes i386 (parece apenas libs). apt-get install libsmbclient
dálibsmbclient : Depends: samba-libs (= 2:4.1.9+dfsg-1~bpo70+1) but it is not going to be installed
apt-get install libtevent0
dálibtevent0 : Depends: libtalloc2 (>= 2.1.0) but 2.0.7+git20120207-1 is to be installed
.apt-get install samba-libs
dásamba-libs : Depends: samba-dsdb-modules (= 2:4.1.9+dfsg-1~bpo70+1) but it is not going to be installed
[ATUALIZAÇÃO 2]
Parece que a origem deste problema está em algum lugar no repositório backports. Eu estava experimentando o Bumblebee e também algumas coisas de extração de DVD uma vez e lembro que tive que instalar algo de backports. Eu não preciso mais disso. O Bumblebee falhou de qualquer maneira no meu hardware e o DVD foi copiado no Windows no final :(
Agora eu fiz aptitude search '~S ~i ~Abackports'
e consegui isso:
i initramfs-tools - generic modular initramfs generator
i A libavutil53 - Libav utility library
i libldb1 - LDAP-like embedded database - shared library
i A libnettle4 - low level cryptographic library (symmetric and one-way cryptos)
i A libntdb1 - New Trivial Database - shared library
i A libopus0 - Opus codec runtime library
i libswscale2 - Libav video scaling library
i A libtdb1 - Trivial Database - shared library
i A libwbclient0 - Samba winbind client library
i A python-talloc - hierarchical pool based memory allocator - Python bindings
i samba-common - common files used by both the Samba server and client
Acho que devo fazer o downgrade desses pacotes e tudo ficará bem. Estou certo? Como devo fazer isso?
[ATUALIZAÇÃO 3]
Tentei remover ou fazer downgrade desses pacotes do repositório backports e consegui fazer isso apenas parcialmente.
Quando quis fazer o downgrade, libntdb1
percebi que ele não existe no repositório estável. Quando tentei removê-lo - novamente, o apt também queria remover o gnome. Quando fiz apt-cache rdepends libntdb1
isso, descobri que apenas a dependência reversa é samba-libs
. Também não há samba-libs
repositório estável E também não consigo removê-lo porque, mais uma vez, ele tenta remover o gnome e um monte de coisas. Que diabos está acontecendo aqui? Observe que samba-libs
não está listado quando eu faço isso aptitude search '~S ~i ~Abackports'
. Como se livrar dessa coisa?
Além disso, quando tentei fazer o downgrade libldb1
e libwbclient0
não consegui porque apt
queria remover o gnome em ambos os casos. Por que?
Então agora acabei com três pacotes do repositório backports listados com aptitude search '~S ~i ~Abackports'
:
i libldb1 - LDAP-like embedded database - shared library
i A libntdb1 - New Trivial Database - shared library
i A libwbclient0 - Samba winbind client library
E samba-libs
isso aparentemente também vem de backports, mas não está listado comaptitude search '~S ~i ~Abackports'
Responder1
É possível fazer downgrade de pacotes deb para um repositório específico usando apt
:
# apt-get install libsmbclient/wheezy libtevent0/wheezy samba/wheezy
- A construção "[pacote]/wheezy" significa que o usuário deseja o pacote do repositório wheezyapenase não o mais novo.
- É importante especificartodospacotes desejados de uma só vez, para que
apt
possa resolver as dependências corretamente e extrair outros pacotes wheezy.
Se apt
não for solicitado a exclusão de pacotes importantes que você deseja manter, pronto. Haverá alguns avisos sobre problemas de dependência, mas você pode ignorar esses avisos, desde que não sejam fatais.
Após o downgrade ser bem-sucedido, bibliotecas como libtevent0, libldb1 etc. não serão mais necessárias. Você pode usar apt-get --purge autoremove
e/ou deborphan
(se estiver instalado) para localizar e limpar pacotes órfãos não úteis no sistema.
(Minha resposta anterior será invalidada, será excluída em breve, está incorreta de qualquer maneira - é possível fazer o downgrade com apt
)
Responder2
Eu uso o solucionador de pacotes interativo do aptitude:
correr sudo aptitude
. Em seguida, digite U
(você maiúsculo) para dizer que deseja atualizar tudo. Ele lhe dirá que há conflitos e fará uma proposta para resolvê-los. use e
para entrar no solucionador interativo e, em seguida, .
(ponto) e ,
(vírgula) para iterar sobre as diferentes soluções que encontrará e, em seguida, !
para aceitar uma das soluções.
Você também pode tentar ajudá-lo a encontrar uma solução melhor (para você) indo para uma parte da solução (onde, por exemplo, propõe remover o gnome) e dizendo que deseja aceitar (com A
) ou recusar (com R
) isso isso acontece.
Responder3
Solução mais rápida e fácil:
Você deve instalar cada pacote individualmente.
Veja issoSuperusuáriosolução: pacotes apt mantidos solução
Aviso: Não corra sudo apt-get dist-upgrade
até que você tenha instalado completamente os pacotes necessários. DEPOIS, e SOMENTE DEPOIS disso, você pode executar sudo apt-get update
&sudo apt-get dist-upgrade
Responder4
Abra um Terminal e digite:
apt-cache rdepends packagename
e substituanome do pacotecom o pacote que você deseja remover e listará os pacotes que precisam do pacote que você está tentando remover, remova esses pacotes primeiro e depois tente remover o pacote real.