Autounmask para Gentoo GNU/Linux

GNU/Linux, Gentoo 3 Comments

Autounmask es un herramienta escrita en perl para los que usamos Gentoo como distribución de GNU/Linux, básicamente se encarga de desenmascarar paquetes y sus dependencias a la rama inestable (testing).

Para ver un ejemplo de la gran utilidad de esta herramienta basta con decir que hace unos días pase a testing gnome con la versión 2.18, para eso, les dejo los paquetes que agregué a mi package.keywords en /etc/portage:

#Gnome 2.18
#gnome-base/gnome
#>=gnome-extra/evolution-data-server-1.10.0
#>=gnome-base/gnome-volume-manager-2.17.0
#>=www-client/epiphany-2.18.0
#>=net-analyzer/gnome-nettool-2.17.4
#>=x11-libs/libwnck-2.18.0
#>=gnome-base/eel-2.18.0.1
#>=gnome-extra/deskbar-applet-2.17.93
#>=dev-libs/atk-1.18.0
#>=gnome-base/libbonoboui-2.18.0
#>=gnome-extra/gnome-games-2.18.0
#>=dev-python/gnome-python-desktop-2.17.3
#>=x11-wm/metacity-2.17.8
#>=gnome-base/gnome-panel-2.18.0
#>=x11-libs/pango-1.15.4
#>=gnome-extra/yelp-2.18.0
#>=app-arch/file-roller-2.18.0
#>=gnome-extra/gcalctool-5.9.14
#>=gnome-base/libgnome-2.18.0
#>=app-text/evince-0.8.0
#>=x11-themes/gnome-icon-theme-2.17.1
#>=gnome-base/gconf-2.18.0.1
#>=gnome-extra/gucharmap-1.10.0
#>=gnome-extra/fast-user-switch-applet-2.17.4
#>=gnome-extra/zenity-2.18.0
#>=app-text/gnome-doc-utils-0.10.1
#>=gnome-extra/gnome-screensaver-2.18.0
#>=gnome-base/libgnomekbd-0.1
#>=gnome-base/libgnomeui-2.18.1
#>=gnome-extra/evolution-webcal-2.9.92
#>=gnome-extra/gnome-keyring-manager-2.17.0
#>=gnome-base/libgnomeprint-2.17.92
#>=gnome-extra/gconf-editor-2.17.0
#>=gnome-base/gnome-menus-2.18.0
#>=gnome-extra/gtkhtml-3.14.0
#>=gnome-base/gnome-vfs-2.18.0.1
#>=gnome-base/libgnomeprintui-2.18.0
#>=gnome-base/gnome-desktop-2.18.0
#>=gnome-extra/bug-buddy-2.17.4
#>=gnome-base/nautilus-2.18.0.1
#>=gnome-base/gdm-2.18.0
#sys-auth/consolekit
#>=media-sound/esound-0.2.37
#>=x11-themes/gtk-engines-2.10.0
#>=x11-terms/gnome-terminal-2.18.0
#>=x11-libs/vte-0.15.3
#>=gnome-base/gnome-applets-2.18.0
#>=app-editors/gedit-2.18.0
#>=gnome-base/control-center-2.18.0
#>=gnome-extra/gnome-power-manager-2.18.0
#>=sys-apps/hal-0.5.8
#app-misc/hal-info
#>=gnome-base/libbonobo-2.18.0
#>=gnome-extra/gnome-media-2.18.0
#>=x11-misc/alacarte-0.11.3
#>=net-misc/vino-2.18.0
#>=mail-client/evolution-2.10.0
#>=gnome-extra/nautilus-cd-burner-2.18.0
#>=media-gfx/eog-2.18.0.1
#>=media-video/totem-2.18.0
#>=gnome-base/gnome-keyring-0.8
#>=app-admin/sabayon-2.18.0
#>=gnome-base/gnome-session-2.18.0
#>=dev-libs/libIDL-0.8.8
#>=x11-themes/gnome-themes-2.18.0
#>=gnome-extra/gnome-utils-2.18.0
#gnome-base/libgnomekbd

Con todo esto, ya es posible actualizar gnome, pero aqui es donde entra autounmask, para desenmascarar gnome y todos sus paquetes basta con hacer:

autounmask gnome-base/gnome-2.18.0

Y en tu archivo packages.keywords se agregaran los paquetes antes mencionados automáticamente, aparte si hay que agregarlos al package.unmask por alguna razón también lo hace por si solo ;) .

Algo más, podemos no poner la versión del paquete y nos arrojará las versiones que encuentre, tanto en la bd de portage como los overlay’s que tengamos en make.conf.

Por ejemplo:

UnderHouse ~ # autounmask dev-lang/tk

autounmask version 0.21 (using PortageXS-0.02.07 and portage-2.1.2.7)

* Using repositories:
/usr/portage
/usr/local/portage
/usr/local/layman

* The given category/package-version does not seem to exist. Listing existing versions:

* gentoo (/usr/portage):
dev-lang/tk-8.4.9
dev-lang/tk-8.4.14

*  (/usr/local/portage):
dev-lang/tk-8.5.0

*  (/usr/local/layman):
none

* Please pick one of the versions given above and try again.

Como siempre los desarrolladores de gentoo haciendo herramientas útiles para todos los usuarios. Que lo disfruten :P.

Bueno, nos vemos :P.

Califica el tema:
1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5 out of 5)
Loading ... Loading ...

Listen y el bug con Dbus

GNU/Linux, Gentoo No Comments

Para los que no lo conoce, listen es un reproductor de audio muy parecido a Amarok (nativo de KDE), su página web oficial es: http://www.listen-project.org/.

Resulta que con su versión más reciente, la 0.5, causa problemas con el script que usa en conjunto con Dbus (escrito en python), el script en especifico se encuentra en: /usr/lib/listen/dbus_manager.py. Los errores son del tipo:

  File "/usr/lib/listen/listen.py", line 209, in ?

ListenApp()

File "/usr/lib/listen/listen.py", line 137, in __init__

self.listen_instance = Listen()

File "/usr/lib/listen/widget/listen.py", line 120, in __init__

self.dbus_service = ListenDBus(self,player)

File "/usr/lib/listen/dbus_manager.py", line 55, in __init__

dbus.service.Object.__init__(self, bus_name, object_path)

File "//usr/lib/python2.4/site-packages/dbus/service.py", line 418, in __init__

self._connection._register_object_path(object_path, self._message_cb, self._unregister_cb)

RuntimeError: To make asynchronous calls, receive signals or export
objects, D-Bus connections must be attached to a main loop by passing
mainloop=... to the constructor or calling
dbus.set_default_main_loop(...)

Existe un parche para arreglar el problema y poder arancar correctamente, el parche es el siguiente:

Index: dbus_manager.py
===================================================================
--- dbus_manager.py     (revision 670)
+++ dbus_manager.py     (working copy)
@@ -30,9 +30,18 @@
import dbus
import dbus.service
#Try connection du message bus
-    dbus.SessionBus()
-    if getattr(dbus, 'version', (0,0,0)) >= (0,41,0):
+    dbus_version = getattr(dbus, 'version',(0,0,0))
+    if dbus_version >= (0,41,0) and dbus_version < (0,80,0):
+        dbus.SessionBus()
import dbus.glib
+    elif dbus_version >= (0,80,0):
+        from dbus.mainloop.glib import DBusGMainLoop
+        DBusGMainLoop(set_as_default=True)
+        dbus.SessionBus()
+    else:
+        pass
+
+
except: dbus_imported = False
else: dbus_imported=True

@@ -41,14 +50,14 @@

if not dbus_imported:
class ListenDBus:
-        def __init__(self,win,player,object_path="/org/gnome/listen/"):
+        def __init__(self,win,player,object_path="/org/gnome/listen"):
self.player = player
self.win = win
print "No dbus support"
else:

class ListenDBus(dbus.service.Object):
-        def __init__(self,win,player,object_path="/org/gnome/listen/"):
+        def __init__(self,win,player,object_path="/org/gnome/listen"):
self.player = player
self.win = win
self.bus = dbus.SessionBus()
@@ -105,4 +114,4 @@
song = self.player.song
return str( song.get_str("title")+ " - ("+song.get_str("album")+" - "+song.get_str("artist")+")")
else:
-                return ""
No newline at end of file
+                return ""

Para aplicarlo, hacer lo siguiente como root:

cd /usr/lib/listen/
wget http://bugs.gentoo.org/attachment.cgi?id=112290&action=view
mv attachment.cgi?id=112290 listen-fix-dbus.diff
patch -p0 < listen-fix-dbus.diff

Versión de paquetes:
listen-0.5
dbus-python-0.81.0
dbus-1.0.2-r2

Ahora se, a disfrutar de listen :)…

_listen02%5B1%5D.png

Califica el tema:
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Next Entries »