ES: Overlays y Layman

OVERLAYS Y LAYMAN

De igual manera que en otras distros GNU/Linux hay repositorios de programas además de los oficiales de la distro, en Gentoo tenemos para eso los llamados overlays. Un overlay es un árbol alternativo al árbol de programas disponibles en Portage. Se llaman “overlay”, capa superpuesta, pues se sitúan (normalmente) antes del árbol de Portage para disponer de otro software no “oficial”, o de versiones más modernas, beta o en pruebas.

Lógicamente, los overlays, al igual que el árbol de Portage que está en /usr/portage/, no contienen paquetes con binarios como las demás distros, sino los conocidos ebuils. Los ebuils no contienen binarios (ejecutables) y ni siquiera las fuentes, sino sólo unos sencillos documentos de texto plano que le indican a Portage-emerge donde están las fuentes, cuáles son sus dependencias y dónde están, y las instrucciones para configurar, compilar e instalarlo todo en tu sistema Gentoo.

Los overlays se pueden utilizar de manera manual, descargándolo y añadiendo la ruta a él en el archivo de configuración principal de Portage /etc/portage/make.conf añadimos:

# mi overlay:
PORTDIR_OVERLAY=”/home/usuario/overlay”

Pero la manera más cómoda de gestionar overlays en mediante Layman.

Layman nos permite gestionar fácilmente y de manera centralizada muchos repositorios, activarlos o desactivarlos, organizarlos, actualizarlos, etc.

