miércoles, julio 26, 2006

Script para ver sólo actualizaciones con emerge -up world (Gentoo linux)

Supongo que a más de uno le pasará como a mí, que a pesar de hacer uso de /etc/portage/package.keywords, algunos paquetes los emerge con el mítico ACCEPT_KEYWORDS="~x86". Eso unido a que a veces se enmascara una versión después de a ver sido publicada, etc..., hace que tras algún tiempo, no sería nada anormal que uno obtenga en la lista de paquetes a actualizar cuando hace emerge -up world --deep cosas como:

[ebuild     UD] app-text/libwpd-0.8.2 [0.8.4]
[ebuild     UD] net-libs/linc-1.0.3 [1.0.3-r1]
[ebuild     UD] dev-db/hk_classes-0.7.4a [0.8.1] USE="sqlite% -sqlite3%"
[ebuild     UD] dev-db/knoda-0.7.4-r1 [0.8.1]
[ebuild     U ] app-office/koffice-1.5.2 [1.5.1-r1]
[ebuild     U ] kde-base/kdenetwork-3.5.3-r2 [3.5.3-r1]
[ebuild     UD] media-libs/libquicktime-0.9.4 [0.9.7-r1]
[ebuild     U ] media-sound/amarok-1.4.1-r2 [1.4.1-r1] USE="-njb%"
[ebuild     UD] dev-libs/pwlib-1.6.3-r3 [1.10.1] USE="esd%"
[ebuild     UD] net-libs/openh323-1.13.2-r2 [1.15.6]
[ebuild  N    ] dev-java/iso-relax-20041111  USE="-source"
[ebuild  N    ] dev-java/msv-20050627  USE="-doc -jikes -source"
[ebuild  N    ] dev-java/xpp2-2.1.10  USE="-doc -jikes -source"
[ebuild  N    ] dev-java/xpp3-1.1.3.4m  USE="-doc -jikes -junit -source"
[ebuild  N    ] dev-java/dom4j-1.6.1  USE="-doc -source"
[ebuild     U ] app-pda/multisync-0.83_pre20050414-r4 [0.83_pre20050414-r2] USE="-gnokii% -nokia6600%"
[ebuild     U ] kde-base/kde-i18n-3.5.4 [3.5.3]
[ebuild     U ] app-i18n/koffice-i18n-1.5.2 [1.5.1] LINGUAS="-zh_TW%"
[ebuild     UD] media-tv/xawtv-3.94-r1 [3.95-r1]
[ebuild     UD] app-emulation/dosemu-1.2.2-r1 [1.3.2]
[ebuild  N    ] app-accessibility/speech-tools-1.2.3-r2  USE="-doc"
[ebuild  N    ] app-accessibility/festival-1.4.3-r3  USE="-asterisk -doc"

El cual está repleto de "D" que indica que se hará bajará de versión si quitamos la -p (pretend) del comando introducido.

Pues, bien, usando un poquito de grep y otros, es fácil recortar esa lista para omitir los ficheros que quieren bajar de versión. Para ello podemos crear un fichero llamado: /usr/local/bin/emerge-updates y ponerle el siguiente contenido:

#!/bin/bash
emerge -upD world | egrep "(NS? *|U )]" | cut -c 17- | egrep -o "([^-]*-[^0-9][^-]*)*" | xargs emerge $*


Todo el comando emerge en una sóla línea. Le damos permisos de ejecución: chmod +x /usr/local/bin/emerge-updates.

Y si ahora hacemos: emerge-updates -p obtendremos la lista con sólo las actualizaciones, que es bastante más manejable:

[ebuild     U ] app-office/koffice-1.5.2 [1.5.1-r1]
[ebuild     U ] media-sound/amarok-1.4.1-r2 [1.4.1-r1] USE="-njb%"
[ebuild     U ] app-pda/multisync-0.83_pre20050414-r4 [0.83_pre20050414-r2] USE="-gnokii% -nokia6600%"
[ebuild     U ] kde-base/kde-i18n-3.5.4 [3.5.3]
[ebuild     U ] app-i18n/koffice-i18n-1.5.2 [1.5.1] LINGUAS="-zh_TW%"
[ebuild  N    ] app-accessibility/speech-tools-1.2.3-r2  USE="-doc"
[ebuild  N    ] app-accessibility/festival-1.4.3-r3  USE="-asterisk -doc"
[ebuild  N    ] dev-java/iso-relax-20041111  USE="-source"
[ebuild  N    ] dev-java/msv-20050627  USE="-doc -jikes -source"
[ebuild  N    ] dev-java/xpp2-2.1.10  USE="-doc -jikes -source"
[ebuild  N    ] dev-java/xpp3-1.1.3.4m  USE="-doc -jikes -junit -source"
[ebuild  N    ] dev-java/dom4j-1.6.1  USE="-doc -source"

Si queremos proceder a la instalación de todos esos paquetes, tan sólo habría que omitir la -p, es decir ejecutar emerge-updates.

Espero que os sea de utilidad.

No hay comentarios: