sobreviviendo a un emerge --depclean

Cabezon's picture

depclean es la opción más peligrosa de emerge. Es equiparable al deborphan de Debian (creo que el nombre es así)

Como reza su man:

"Determines all packages installed on the system that have no explicit reason for being there."

Pero lo peor es el warning:
"WARNING: Removing some packages may cause packages which link to the removed package to
stop working and complain about missing libraries"

La cosa es que el único que había hecho hasta ahora me había dejado como resultado un sistema insalbable (para mi), y de eso ya hace unos años.
Pero como el servidor de esta web lo quiero mantener muy limpito, me decidí a hacerlo. (Bueno, y lo hice en el del curro, donde me eliminó 20 paquetes... y sigo vivo!)

Lo primero:

#emerge -p --depclean
Nos indica que antes de hacerlo, hay que hacer un emerge -uD world, así que lo realizamos y volvemos al depclean. Ahora tenenmso lo siguiente:

[...] Rollo que asusta [...]

>>> 'Selected' packages are slated for removal.
>>> 'Protected' and 'omitted' packages will not be removed.

Packages installed: 249
Packages in world: 31
Packages in system: 56
Unique package names: 249
Required packages: 244
Number to remove: 5

sys-devel/bc
selected: 1.06-r6
protected: none
omitted: none

sys-libs/cracklib
selected: 2.8.9
protected: none
omitted: none

perl-core/Test-Simple
selected: 0.62
protected: none
omitted: none

sys-libs/pam
selected: 0.78-r3
protected: none
omitted: none

sys-libs/libstdc++-v3
selected: 3.3.4
protected: none
omitted: none

Evidentemente en el servidor hay 4 paquetes (bueno, 31 en word) y es relativamente nuevo...
Miramos por encima que es lo que trata de eliminar, y tras ver que el único paquete importante es cracklib, quitamos la -p y hacemos el depclean.

Una vez hecho, hay que hacer un revdep-rebuild para ver si a algun paquete le falata alguna dependencia:

# revdep-rebuild -p
Configuring search environment for revdep-rebuild

Checking reverse dependencies...

Packages containing binaries and libraries broken by a package update
will be emerged.

Collecting system binaries and libraries... done.
(/root/.revdep-rebuild.1_files)

Collecting complete LD_LIBRARY_PATH... done.
(/root/.revdep-rebuild.2_ldpath)

Checking dynamic linking consistency...
broken /bin/passwd (requires libcrack.so.2)
broken /usr/lib/apache2/modules/libphp5.so (requires libpam.so.0)
broken /usr/lib/php5/bin/php (requires libpam.so.0)
broken /usr/lib/php5/bin/php-cgi (requires libpam.so.0)
done.
(/root/.revdep-rebuild.3_rebuild)

Assigning files to ebuilds... done.
(/root/.revdep-rebuild.4_ebuilds)

Evaluating package order... done.
(/root/.revdep-rebuild.5_order)

All prepared. Starting rebuild...
emerge --oneshot -p =dev-lang/php-5.1.6-r6 =sys-apps/shadow-4.0.15-r2

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild R ] dev-lang/php-5.1.6-r6
[ebuild N ] sys-libs/cracklib-2.8.9-r1 USE="nls python"
[ebuild R ] sys-apps/shadow-4.0.15-r2 USE="cracklib%*"
Now you can remove -p (or --pretend) from arguments and re-run revdep-rebuild.

Uooo! cracklib?¿ pero si acaba de borrarlo?¿!!! En fin, su motivo tendrá.

quitamos la -p del revdep-rebuild y lo ejecutamos.

Al terminar, siempre es bueno volver a ejecutar el revdep-rebuild, para comprobar que nada queda huérfano.

Así que, y en resumen, depclean no es tan malo (siempre que mires que te está eliminando, claro), y los comandos a ejecutar:

emerge -uD world
emerge --depclean
revdep-rebuild
revdep-rebuild

salu2