Tip (X): add-apt-repository en BunsenLabs Hydrogen

Un comando muy habitual sin duda para distribuciones principalmente basadas en Debian/ubuntu y que nos ayuda a gestionar mas o menos automáticamente, tanto el poder añadir repositorios como el de poder registrar sus llaves en el sistema.

add-apt-repository en BunsenLanbs Hydrogen


Para poder utilizar dicho comando por una parte deberemos tener instalado el paquete correspondiente, disponible desde software-properties-common,

$ sudo apt-get install software-properties-common

y tener su correspondiente template o plantilla, disponible desde la carpeta /usr/share/python-apt/templates donde contiene toda la información que necesita la aplicación para poder procesar adecuadamente con la distribución en la que se encuentre.

Tras su instalación en Debian Jessie nos encontramos con las plantilas para la propia Debian y adicionales como Blankon, gNewSense, Tanglu y ubuntu. Hay otras muchísimas distribuciones que utilizan este comando si bien deberán aportar como recurso adicional dicha plantilla, como es el caso por ejemplo de elementary OS.

Templates

El comando add-apt-repository, que es en realidad un programa realizado en python, para identificar la plantilla a utilizar, hace uso del comando lsb_release el cual le proporciona distinta información sobre la distro y release.

add-apt-repository exception

Como resultado tras la ejecución de comando y como se podría prever, nos es posible su ejecución mostrando el correspondiente error, como se puede leer en la captura anterior, indicando que no se encuentra una plantilla para BunsenLabs/Hydrogen.

Tenemos varias opciones para arreglar esto, una de ellas y ya que BunsenLabs/Hydrogen se basa totalmente en Debian Jessie, es simplemente indicarle de alguna manera que utilice la de esta última.

Para ello editamos el programa distro.py situado en la carpeta /usr/lib/python3/dist-packages/aptsources/, no sin hacer una copia previamente del mismo,

$ cd /usr/lib/python3/dist-packages/aptsources
$ sudo cp distro.py distro.py.old
$ sudo geany distro.py

distropy

y buscamos la rutina _lsb_release(), dejandola como a continuación,

def _lsb_release():
    """Call lsb_release --idrc and return a mapping."""
    from subprocess import Popen, PIPE
    import errno
    #result = {'Codename': 'sid', 'Distributor ID': 'Debian',
    #          'Description': 'Debian GNU/Linux unstable (sid)',
    #          'Release': 'unstable'}
    #try:
    #    out = Popen(['lsb_release', '-idrc'], stdout=PIPE).communicate()[0]
        # Convert to unicode string, needed for Python 3.1
    #    out = out.decode("utf-8")
    #    result.update(l.split(":\t") for l in out.split("\n") if ':\t' in l)
    #except OSError as exc:
    #    if exc.errno != errno.ENOENT:
    #        logging.warning('lsb_release failed, using defaults:' % exc)
    
    result = {'Codename': 'jessie', 'Distributor ID': 'Debian',
              'Description': 'Debian GNU/Linux stable (jessie)',
              'Release': 'stable'}      
              
            
    return result

básicamente hemos comentado toda la rutina y hemos añadido el código necesario para que el resultado de la misma devuelva los valores correspondientes a Debian Jessie, tras esto salvamos y ya estaría listo el programa para su ejecución. Eso sí, entre los diferentes formatos que soporta, conviene utilizar el siguiente,

$ sudo add-apt-repository "deb http://ppa.launchpad.net/numix/ppa/ubuntu trusty main"

add-apt-repository ok
ya que es la manera más fácil de indicarle que de ese repositorio queremos utilizar una release o codename en concreto, que en el ejemplo anterior seria trusty. Tendremos que hacer una consulta rápida de las que estén disponibles, de no estarlo elegiremos otra, por ejemplo precise.

version

De querer borrar el mismo repositorio, basta con añadir el parámetro -r , quedando como a continuación,

$ sudo add-apt-repository -r "deb http://ppa.launchpad.net/numix/ppa/ubuntu trusty main"

Hasta el momento, en los ejemplos hemos añadido PPA’s, ¿ Pero, podemos añadir otros repositorios que no sean de este tipo ?

La respuesta es que sí, pero requiere un paso adicional, en lo que se refiere a su clave o llave del repositorio, ya que el comando add-apt-repository no es capaz de añadirlas como hace con las PPA’s.

Por ejemplo para el caso de querer instalar Google Chrome seria,

$ sudo add-apt-repository "deb http://dl.google.com/linux/deb/ stable main"
$ sudo apt-get update

Captura de pantalla - 080815 - 11:24:09

tras el apt-get update el sistema no avisa de que todavía no hemos añadido su clave. Por tanto para su inserción manual lo haremos mediante el comando apt-key junto con la clave que nos muestra en pantalla, quedando como a continuación,

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A040830F7FAC5991
$ sudo apt-get update
$ sudo apt-get install google-chrome-stable

Para el borrado del mismo y como en el caso anterior, tendremos que añadir el parámetro -r , quedando como a continuación,

$ sudo add-apt-repository -r "deb http://dl.google.com/linux/deb/ stable main"

Interesante el poder dominar el comando apt-key y de esta manera estar al tanto de todas las llaves que tenemos añadidas al sistema. Por ello, para poder listar todas,

$ sudo apt-key list

Captura de pantalla - 080815 - 18:32:19

y de esta manera podemos comprobar que al igual que la llave de Google Chrome la añadimos manualmente, también la tendremos que eliminar de esta manera.

$ sudo apt-key del 7FAC5991

Pues eso es todo, por cierto si alguien se quedo a medias con el post Plank 0.9.1 en Debian Jessie , este tip os puede valer ;)

Esta entrada fue publicada en articulo, CrunchBang, Debian, GNU/Linux, Openbox, ubuntu y etiquetada , , , , , , , , , . Guarda el enlace permanente.

4 respuestas a Tip (X): add-apt-repository en BunsenLabs Hydrogen

  1. scarthon dijo:

    Un gran saludo yunn!!
    desde lo mas profundo de mi corazón te felicito, por compartir tus conocimientos a toda la comunidad Linux. como siempre genial bien detallado y esplicado gracias!!

  2. Elkin dijo:

    Saludos !! muy buena la info… seee muy buena! pero tengo una pregunta… desde la misma debian dicen que por seguridad no es bueno incluir esta funcion al estilo de ubuntu … por que? ?es recomendable o no?

    • yunn dijo:

      Hola Elkin, como te diria, para Debian cualquier repositorio que añadas que no sean los suyos, los consideran inestables y pueden dejar inestable el sistema. Independiente de la herramienta que utilices para añadir los mismos. Por tanto lo unico que tienes que asegurarte es que el repositorio que añadas, sea PPA o sea cualquier otro, es que confies de alguna manera, respecto a su calidad y estabilidad. Saludos,

Deja un comentario