Sunday, February 3, 2008

Sísifo en Gentoo y expresiones regulares

Aún recuerdo cuando en segundo tuve una asignatura llamada Informática Teórica. ¡Qué aburrimiento! Fue de las asignaturas más peñazo que he tenido: gramáticas, expresiones regulares, autómatas, máquinas de turing... Y resulta que ahora, 3 años más tarde, todo eso vuelve con una utilidad asombrosa. Uno hasta se pregunta dónde estarán los apuntes de teórica.
Aunque no todo es perfecto: si bien me acuerdo hasta ahora de todo eso, la implementación en la práctica puede ser un poco distinta. Y por ejemplo, para buscar un archivo en el disco duro, la cosa se complica.
El problema se remonta al mencionado hace unos días networkmanager y su relación amor-odio con libnl. La cosa se vuelve surrealista, puesto que si bien la libnl-1.1 no compila y con la libnl-1.0_pre6-r1 me apañé, ahí no acaba todo. Tras un eix-sync veo que las fuentes tuxonice ya tienen disponible el kernel 2.6.24 con algunas mejoras que esperaba, entre otras cosas mejor gestión del ahorro de energía. Pues "emerge -avuDN world" y... error de dependencias! Networkmanager depende de libnl exactamente 1.0_pre6 y knetworkmanager de libnl estrictamente mayor que 1.0_pre6. Estupendo. Seguro que con los de gentoo están colaborando los ingenieros de Microsoft. Pero lo mas raro viene al hacer "emerge -av networkmanager knetworkmanager". Primero hizo un downgrade a pre6 y al ejecutarlo otra vez un upgrade a pre6-r1. ¿Y al invocarlo una tercera vez? ¡Otra vez downgrade! Y así hasta que te canses, como el mítico sísifo con su piedra. Y para rematar, tanto de una forma como de otra, la red funcionaba perfectamente. Así que decidí editar en ebuild hasta que lo solucionen.
Y aqui me quedé en blanco, hice un locate networkmanager.ebiuld y nada. Bueno, meteré un asterisco, lo mismo tiene la versión en el nombre o algo. Busco networkmanager*.ebuild y tampoco, nada. Paso siguiente: man ebuild. Resultado: ¡hondia, regexp! ¡Yo eso sé hacerlo... en papel!
Por desgracia, como frecuentemente pasa, en internet es muy dificil encontrar estas cosas, son muy fáciles para los que saben y muy difíciles para los newbies, así que nadie se molesta en explicarlo. Tras un rato largo encontré esta página, justo con la info que necesitaba. Y a partir de ahí, coser y cantar:
# locate networkmanager.*ebuild
# emacs /usr/portage/net-misc/networkmanager/networkmanager-0.6.5_p20070823.ebuild
# ebuild /usr/portage/net-misc/networkmanager/networkmanager-0.6.5_p20070823.ebuild digest
# emerge -avuDN world
Y mientras escribo esta entrada, se va compilando e instalando todo. Ahora a recompilar el kernel y a dormir, que es tarde. Jodó que friki suena eso.

No comments: