Handbook:Parts/Working/Portage/es

Bienvenido a Portage
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.

La mayoría de usuarios trabajarán con Portage a través de la herramienta. 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:

Ebuilds
When Gentoo's documentation talks about packages, it means software titles that are available to the Gentoo users through the Gentoo repository. This repository is a collection of ebuilds, files that contain all information Portage needs to maintain software (install, search, query, ...). These ebuilds reside in by default.

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.

Updating the Gentoo repository
The Gentoo repository is usually updated with, a fast incremental file transfer utility. Updating is fairly simple as the command provides a front-end for :

Sometimes firewall restrictions apply that prevent from contacting the mirrors. In this case, update the Gentoo repository through Gentoo's daily generated snapshots. The tool automatically fetches and installs the latest snapshot on the system:

An additional advantage of using is that it allows the administrator to only pull in Gentoo repository snapshots that are signed by the Gentoo release engineering GPG key. More information on this can be found in the Portage features section on fetching validated Gentoo repository snapshots.

Buscar software
There are multiple ways to search through the Gentoo repository for software. One way is through itself. By default, returns the names of packages whose title matches (either fully or partially) the given search term.

Por ejemplo, para buscar todos los paquetes que tengan "pdf" en su nombre:

Si quiere buscar también en las descripciones puede utilizar la opción  (o  ).

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.

Instalar software
Una vez que haya encontrado el nombre del software que necesite, puede fácilmente instalarlo con : simplemente añada el nombre del paquete. Por ejemplo, para instalar 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 la opción. Por ejemplo:

Cuando le pida a Portage que instale un paquete, descargará las fuentes necesarias desde Internet (si fuera necesario) y las guardará por defecto en. Después, el paquete será descomprimido, compilado e instalado. Si quiere que Portage solamente descargue las fuentes sin instalarlas, añada la opción  a la orden emerge:

Encontrar la documentación de un paquete instalado
Many packages come with their own documentation. Sometimes, the  USE flag determines whether the package documentation should be installed or not. To see if the  USE flag is used by a package, use.

The best way of enabling the  USE flag is doing it on a per-package basis via, so that only the documentation for the wanted packages is installed. For more information, please read the USE flags chapter.

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 la cual es parte del paquete.

Desinstalando software
Cuando quiera desinstalar un paquete software de su sistema, utilice. 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 los 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.

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. Hablaremos de esto un poco más adelante.

Actualizando su sistema
To keep the system in perfect shape (and not to mention install the latest security updates) it is necessary to update the system regularly. Since Portage only checks the ebuilds in the Gentoo repository, the first thing to do is to update this repository. When the Gentoo repository is updated, the system can be updated using. In the next example, the  option is also used which will tell Portage to display the list of packages it wants to upgrade and ask for confirmation:

Portage buscará entonces las nuevas versiones de las aplicaciones que explícitamente haya instalado (las listadas en ), sin embargo, no revisa minuciosamente sus dependencias. Si desea actualizar también esas dependencias, añada la opción :

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 :

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 ajustes USE quizá quiera añadir también. Portage comprobará si los cambios requieren la instalación de nuevos paquetes o la recompilación de los existentes:

Meta-paquetes
Some packages in the Gentoo repository don't have any real content but are used to install a collection of packages. For instance, the package will install a complete KDE environment on the system by pulling in various KDE-related packages as dependencies.

Si quiere desinstalar dicho paquete de su sistema, ejecutando 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 ajustes USE. Después de esto, puede ejecutar para eliminar las dependencias huérfanas. Cuando haya terminado, podría ser necesario reconstruir las aplicaciones que estuvieran enlazadas dinámicamente a las que acaban de ser eliminadas, a pesar de que recientemente se ha añadido a Portage soporte para este asunto.

Todo esto se lleva a cabo a través de tres órdenes:

es parte del paquete ; no olvide instalarlo primero:

Licencias
Beginning with Portage version 2.1.7, it is possible to accept or reject software installation based on its license. All packages in the tree contain a LICENSE entry in their ebuilds. Running will show the package's license.

Por defecto Portage permite todas las licencias, excepto Acuerdos de Licencia de Usuario Final (End User License Agreements o EULAs) que requieren la lectura y firma de un acuerdo de aceptación.

The variable that controls permitted licenses is called ACCEPT_LICENSE, which can be set in the file. In the next example, this default value is shown:

Con esta configuración, los paquetes que requieren interacción durante la instalación para aprobar su EULA no se podrán instalar. Los paquetes sin una EULA se podrán instalar.

Puede ajustar ACCEPT_LICENSE globalmente en, o puede especificarlo en de forma que afecte a solo un paquete en.

For example, to allow the license for the  package, add the following to :

This permits installation of google-chrome versions for versions greater than or equal to 55.0.2883.87, but not versions less than 55.0.2883.87.

License groups defined in the ACCEPT_LICENSE variable are prefixed with an  sign. A commonly requested setting is to only allow the installation of free software and documentation. To accomplish this, remove all currently accepted licenses (using ) and then only allow the licenses in the FREE group as follows:

En este caso, "free" está definido por la FSF y la OSI. Cualquier paquete cuya licencia no se ajuste a estos requisitos no se podrá instalar en su sistema.

Terminología
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".

There are also packages that provide the same functionality but are implemented differently. For instance, metalogd, sysklogd, and syslog-ng are all system loggers. Applications that rely on the availability of "a system logger" cannot depend on, for instance, metalogd, as the other system loggers are as good a choice as any. Portage allows for virtuals: each system logger is listed as an "exclusive" dependency of the logging service in the logger virtual package of the virtual category, so that applications can depend on the package. When installed, the package will pull in the first logging package mentioned in the package, unless a logging package was already installed (in which case the virtual is satisfied).

Software in the Gentoo repository can reside in different branches. By default the system only accepts packages that Gentoo deems stable. Most new software titles, when committed, are added to the testing branch, meaning more testing needs to be done before it is marked as stable. Although the ebuilds for those software are in the Gentoo repository, Portage will not update them before they are placed in the stable branch.

Some softwares are only available for a few architectures. Or the software doesn't work on the other architectures, or it needs more testing, or the developer that committed the software to the Gentoo repository is unable to verify if the package works on different architectures.

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
Los Ebuilds contienen campos específicos que informan a Portage sobre sus dependencias. Hay dos posibles dependencias: dependencias de compilación, declaradas en la variable DEPEND y dependencias en tiempo de ejecución, declaradas igualmente 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. 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. Si no, por favor envíe un informe de error al sistema de seguimiento de errores de Gentoo.

Paquetes enmascarados (masked)
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:

Cambios necesarios en los ajustes USE
También puede que se muestre el siguiente mensaje de error, si no se ha habilitado :

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, o definirlo específicamente para el paquete en.

Dependencias perdidas
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
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
Two (or more) packages to install depend on each other and can therefore not be installed. This is most likely a bug in one of the packages in the Gentoo repository. Please re-sync after a while and try again. It might also be beneficial to check Bugzilla to see if the issue is known and if not, report it.

Fallo en la descarga
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 del sistema
Está intentando eliminar un paquete que es parte 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 de la integridad (digest)
This is a sign that something is wrong with the Gentoo repository - often, it is because a developer may have made a mistake when committing a package to the tree.

Cuando falla la verificación de la integridad (digest), no intente recalcularla. El ejecutar no va a resolver el problema; seguramente ¡lo empeorará!

Instead, wait an hour or two for the tree to settle down. It's likely that the error was noticed right away, but it can take a little time for the fix to trickle down the Gentoo repository. Check Bugzilla and see if anyone has reported the problem yet or ask around on (IRC). If not, go ahead and file a bug for the broken package.

Once the bug has been fixed, re-sync the Gentoo repository to pick up the fixed digest.