Para emerger (descargar+compilar+instalar en lenguaje gentoo Layman:

sudo emerge -a layman

Si usted es un usuario de Gentoo Linux que agregó la superposición de sabayon, o si es un usuario de Sabayon Linux que ya usa Portage, tenga en cuenta que los desarrolladores de Sabayon Linux acaba de dividir la superposición en dos superposiciones. Una de las superposiciones (sabayon-distro) contiene ebuilds que son específicos de la distribución de Sabayon Linux y es poco probable que sean de interés para los usuarios de otras distribuciones que utilizan el gestor de paquetes de Portage. La otra superposición (sabayon) contiene ebuilds que podrían ser de interés para los usuarios de Portage de otras distribuciones. Por ejemplo, el paquete app-misc / sabayon-version solo será relevante para los usuarios de Sabayon Linux, por lo que solo lo encontrarás en la superposición sabayon-distro, no en la superposición sabayon:

calculate ~ # layman -a sabayon

* Adding overlay…
* Overlay “sabayon” is not official. Continue installing? [y/n]: y
* Running Git… # ( cd /var/lib/layman && /usr/libexec/calculate/cl-git-wrapper clone git://github.com/Sabayon/for-gentoo.git /var/lib/layman/sabayon )
Cloning into ‘/var/lib/layman/sabayon’…
remote: Counting objects: 93203, done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 93203 (delta 14), reused 40 (delta 9), pack-reused 93149
Receiving objects: 100% (93203/93203), 57.76 MiB | 937.00 KiB/s, done.
Resolving deltas: 100% (56510/56510), done.
* Running Git… # ( cd /var/lib/layman/sabayon && /usr/libexec/calculate/cl-git-wrapper config user.name “layman” )
* Running Git… # ( cd /var/lib/layman/sabayon && /usr/libexec/calculate/cl-git-wrapper config user.email “layman@localhost” )
* Successfully added overlay(s) sabayon.

calculate ~ # layman -a sabayon-distro

* Adding overlay…
* Overlay “sabayon-distro” is not official. Continue installing? [y/n]: y
* Running Git… # ( cd /var/lib/layman && /usr/libexec/calculate/cl-git-wrapper clone git://github.com/Sabayon/sabayon-distro.git /var/lib/layman/sabayon-distro )
Cloning into ‘/var/lib/layman/sabayon-distro’…
remote: Counting objects: 116638, done.
remote: Compressing objects: 100% (500/500), done.
remote: Total 116638 (delta 87), reused 409 (delta 40), pack-reused 116097
Receiving objects: 100% (116638/116638), 64.56 MiB | 887.00 KiB/s, done.
Resolving deltas: 100% (67903/67903), done.
* Running Git… # ( cd /var/lib/layman/sabayon-distro && /usr/libexec/calculate/cl-git-wrapper config user.name “layman” )
* Running Git… # ( cd /var/lib/layman/sabayon-distro && /usr/libexec/calculate/cl-git-wrapper config user.email “layman@localhost” )
* Successfully added overlay(s) sabayon-distro.

Lo primero que hay que hacer es informar a Portage de que existe layman y sus overlays. Como siempre, en el archivo principal de Portage /etc/portage/make.conf añadimos:

# overlays de Layman:
source /var/lib/layman/make.conf

como vemos, le hemos informado a Portage de que a partir de ahora también tenga en cuenta lo que diga el archivo de configuración de Layman, que está en /var/lib/layman/make.conf. Después hablaremos de este archivo.

Uso de Layman:

lista de todos los overlays que nos permite administrar layman:

layman -L

añadir un overlay a tu sistema:

sudo layman -a nombre-overlay

lista los overlays ya descargados en el sistema:

layman -l (ele minúscula)

actualizar un overlay:

sudo layman -s nombre-overlay

actualizar todos los overlays instalados:

sudo layman -S

información sobre un overlay:

layman -i nombre-overlay

eliminar un overlay:

sudo layman -d nombre-overlay

calculate ~ # layman -d sabayon

* Deleting selected overlay(s)…
* Deleting directory “/var/lib/layman/sabayon”
* Successfully deleted overlay(s) sabayon.

Más información: man layman

Al añadir un overlay, Layman le crea un directorio con su nombre en /var/lib/layman/ y lo añade automáticamente en el archivo /var/lib/layman/make.conf

Layman asigna por defecto una prioridad 50 a todo overlay que instala, lo que se puede ver en /var/lib/layman/installed.xml. Por lo que como el árbol de Portage tiene por defecto una prioridad de -1000, los overlays de Layman tienen prioridad. Layman va instalando los más nuevos al final, por los que les da más prioridad.

Para manejar las prioridades de todos los overlays del sistema, lo mejor es utilizar el archivo /var/lib/layman/make.conf

Un ejemplo de este podría ser:

PORTDIR_OVERLAY=”
/var/lib/layman/mozilla
/var/lib/layman/xfce-dev
$PORTDIR_OVERLAY

Vemos que hay dos overlays añadidos con Layman, “xfce-dev” y “mozilla” y al final está la variable que apunta a un overlay personal que yo pueda tener, que sería como vimos antes:

# mi overlay:
PORTDIR_OVERLAY=”/home/usuario/overlay”

incluido en mi /etc/portage/make.conf

El orden en este archivo determina una prioridad inversa, o sea, que cuanto más abajo está el overlay, más prioridad tiene, por lo que en nuestro caso sería:

$PORTDIR_OVERLAY (el primero)
/var/lib/layman/xfce-dev (el segundo en prioridad)
/var/lib/layman/mozilla (el tercero)

Como en el archivo no se hace referencia al árbol de Portage, este sigue teniendo la última prioridad (la más baja, -1000).

Podemos consultar la prioridad de todos nuestros árboles (overlays) mediante el comando:

emerge --info --verbose

(*) Pero atención pues en la respuesta a este comando a mayor número mayor prioridad. Por lo que 3 tiene más prioridad que 2, y 2 más que 1, y 1 más que 0, y 0 más que -1000 (menos mil).

Para terminar, un truco que me parece interesante. Teniendo en cuenta que Portage, siempre instalará por defecto la versión más moderna de un paquete que encuentre en todos nuestros overlays (independientemente de las prioridades que estos tengan), es un buen consejo de seguridad darle la mayor prioridad al árbol de Portage. De esa manera, ante dos paquetes de la misma versión, Portage instalará siempre la versión oficial de Gentoo (la del árbol principal de Portage), y si hay una versión más moderna en otro overlay, instalará esta última.
Para ello:

en nuestro /var/lib/layman/make.conf

añadimos al final:

${PORTDIR}

con lo que en el ejemplo de antes quedaría:

PORTDIR_OVERLAY=”
/var/lib/layman/xfce-dev
/var/lib/layman/mozilla
/var/lib/layman/ubuntu
$PORTDIR_OVERLAY
${PORTDIR}

de esta manera, como ${PORTDIR} es la variable que en nuestro /etc/porteg/make.conf define el árbol principal de Portage, así:

PORTDIR=”/usr/portage”

lo que estamos haciendo es darle prioridad al árbol de Portage, luego a nuestro overlay personal si lo tenemos, y después a los overlays de Layman (cuanto más arriba, menos prioridad).

Un ejemplo práctico del uso de overlays con Layman:

Quiero instalar imagewriter, la excelente herramienta de OpenSuse para crear imágenes desde una ISO en un USB. Como no lo encuentro en Portage, busco aquí:
http://gpo.zugaina.org/

me informa de que está en el overlay gentoo-zh (layman).

Lo busco en Layman:

layman -L

y lo añado:

sudo layman -a gentoo-zh

sudo emerge -a imagewriter

ACTUALIZAR
calculate ~ # eix-update
Reading Portage settings…
Building database (/var/cache/eix/portage.eix)…
[0] “gentoo” /usr/portage/ (cache: metadata-md5-or-flat)
Reading category 164|164 (100) Finished
[1] “distros” /var/lib/layman/distros (cache: parse|ebuild*#metadata-md5#metadata-flat#assign)
Reading category 164|164 (100) EMPTY!
[2] “calculate” /var/lib/layman/calculate (cache: parse|ebuild*#metadata-md5#metadata-flat#assign)
Reading category 164|164 (100) Finished
[3] “qt” /var/lib/layman/qt (cache: parse|ebuild*#metadata-md5#metadata-flat#assign)
Reading category 164|164 (100) Finished
[4] “sabayon” /var/lib/layman/sabayon (cache: parse|ebuild*#metadata-md5#metadata-flat#assign)

Para sincronizar el árbol principal de Portage y sincronizar todas las superposiciones añadidas en su máquina
calculate ~ # emerge --sync
calculate ~ # layman -S
calculate ~ # eix-update

O, si tiene un asterisco en su propia línea en el archivo /etc/eix-sync.conf, puede reemplazar los tres comandos anteriores por el siguiente comando:
calculate ~ # eix-sync


OVERLAYS

calculate ~ # layman -a steam-overlay
calculate ~ # layman -a gentoo
calculate ~ # layman -a blossom-overlay Overlay “blossom-overlay” does not exist
calculate ~ # layman -a deby-overlay Overlay “deby-overlay” does not exist
calculate ~ # layman -a funtoo-shard Overlay “funtoo-shard” does not exist
calculate ~ # layman -a gamerlay
calculate ~ # layman -a sapher

overlay
Funtoo and Gentoo overlay repository
Contents
Fresh ebuilds waiting for addition to the official portage tree.
Packages that don’t fit to the official portage tree.
git clone https://code.gnuardo.com/gerardo/overlay gnuardo
echo ‘PORTDIR_OVERLAY="$PWD/gnuardo"’ >> /etc/portage/make.conf

calculate # mkdir -p /var/overlays
calculate # git clone https://github.com/apinsard/sapher-overlay.git /var/overlays/sapher
Cloning into ‘/var/overlays/sapher’…
remote: Counting objects: 692, done.
remote: Total 692 (delta 0), reused 0 (delta 0), pack-reused 692
Receiving objects: 100% (692/692), 170.60 KiB | 303.00 KiB/s, done.
Resolving deltas: 100% (317/317), done.
calculate local # cat > /etc/portage/repos.conf/sapher <<EOF

[sapher]
location = /var/overlays/sapher
sync-type = git
sync-uri = git://github.com/apinsard/sapher-overlay.git
auto-sync = yes
EOF

Instalación de overlay Sapher con emerge -a layman
calculate ~ # echo “source /var/lib/layman/make.conf” >> /etc/portage/make.conf
-su: /etc/portage/make.conf: Es un directorio
calculate ~ # cat > /etc/layman/overlays/sapher.xml <<EOF

<?xml version="1.0" ?>
sapher Pytony's Sapher overlay https://github.com/apinsard/sapher-overlay antoine.pinsard@gmail.com Antoine Pinsard git://github.com/apinsard/sapher-overlay.git EOF

calculate ~ # layman -f

* Fetching remote list…
* Fetch Ok

calculate ~ # layman -a sapher

* Adding overlay…
* Overlay “sapher” is not official. Continue installing? [y/n]: y
* Running Git… # ( cd /var/lib/layman && /usr/libexec/calculate/cl-git-wrapper clone git://github.com/apinsard/sapher-overlay.git /var/lib/layman/sapher )
Cloning into ‘/var/lib/layman/sapher’…
remote: Counting objects: 692, done.
remote: Total 692 (delta 0), reused 0 (delta 0), pack-reused 692
Receiving objects: 100% (692/692), 170.60 KiB | 295.00 KiB/s, done.
Resolving deltas: 100% (317/317), done.
* Running Git… # ( cd /var/lib/layman/sapher && /usr/libexec/calculate/cl-git-wrapper config user.name “layman” )
* Running Git… # ( cd /var/lib/layman/sapher && /usr/libexec/calculate/cl-git-wrapper config user.email “layman@localhost” )
* Successfully added overlay(s) sapher.