Portage es probablemente la más importante innovación de Gentoo en la gestión de software. Debido a su potente flexibilidad y una gran cantidad de funcionalidades, es frecuentemente apreciado como la mejor herramienta de gestión de software disponible para Linux.
Portage esta completamente escrito en Python y Bash y, por tanto, totalmente a la vista de los usuarios al ser ambos lenguajes interpretados.
Cuando un paquete de software es seleccionado para ser instalado, Portage descarga los archivos con el código fuente y los compila en ese momento, generando los archivos ejecutables y documentación correspondiente.
Es posible especificar las optimizaciones que emplear en la compilación, así como utilizar una variable llamada USE que indica la compatibilidad con otros programas.
La posibilidad de indicar las optimizaciones y el parámetro USE permiten crear una distribución a medida. De todas formas, Portage también soporta la instalación de binarios, ya sean paquetes precompilados por el mismo sistema o paquetes que se encuentran exclusivamente en formato binario.
Portage está inspirado en los Ports BSD, aunque implementa ciertas características avanzadas que no están presentes en los ports BSD: gestión de dependencias, afinamiento preciso de los paquetes a gusto del administrador, instalaciones falsas (al estilo OpenBSD), entornos de prueba durante la compilación, desinstalación segura, perfiles de sistema, paquetes virtuales, gestión de los ficheros de configuración y múltiples ranuras para distintas versiones de un mismo paquete.
Ultima versión estable publicada: 1.2.11.52 del 02/03/2013
La mayoría de usuarios trabajarán con Portage a través de la herramienta emerge. Este capítulo no pretende duplicar la información disponible en la página de man sobre emerge. Para una completa información sobre las opciones de emerge, por favor, consulte la página del manual:
Leer la página del manual sobre emerge.
Ebuilds.
Cuando hablamos sobre paquetes, nos referimos normalmente a programas software disponibles para los usuarios de Gentoo a través del árbol Portage. El árbol Portage es una colección de ebuilds, archivos que contienen toda la información que Portage necesita para mantener el software (instalar, buscar, ...). Estos ebuilds residen por defecto en /usr/portage.
Cuando se pida a Portage que ejecute alguna acción relacionada con los programas, éste utilizará los ebuilds de su sistema como base. Por tanto, es importante que actualice los ebuilds de su sistema para que Portage conozca el nuevo software, actualizaciones de seguridad, etc.
Actualizando el árbol Portage.
El árbol Portage se actualiza normalmente con rsync, una utilidad rápida de transferencia de archivos incremental. La actualización es muy sencilla, ya que la orden emerge proporciona una interfaz para rsync:
Actualizar el árbol Portage.
Ejecutar emerge-webrsync.
Mantenimiento de Software.
Buscar software.
Para buscar software utilizando el árbol de Portage, puede emplear las funcionalidades de búsquedas propias de emerge. Por defecto, emerge --search devuelve el nombre de los paquetes cuyo nombre coincide (tanto total como parcialmente) con el término de búsqueda introducido.
Por ejemplo, para buscar todos los paquetes que tengan "pdf" en su nombre:
Buscar paquetes cuyo nombre tenga pdf.
Buscar paquetes relacionados con pdf
Listado de Código 3.3: Ejemplo de salida de emerge –search
Una vez que haya encontrado el nombre del software que necesite, puede fácilmente instalarlo con emerge: simplemente añada el nombre del paquete. Por ejemplo, para instalar gnumeric:
Instalar gnumeric.
Simular la instalación de gnumeric
Descargar el código fuente de gnumeric
Muchos paquetes vienen con su propia documentación. Algunas veces, el parámetro USE doc determina si la documentación debe instalarse o no. Puede comprobar la existencia del parámetro USE doc con la orden emerge -vp <nombre paquete>.
Comprobar la existencia de del parámetro USE doc
Una vez que el paquete está instalado, su documentación se encuentra normalmente en un subdirectorio llamado igual que el paquete, bajo el directorio /usr/share/doc. También puede obtener un listado de todos los archivos instalados con la herramienta equery la cual es parte del paquete app-portage/gentoolkit.
Localizar la documentación de un paquete.
Como alternativa, utilizamos equery para localizar los archivos que nos interesan:
Cuando quiera desinstalar un paquete software de su sistema, utilice emerge --unmerge. Esto le indicará a Portage que desinstale todos los archivos instalados por el paquete en su sistema excepto los archivos de configuración de esa aplicación si la había modificado después de la instalación. Esto le permite continuar trabajando con los mismos archivos de configuración si alguna vez decide volver a instalar la aplicación.
Sin embargo, hemos de tener algo muy en cuenta: Portage no comprueba si el paquete que está intentando desinstalar es necesario para algún otro. A pesar de esto, le avisará cuando quiera eliminar un paquete importante que pueda romper su sistema si lo desinstala.
Desinstalar gnumeric del sistema.
Actualizando su Sistema.
Para mantener su sistema en perfecto estado (sin mencionar la instalación de los últimas actualizaciones de seguridad) necesita actualizarlo frecuentemente. Partiendo de que Portage solamente comprueba los ebuilds en su árbol Portage, lo primero sería actualizar el propio árbol. Cuando tenga el árbol Portage actualizado, puede actualizar su sistema con emerge --update world. En el siguiente ejemplo, además hemos utilizado el parámetro --ask que le indica a Portage que muestre la lista de paquetes que quiere actualizar y pregunte si se quiere continuar:
Actualizar su sistema.
Actualizar su sistema incluyendo las dependencias.
Actualizar su sistema completamente.
Si ha cambiado últimamente alguno de sus parámetros USE quizá quiera añadir también --newuse. Portage comprobará si los cambios requieren la instalación de nuevos paquetes o la recompilación de los existentes:
Realizar una actualización completa.
Meta-paquetes.
Algunos paquetes del árbol Portage no tienen contenido real pero son utilizados para instalar un conjunto de paquetes. Por ejemplo, el paquete kde-meta instalará un entorno KDE completo en su sistema incluyendo varios paquetes relacionados con KDE y también sus dependencias.
Si quiere desinstalar dicho paquete de su sistema, ejecutando emerge --unmerge sobre el paquete no tendrá efecto total ya que las dependencias permanecerán en su sistema.
Portage tiene la funcionalidad de eliminar las dependencias huérfanas, pero la disponibilidad de software necesita que primero actualice completamente su sistema, incluyendo los nuevos cambios que ha aplicado si actualizó los parámetros USE. Después de esto, puede ejecutar emerge --depclean para eliminar las dependencias huérfanas. Cuando haya terminado, necesitará reconstruir las aplicaciones que estuvieran enlazadas dinámicamente a las que acaban de ser eliminadas pero no son necesarias.
Todo esto se lleva a cabo a través de tres órdenes:
Desinstalar dependencias huérfanas.
Instalar el paquete gentoolkit.
A partir de la versión 2.1.7 de Portage, puede aceptar o rechazar la instalación de software basada en esta licencia. Todos los paquetes del árbol contienen una entrada LICENSE en sus ebuilds. Ejecutando emerge --search nombredepaquete le mostrará la licencia del paquete.
Por defecto Portage permite todas las licencias, excepto Acuerdos Finales de la Licencia de Usuario (End User License Agreements o EULAs) que requieren la lectura y firma de un acuerdo de aceptación.
La variable que controla las licencias permitidas es ACCEPT_LICENSE, la cual puede ser ajustada en /etc/portage/make.conf:
Puede ajustar ACCEPT_LICENSE globalmente en /etc/portage/make.conf, o puede especificarlo en de forma que afecte a solo un paquete en /etc/portage/package.license.
Por ejemplo, si quiere permitir la licencia truecrypt-2.7 para app-crypt/truecrypt, añada lo siguiente a /etc/portage/package.license:
Especificando una licencia truecrypt en package.license.
Importante: Las licencias se almacenan en /usr/portage/licenses, y los grupos de licencias se guardan en /usr/portage/profiles/license_groups. La primera entrada de cada línea en letras MAYÚSCULAS, es el nombre del grupo de licencias, y cada entrada detrás de ésta es una licencia individual. Los grupos de licencias definidos en ACCEPT_LICENSE se prefijan con un signo @. Se muestra un ejemplo de un sistema que globalmente permite el grupo de licencias compatibles, así como otros grupos y licencias individuales:
Advertencia de Portage acerca de cambios requeridos en los ajustes USE
Portage esta completamente escrito en Python y Bash y, por tanto, totalmente a la vista de los usuarios al ser ambos lenguajes interpretados.
Cuando un paquete de software es seleccionado para ser instalado, Portage descarga los archivos con el código fuente y los compila en ese momento, generando los archivos ejecutables y documentación correspondiente.
Es posible especificar las optimizaciones que emplear en la compilación, así como utilizar una variable llamada USE que indica la compatibilidad con otros programas.
La posibilidad de indicar las optimizaciones y el parámetro USE permiten crear una distribución a medida. De todas formas, Portage también soporta la instalación de binarios, ya sean paquetes precompilados por el mismo sistema o paquetes que se encuentran exclusivamente en formato binario.
Portage está inspirado en los Ports BSD, aunque implementa ciertas características avanzadas que no están presentes en los ports BSD: gestión de dependencias, afinamiento preciso de los paquetes a gusto del administrador, instalaciones falsas (al estilo OpenBSD), entornos de prueba durante la compilación, desinstalación segura, perfiles de sistema, paquetes virtuales, gestión de los ficheros de configuración y múltiples ranuras para distintas versiones de un mismo paquete.
Ultima versión estable publicada: 1.2.11.52 del 02/03/2013
La mayoría de usuarios trabajarán con Portage a través de la herramienta emerge. Este capítulo no pretende duplicar la información disponible en la página de man sobre emerge. Para una completa información sobre las opciones de emerge, por favor, consulte la página del manual:
Leer la página del manual sobre emerge.
$ man emerge
El árbol Portage.Ebuilds.
Cuando hablamos sobre paquetes, nos referimos normalmente a programas software disponibles para los usuarios de Gentoo a través del árbol Portage. El árbol Portage es una colección de ebuilds, archivos que contienen toda la información que Portage necesita para mantener el software (instalar, buscar, ...). Estos ebuilds residen por defecto en /usr/portage.
Cuando se pida a Portage que ejecute alguna acción relacionada con los programas, éste utilizará los ebuilds de su sistema como base. Por tanto, es importante que actualice los ebuilds de su sistema para que Portage conozca el nuevo software, actualizaciones de seguridad, etc.
Actualizando el árbol Portage.
El árbol Portage se actualiza normalmente con rsync, una utilidad rápida de transferencia de archivos incremental. La actualización es muy sencilla, ya que la orden emerge proporciona una interfaz para rsync:
Actualizar el árbol Portage.
# emerge --sync
Si no es capaz de realizar rsync debido a restricciones de cortafuegos puede actualizar su árbol Portage a través de nuestras tres imágenes de Portage generadas diariamente. La herramienta emerge-webrsync automáticamente comprueba e instala la última en su sistema. Ejecutar emerge-webrsync.
# emerge-webrsync
Una ventaja adicional de utilizar emerge-webrsync es que permite al administrador descargar únicamente instantáneas del árbol portage que están firmadas con la clave GPG del equipo de ingeniería de versiones de Gentoo. Mantenimiento de Software.
Buscar software.
Para buscar software utilizando el árbol de Portage, puede emplear las funcionalidades de búsquedas propias de emerge. Por defecto, emerge --search devuelve el nombre de los paquetes cuyo nombre coincide (tanto total como parcialmente) con el término de búsqueda introducido.
Por ejemplo, para buscar todos los paquetes que tengan "pdf" en su nombre:
Buscar paquetes cuyo nombre tenga pdf.
$ emerge --search pdf
Si quiere buscar también en las descripciones puede utilizar el parámetro --searchdesc (o -S). Buscar paquetes relacionados con pdf
$ emerge --searchdesc pdf
Cuando eche un vistazo al resultado, notará que le proporciona mucha información. Los campos son etiquetados claramente con lo cual no entraremos en explicar sus significados. Listado de Código 3.3: Ejemplo de salida de emerge –search
* net-print/cups-pdf
Latest version available: 1.5.2
Latest version installed: [ Not Installed ]
Size of downloaded files: 15 kB
Homepage: http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
Description: Provides a virtual printer for CUPS to produce PDF files.
License: GPL-2
Instalar Software.Latest version available: 1.5.2
Latest version installed: [ Not Installed ]
Size of downloaded files: 15 kB
Homepage: http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
Description: Provides a virtual printer for CUPS to produce PDF files.
License: GPL-2
Una vez que haya encontrado el nombre del software que necesite, puede fácilmente instalarlo con emerge: simplemente añada el nombre del paquete. Por ejemplo, para instalar gnumeric:
Instalar gnumeric.
# emerge gnumeric
Muchas aplicaciones dependen unas de otras, esto implica que cualquier intento de instalar un cierto paquete de software podría derivar en la instalación de varias dependencias. No se preocupe. Portage maneja también las dependencias. Si quiere conocer qué instalará Portage cuando le pida que instale un cierto paquete, añada el parámetro --pretend. Por ejemplo: Simular la instalación de gnumeric
# emerge --pretend gnumeric
Cuando le pida a Portage que instale un paquete, descargará las fuentes necesarias desde Internet (si fuera necesario) y las guardará por defecto en /usr/portage/distfiles. Después, el paquete será descomprimido, compilado e instalado. Si quiere que portage solamente descargue las fuentes sin instalarlas, añada la opción --fetchonly a la orden emerge: Descargar el código fuente de gnumeric
# emerge --fetchonly gnumeric
Encontrar la documentación de un paquete instalado.Muchos paquetes vienen con su propia documentación. Algunas veces, el parámetro USE doc determina si la documentación debe instalarse o no. Puede comprobar la existencia del parámetro USE doc con la orden emerge -vp <nombre paquete>.
Comprobar la existencia de del parámetro USE doc
(alsa-lib es tan solo un ejemplo)
# emerge -vp alsa-lib
[ebuild N ] media-libs/alsa-lib-1.0.14_rc1 -debug +doc 698 kB
La mejor manera de activar el parámetro USE doc es por paquete, por medio de /etc/portage/package.use, de manera que solo obtendrá la documentación para los paquetes que le interesan. Activando este parámetro de manera global puede causar problemas con dependencias circulares. Para más información, por favor lea el capítulo acerca de los Parámetros USE. # emerge -vp alsa-lib
[ebuild N ] media-libs/alsa-lib-1.0.14_rc1 -debug +doc 698 kB
Una vez que el paquete está instalado, su documentación se encuentra normalmente en un subdirectorio llamado igual que el paquete, bajo el directorio /usr/share/doc. También puede obtener un listado de todos los archivos instalados con la herramienta equery la cual es parte del paquete app-portage/gentoolkit.
Localizar la documentación de un paquete.
# ls -l /usr/share/doc/alsa-lib-1.0.14_rc1
total 28
-rw-r--r-- 1 root root 669 May 17 21:54 ChangeLog.gz
-rw-r--r-- 1 root root 9373 May 17 21:54 COPYING.gz
drwxr-xr-x 2 root root 8560 May 17 21:54 html
-rw-r--r-- 1 root root 196 May 17 21:54 TODO.gz
total 28
-rw-r--r-- 1 root root 669 May 17 21:54 ChangeLog.gz
-rw-r--r-- 1 root root 9373 May 17 21:54 COPYING.gz
drwxr-xr-x 2 root root 8560 May 17 21:54 html
-rw-r--r-- 1 root root 196 May 17 21:54 TODO.gz
Como alternativa, utilizamos equery para localizar los archivos que nos interesan:
# equery files alsa-lib | less
media-libs/alsa-lib-1.0.14_rc1
* Contents of media-libs/alsa-lib-1.0.14_rc1:
/usr
/usr/bin
/usr/bin/alsalisp
(salida cortada)
Desinstalando Software.media-libs/alsa-lib-1.0.14_rc1
* Contents of media-libs/alsa-lib-1.0.14_rc1:
/usr
/usr/bin
/usr/bin/alsalisp
(salida cortada)
Cuando quiera desinstalar un paquete software de su sistema, utilice emerge --unmerge. Esto le indicará a Portage que desinstale todos los archivos instalados por el paquete en su sistema excepto los archivos de configuración de esa aplicación si la había modificado después de la instalación. Esto le permite continuar trabajando con los mismos archivos de configuración si alguna vez decide volver a instalar la aplicación.
Sin embargo, hemos de tener algo muy en cuenta: Portage no comprueba si el paquete que está intentando desinstalar es necesario para algún otro. A pesar de esto, le avisará cuando quiera eliminar un paquete importante que pueda romper su sistema si lo desinstala.
Desinstalar gnumeric del sistema.
# emerge --unmerge gnumeric
Cuando desinstala un paquete de su sistema, las dependencias de ese paquete que se instalaron automáticamente cuando instaló el software, permanecerán. Para hacer que Portage localice todas las dependencias que puede ser eliminadas actualmente, utilice la funcionalidad de emerge --depclean. Hablaremos de esto un poco más adelante. Actualizando su Sistema.
Para mantener su sistema en perfecto estado (sin mencionar la instalación de los últimas actualizaciones de seguridad) necesita actualizarlo frecuentemente. Partiendo de que Portage solamente comprueba los ebuilds en su árbol Portage, lo primero sería actualizar el propio árbol. Cuando tenga el árbol Portage actualizado, puede actualizar su sistema con emerge --update world. En el siguiente ejemplo, además hemos utilizado el parámetro --ask que le indica a Portage que muestre la lista de paquetes que quiere actualizar y pregunte si se quiere continuar:
Actualizar su sistema.
# emerge --update --ask world
Portage buscará entonces las nuevas versiones de las aplicaciones que explícitamente haya instalado (las listadas en /var/lib/portage/world), sin embargo, no revisa minuciosamente sus dependencias. Si desea actualizar también esas dependencias, añada la opción --deep: Actualizar su sistema incluyendo las dependencias.
# emerge --update --deep world
Aunque esto no indica todos los paquetes: algunos paquetes de su sistema son necesarios durante los procesos de compilación y construcción de los paquetes, pero, una vez que los paquetes se han instalado, estas dependencias ya no se necesitan. Portage denomina a éstas dependencias de construcción (build dependencies). Para incluirlas en un ciclo de actualización, añada --with-bdeps=y: Actualizar su sistema completamente.
# emerge --update --deep --with-bdeps=y world
Ya que las actualizaciones de seguridad también afectan a paquetes que no han sido explícitamente instalados en el sistema (pero que son dependencias de otros programas), es recomendable ejecutar la orden de arriba de vez en cuando. Si ha cambiado últimamente alguno de sus parámetros USE quizá quiera añadir también --newuse. Portage comprobará si los cambios requieren la instalación de nuevos paquetes o la recompilación de los existentes:
Realizar una actualización completa.
# emerge --update --deep --with-bdeps=y --newuse world
Meta-paquetes.
Algunos paquetes del árbol Portage no tienen contenido real pero son utilizados para instalar un conjunto de paquetes. Por ejemplo, el paquete kde-meta instalará un entorno KDE completo en su sistema incluyendo varios paquetes relacionados con KDE y también sus dependencias.
Si quiere desinstalar dicho paquete de su sistema, ejecutando emerge --unmerge sobre el paquete no tendrá efecto total ya que las dependencias permanecerán en su sistema.
Portage tiene la funcionalidad de eliminar las dependencias huérfanas, pero la disponibilidad de software necesita que primero actualice completamente su sistema, incluyendo los nuevos cambios que ha aplicado si actualizó los parámetros USE. Después de esto, puede ejecutar emerge --depclean para eliminar las dependencias huérfanas. Cuando haya terminado, necesitará reconstruir las aplicaciones que estuvieran enlazadas dinámicamente a las que acaban de ser eliminadas pero no son necesarias.
Todo esto se lleva a cabo a través de tres órdenes:
Desinstalar dependencias huérfanas.
# emerge --update --deep --newuse world
# emerge --depclean
# revdep-rebuild
revdep-rebuild es parte del paquete gentoolkit; no olvide instalarlo primero: # emerge --depclean
# revdep-rebuild
Instalar el paquete gentoolkit.
# emerge gentoolkit
Licencias.A partir de la versión 2.1.7 de Portage, puede aceptar o rechazar la instalación de software basada en esta licencia. Todos los paquetes del árbol contienen una entrada LICENSE en sus ebuilds. Ejecutando emerge --search nombredepaquete le mostrará la licencia del paquete.
Por defecto Portage permite todas las licencias, excepto Acuerdos Finales de la Licencia de Usuario (End User License Agreements o EULAs) que requieren la lectura y firma de un acuerdo de aceptación.
La variable que controla las licencias permitidas es ACCEPT_LICENSE, la cual puede ser ajustada en /etc/portage/make.conf:
ACCEPT_LICENSE por defecto en /etc/portage/make.conf
ACCEPT_LICENSE="* -@EULA"
Con esta configuración, los paquetes que requieren interacción durante la instalación para aprobar su EULA no serán instalados. Los paquetes sin una EULA serán instalados. Puede ajustar ACCEPT_LICENSE globalmente en /etc/portage/make.conf, o puede especificarlo en de forma que afecte a solo un paquete en /etc/portage/package.license.
Por ejemplo, si quiere permitir la licencia truecrypt-2.7 para app-crypt/truecrypt, añada lo siguiente a /etc/portage/package.license:
Especificando una licencia truecrypt en package.license.
app-crypt/truecrypt truecrypt-2.7
Esto permite la instalación de versiones de truecrypt que tengan la licencia truecrypt-2.7, pero no versiones con la licencia truecrypt-2.8. Importante: Las licencias se almacenan en /usr/portage/licenses, y los grupos de licencias se guardan en /usr/portage/profiles/license_groups. La primera entrada de cada línea en letras MAYÚSCULAS, es el nombre del grupo de licencias, y cada entrada detrás de ésta es una licencia individual. Los grupos de licencias definidos en ACCEPT_LICENSE se prefijan con un signo @. Se muestra un ejemplo de un sistema que globalmente permite el grupo de licencias compatibles, así como otros grupos y licencias individuales:
ACCEPT_LICENSE en /etc/portage/make.conf
ACCEPT_LICENSE="@GPL-COMPATIBLE @OSI-APPROVED @EULA atheros-hal BitstreamVera"
Si quiere solo software libre y documentación en su sistema, debería usar la siguiente configuración:
Usar únicamente licencias libres.
ACCEPT_LICENSE="-* @FREE"
En este caso, "free" está definido por la FSF y la OSI. Cualquier paquete cuya licencia no se ajuste a estos requisitos no será instalado en su sistema.
Sobre SLOTs, paquetes virtuales, ramas, arquitecturas y perfiles.
Como mencionamos anteriormente, Portage es muy potente y soporta muchas características de las que carecen otras herramientas de gestión de software. Para comprender esto, explicaremos unos cuantos aspectos de Portage sin profundizar demasiado en los detalles. Con Portage, diferentes versiones de un mismo paquete pueden coexistir en un sistema. Mientras otras distribuciones tienden a renombrar el paquete con sus versiones (por ejemplo freetype and freetype2). Portage usa una tecnología llamada SLOTs (ranuras).
Un ebuild declara un cierto SLOT para su versión. Ebuilds con diferentes SLOTs pueden coexistir en el mismo sistema. Por ejemplo, el paquete freetype tiene ebuilds con SLOT="1" y SLOT="2". También existen paquetes que proporcionan la misma funcionalidad pero están implementados de maneras distintas. Por ejemplo, metalogd, sysklogd y syslog-ng son todos paquetes de registro del sistema.
Aplicaciones que necesitan la disponibilidad de un "registrador del sistema" no pueden depender, por ejemplo, de metalogd, ya que el resto de registradores del sistema son igualmente válidos. Portage permite virtuals: cada paquete de registro del sistema se lista como una dependencia "exclusiva" del servicio de registro en el paquete virtual logger de la categoría virtual, de esta forma las aplicaciones pueden depender del paquete virtual/logger. Cuando se instala el paquete, se obtendrá el primer paquete de registro mencionado, a menos que ya se haya instalado previamente un paquete que ofrezca el servicio (en este caso, la dependencia virtual ya está satisfecha).
Un ebuild declara un cierto SLOT para su versión. Ebuilds con diferentes SLOTs pueden coexistir en el mismo sistema. Por ejemplo, el paquete freetype tiene ebuilds con SLOT="1" y SLOT="2". También existen paquetes que proporcionan la misma funcionalidad pero están implementados de maneras distintas. Por ejemplo, metalogd, sysklogd y syslog-ng son todos paquetes de registro del sistema.
Aplicaciones que necesitan la disponibilidad de un "registrador del sistema" no pueden depender, por ejemplo, de metalogd, ya que el resto de registradores del sistema son igualmente válidos. Portage permite virtuals: cada paquete de registro del sistema se lista como una dependencia "exclusiva" del servicio de registro en el paquete virtual logger de la categoría virtual, de esta forma las aplicaciones pueden depender del paquete virtual/logger. Cuando se instala el paquete, se obtendrá el primer paquete de registro mencionado, a menos que ya se haya instalado previamente un paquete que ofrezca el servicio (en este caso, la dependencia virtual ya está satisfecha).
Los programas en el árbol Portage puede residir en diferentes ramas. Por defecto, su sistema solamente acepta paquetes que Gentoo considera estables. La mayoría de los paquetes nuevos, cuando son aceptados, ingresan en la rama inestable. Esto implica que necesitan hacerse más pruebas antes de marcarlo como estable. Aunque puede ver los ebuilds de ese software en su árbol de Portage, Portage no los actualizará hasta que sean marcados como estables. Algunos programas solo están disponibles para unas pocas arquitecturas. O los programas no funcionan en otras arquitecturas, o necesitan más pruebas, o el desarrollador que añade el programa a Portage no es capaz de verificar si el paquete funciona en diferentes arquitecturas.
Cada instalación de Gentoo adhiere un cierto perfil el cual contiene, entre otra información, la lista de paquetes necesarios para que el sistema funcione normalmente.
Paquetes bloqueados.
Aviso de Portage sobre paquetes bloqueados (con --pretend)
[blocks B ] mail-mta/ssmtp (is blocking mail-mta/postfix-2.2.2-r1)
Aviso de Portage sobre paquetes bloqueados (sin --pretend)
!!! Error: the mail-mta/postfix package conflicts with another package.
!!! both can't be installed on the same system together.
!!! Please use 'emerge --pretend' to determine blockers.
!!! both can't be installed on the same system together.
!!! Please use 'emerge --pretend' to determine blockers.
Los Ebuilds contienen campos específicos que informan a Portage sobre sus dependencias. Hay dos posibles dependencias: dependencias de compilación, declaradas en DEPEND y dependencias en tiempo de ejecución, declaradas en RDEPEND. Cuando una de estas dependencias marca explícitamente un paquete o paquete virtual como no compatible, se dispara un bloqueo.
Aunque las versiones recientes de Portage son lo suficientemente inteligentes para resolver los bloqueos de menor importancia sin necesidad de la intervención del usuario, ocasionalmente necesitará resolverlo a mano como se explica abajo.
Para solucionar un bloqueo, puede elegir no instalar el paquete o desinstalar primero el paquete conflictivo. En el ejemplo anterior, puedes optar por no instalar postfix o eliminar primero ssmtp.
También puede ocurrir que vea los paquetes en conflicto con operadores lógicos concretos, como por ejemplo <media-video/mplayer-1.0_rc1-r2. En este caso, actualizar a la versión más reciente del paquete bloqueante debería eliminar el bloqueo.
También es posible que dos paquetes que aún no se han instalado se estén bloqueando mutuamente. En este caso (poco frecuente), se debería investigar por que necesitamos instalar ambos. En la mayoría de los casos se puede realizar con uno solo de los paquetes.
Paquetes enmascarados (masked).
Aviso de Portage sobre paquetes enmascarados.
!!! all ebuilds that could satisfy "bootsplash" have been masked.
Aviso de Portage sobre paquetes enmascarados – razón.
!!! possible candidates are:
- gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword)
- lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword)
- sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword)
- dev-util/cvsd-1.0.2 (masked by: missing keyword)
- games-fps/unreal-tournament-451 (masked by: package.mask)
- sys-libs/glibc-2.3.2-r11 (masked by: profile)
- net-im/skype-2.1.0.81 (masked by: skype-eula license(s))
- gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword)
- lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword)
- sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword)
- dev-util/cvsd-1.0.2 (masked by: missing keyword)
- games-fps/unreal-tournament-451 (masked by: package.mask)
- sys-libs/glibc-2.3.2-r11 (masked by: profile)
- net-im/skype-2.1.0.81 (masked by: skype-eula license(s))
Cuando quiera instalar un paquete que no está disponible para su sistema, recibirá un error de enmascaramiento. Debería probar a instalar una aplicación distinta que este disponible para su sistema o esperar hasta que el paquete este disponible. Siempre hay una razón para que un paquete esté enmascarado:
- ~arch keyword implica que la aplicación no esta probada lo suficiente para ser parte de la rama estable. Espere unos cuantos días o semanas y vuelva a intentarlo.
- -arch keyword o -* keyword implica que la aplicación no funciona en su arquitectura. Si cree que el paquete funcionará, cree un bug en nuestro sitio web bugzilla.
- missing keyword indica que la aplicación aún no ha sido probada para su arquitectura. Pida al correspondiente equipo de arquitectura que pruebe el paquete o pruébelo por ellos e informe de su experiencia en nuestro sitio web bugzilla.
- package.mask implica que el paquete se ha encontrado corrupto, inestable o peor y ha sido marcada deliberadamente para que no se use.
- profile implica que el paquete no está disponible para su perfil. La aplicación podría romper su sistema si la instala o no es compatible con el perfil que está usando.
- license significa que la licencia del paquete no es compatible con su ajuste ACCEPT_LICENSE. Debe permitir explícitamente su licencia o grupo de licencias ajustándolo en /etc/portage/make.conf o en /etc/portage/package.license.
Advertencia de Portage acerca de cambios requeridos en los ajustes USE
The following USE changes are necessary to proceed:
#required by app-text/happypackage-2.0, required by happypackage (argument)
>=app-text/feelings-1.0.0 test
#required by app-text/happypackage-2.0, required by happypackage (argument)
>=app-text/feelings-1.0.0 test
También puede que se muestre el siguiente mensaje de error, si no se ha habilitado --autounmask:
Error de Portage acerca de cambios requeridos en los ajustes USE
emerge: there are no ebuilds built with USE flags to satisfy "app-text/feelings[test]".
!!! One of the following packages is required to complete your request:
- app-text/feelings-1.0.0 (Change USE: +test)
(dependency required by "app-text/happypackage-2.0" [ebuild])
(dependency required by "happypackage" [argument])
!!! One of the following packages is required to complete your request:
- app-text/feelings-1.0.0 (Change USE: +test)
(dependency required by "app-text/happypackage-2.0" [ebuild])
(dependency required by "happypackage" [argument])
Esta advertencia y error suceden cuando se quiere instalar un paquete que no solo depende de otro paquete, sino que requiere que ese paquete se haya construido con un ajuste USE en particular (o un conjunto de ajustes USE). En el ejemplo dado, el paquete app-text/feelings necesita construirse con USE="test", sin embargo, este ajuste USE no está habilitado en el sistema. Para resolver esta situación, puede añadir el ajuste USE requerido a sus ajustes globales en /etc/portage/make.conf, o definirlo específicamente para el paquete en /etc/portage/package.use.
Dependencias perdidas.
Aviso de Portage sobre dependencias perdidas.
emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3-4.2-r4".
!!! Problem with ebuild sys-devel/gcc-3.4.2-r2
!!! Possibly a DEPEND/*DEPEND problem.
!!! Problem with ebuild sys-devel/gcc-3.4.2-r2
!!! Possibly a DEPEND/*DEPEND problem.
La aplicación que está tratando instalar depende de otro paquete que no esta disponible para su sistema. Por favor, compruebe bugzilla para ver si el problema se conoce o no, en este caso informe de ello. A menos que este mezclando ramas esto no debería ocurrir y lo consideraremos un error.
Nombre ambiguo del Ebuild.
Aviso de Portage sobre nombre ambiguos en ebuild.
[ Results for search key : listen ]
[ Applications found : 2 ]
* dev-tinyos/listen [ Masked ]
Latest version available: 1.1.15
Latest version installed: [ Not Installed ]
Size of files: 10,032 kB
Homepage: http://www.tinyos.net/
Description: Raw listen for TinyOS
License: BSD
* media-sound/listen [ Masked ]
Latest version available: 0.6.3
Latest version installed: [ Not Installed ]
Size of files: 859 kB
Homepage: http://www.listen-project.org
Description: A Music player and management for GNOME
License: GPL-2
!!! The short ebuild name "listen" is ambiguous. Please specify
!!! one of the above fully-qualified ebuild names instead.
[ Applications found : 2 ]
* dev-tinyos/listen [ Masked ]
Latest version available: 1.1.15
Latest version installed: [ Not Installed ]
Size of files: 10,032 kB
Homepage: http://www.tinyos.net/
Description: Raw listen for TinyOS
License: BSD
* media-sound/listen [ Masked ]
Latest version available: 0.6.3
Latest version installed: [ Not Installed ]
Size of files: 859 kB
Homepage: http://www.listen-project.org
Description: A Music player and management for GNOME
License: GPL-2
!!! The short ebuild name "listen" is ambiguous. Please specify
!!! one of the above fully-qualified ebuild names instead.
La aplicación que quiere instalar tiene un nombre que corresponde con más de un paquete. Necesita aportar también el nombre de la categoría. Portage le informará de los posibles casos entre los que puede elegir.
Dependencias Circulares.
Aviso de Portage sobre dependencias circulares
!!! Error: circular dependencies:
ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2
ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2
Dos (o más) paquetes que quiere instalar dependen uno de otro y, por tanto, no pueden instalarse. Esto casi siempre se considera un error en el árbol Portage. Por favor, vuelva a sincronizar después de un tiempo e inténtelo de nuevo. También puede comprobar bugzilla para saber si se tiene conocimiento sobre el tema o si no, en cuyo caso informe sobre ello.
Fallo en la descarga.
Aviso de Portage sobre un fallo en la descarga.
!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
(...)
!!! Some fetch errors were encountered. Please see above for details.
(...)
!!! Some fetch errors were encountered. Please see above for details.
Portage no es capaz de descargar las fuentes para una aplicación específica y tratará de continuar instalando el resto de aplicaciones (si es posible). Este fallo puede deberse a que un servidor réplica no esta bien sincronizado o a que el ebuild apunta a una localización incorrecta. El servidor donde residen las fuentes podría estar caído por alguna razón. Pruebe después de una hora y vea si el problema persiste.
Protección del Perfil de Sistema.
Aviso de Portage sobre un paquete protegido por perfil.
!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! This could be damaging to your system.
!!! This could be damaging to your system.
Está intentando eliminar un paquete que es parte del fundamental de su sistema. Éste se haya en su perfil y es necesario, por tanto, no debería ser eliminado del sistema.
Errores en la verificación del digest.
A veces, al intentar hacer emerge a un paquete, éste fallará, con el siguiente mensaje:
Falla en la suma de control.
>>> checking ebuild checksums
Esta es una señal que hay algún problema con el árbol Portage -- muchas veces esto es porque un desarrollador ha cometido una equivocación al ingresar un paquete en el árbol. Cuando falla la verificación del digest, no intente recalcularlo. El ejecutar ebuild foo manifest no va a resolver el problema; seguramente ¡lo empeorará!
En lugar de esto, espere una o dos hora que el árbol estabilice. Es probable que el error haya sido detectado enseguida, pero podrá tomar algún tiempo para que propague la corrección al árbol Portage. Mientras espera, revise Bugzilla a ver si alguien ha reportado el problema, si no, siga adelante y archive un "bug" reportando el paquete roto. Una vez que compruebe que el error ha sido reparado, tal vez quiera re-sincronizar para recoger la suma de control reparada.
Búsqueda personalizada
Si te ha gustado el artículo inscribete al feed clicando en la imagen más abajo para tenerte siempre actualizado sobre los nuevos contenidos del blog:
0 comentarios:
Publicar un comentario
No insertes enlaces clicables, de lo contrario se eliminará el comentario. Si quieres ser advertido via email de los nuevos comentarios marca la casilla "Avisarme". Si te ayudé con la publicación o con las respuestas a los comentarios, compártelo en Facebook,Twitter o Instagram. Gracias.