
Estoy ejecutando Debian Wheezy de 64 bits. Recientemente, cuando lo hago, apt-get upgrade
recibo esto:
The following packages have been kept back:
libsmbclient libtevent0 samba-libs
Me esta volviendo loco. Pensé que simplemente eliminé samba porque de todos modos no la uso, pero algún genio hizo que Gnome dependiera de ello:
# 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
¿Cómo actualizo esos paquetes de forma segura?
No hay muchas cosas personalizadas instaladas:
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
[ACTUALIZAR]
Lo que probé:
apt-get dist-upgrade
- el resultado es el mismo (los paquetes se han retenido).- used
aptitude
, pero todo lo que sugiere es eliminar gnome y algunos otros paquetes relacionados con gnome e instalar una gran cantidad de paquetes i386 (parece solo libs). apt-get install libsmbclient
dalibsmbclient : Depends: samba-libs (= 2:4.1.9+dfsg-1~bpo70+1) but it is not going to be installed
apt-get install libtevent0
dalibtevent0 : Depends: libtalloc2 (>= 2.1.0) but 2.0.7+git20120207-1 is to be installed
.apt-get install samba-libs
dasamba-libs : Depends: samba-dsdb-modules (= 2:4.1.9+dfsg-1~bpo70+1) but it is not going to be installed
[ACTUALIZACIÓN 2]
Parece que la fuente de este problema se encuentra en algún lugar del repositorio de backports. Una vez estuve experimentando con Bumblebee y también con algunas cosas de extracción de DVD y recuerdo que tuve que instalar algo desde los backports. Ya no lo necesito. Bumblebee falló de todos modos para mi hardware y al final el DVD se extrajo en Windows :(
Ahora lo hice aptitude search '~S ~i ~Abackports'
y obtuve esto:
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
Creo que debería degradar estos paquetes y todo debería estar bien. ¿Estoy en lo cierto? ¿Cómo debería hacer eso?
[ACTUALIZACIÓN 3]
Intenté eliminar o degradar esos paquetes del repositorio de backports y logré hacerlo solo parcialmente.
Cuando quise bajar la versión, libntdb1
me di cuenta de que no existe en el repositorio estable. Cuando intenté eliminarlo, nuevamente, apt también quería eliminar gnome. Cuando lo hice, apt-cache rdepends libntdb1
resultó que solo existe la dependencia inversa samba-libs
. Tampoco hay samba-libs
un repositorio estable Y tampoco puedo eliminarlo porque, una vez más, intenta eliminar gnome y muchas cosas más. ¿Qué diablos está pasando aquí? Tenga en cuenta que samba-libs
no aparece en la lista cuando lo hago aptitude search '~S ~i ~Abackports'
. ¿Cómo deshacerse de esto?
Además, cuando intenté bajar la versión libldb1
y libwbclient0
no pude porque apt
quería eliminar gnome en ambos casos. ¿Por qué?
Así que ahora terminé con tres paquetes del repositorio de backports enumerados con 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
Y samba-libs
eso aparentemente también proviene de backports pero no figura en la listaaptitude search '~S ~i ~Abackports'
Respuesta1
Es posible degradar paquetes deb a un repositorio específico usando apt
:
# apt-get install libsmbclient/wheezy libtevent0/wheezy samba/wheezy
- La construcción "[paquete]/wheezy" significa que el usuario quiere el paquete del repositorio de wheezysoloy no el más nuevo.
- Es importante especificartodopaquetes deseados de una sola vez, para
apt
poder resolver las dependencias correctamente y extraer otros paquetes de Wheezy.
Si apt
no se le solicita eliminar paquetes importantes que desea conservar, está listo. Habrá algunas advertencias sobre problemas de dependencia, pero puede ignorarlas siempre y cuando no sean fatales.
Una vez que la degradación se realiza correctamente, las bibliotecas como libtevent0, libldb1, etc. ya no son necesarias. Puede usar apt-get --purge autoremove
y/o deborphan
(si está instalado) para buscar y limpiar paquetes huérfanos que no sean útiles en el sistema.
(Mi respuesta anterior será invalidada, se eliminará pronto, de todos modos es incorrecta; es posible bajar de categoría con apt
)
Respuesta2
Utilizo el solucionador de paquetes interactivo de aptitude:
correr sudo aptitude
. Luego escriba U
(es decir, u mayúscula) para indicar que desea actualizarlo todo. Le dirá que hay conflicto y le hará una propuesta para solucionarlo. use e
para ingresar al solucionador interactivo, y luego .
(punto) y ,
(coma) para iterar sobre las diferentes soluciones que encontrará, luego !
para aceptar una de las soluciones.
También puede intentar ayudarlo a encontrar una mejor solución (para usted) moviéndose a una parte de una solución (donde, por ejemplo, propone eliminar gnome) y decirle que desea aceptar (con A
) o rechazar (con R
) eso. lo hace.
Respuesta3
Solución más rápida y sencilla:
Debe instalar cada paquete individualmente.
Mira estoSuperusuariosolución: paquetes aptos retenidos solución
Advertencia: No corra sudo apt-get dist-upgrade
hasta que haya instalado completamente los paquetes que necesita instalar. DESPUÉS, y SÓLO DESPUÉS de eso, ¿puedes ejecutar sudo apt-get update
&sudo apt-get dist-upgrade
Respuesta4
Abra una Terminal y escriba:
apt-cache rdepends packagename
y reemplazarNombre del paquetecon el paquete que desea eliminar y enumerará los paquetes que necesitan el paquete que está intentando eliminar, elimine esos paquetes primero y luego intente eliminar el paquete real.