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.

Most users will work with Portage through the tool. This chapter is not meant to duplicate the information available from the emerge man page. For a complete rundown of emerge's options, please consult the man page:

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

Whenever someone asks Portage to perform some action regarding software titles, it will use the ebuilds on the system as a base. It is therefore important to regularly update the ebuilds on the system so Portage knows about new software, security updates, etc.

Updating the Portage tree
The Portage tree 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 Portage tree through Gentoo's daily generated Portage tree 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 Portage tree 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 Portage tree snapshots.

Buscar software
There are multiple ways to search through the Portage tree 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:

To search through the descriptions as well, use the  (or  ) option:

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
When a software title has been found, then the installation is just one command away. For instance, to install gnumeric:

Since many applications depend on each other, any attempt to install a certain software package might result in the installation of several dependencies as well. Don't worry, Portage handles dependencies well. To find out what Portage would install, add the  option. For instance:

During the installation of a package, Portage will download the necessary source code from the Internet (if necessary) and store it by default in. After this it will unpack, compile and install the package. To tell Portage to only download the sources without installing them, add the  option to the emerge command:

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 doc USE flag is used by a package, use.

La mejor manera de activar el ajuste USE doc es por paquete, por medio de, de manera que solo obtendrá la documentación para los paquetes que le interesan. Activando este ajuste de manera global puede causar problemas con dependencias circulares. Para más información, por favor lea el apartado acerca de los Ajustes USE.

Once the package installed, its documentation is generally found in a subdirectory named after the package under the directory. It is also possible to list all installed files with the tool which is part of the  package.

Desinstalando software
To remove software from a system, use. This will tell Portage to remove all files installed by that package from the system. One exception to this are the configuration files of that application if they have been altered by the user. Leaving the configuration files allows users to continue working with the package without the need for reconfiguration if the packages are installed again later on.

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 Portage tree, the first thing to do is to update the Portage tree. When the Portage tree 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 will then search for newer version of the applications that are installed. However, it will only verify the versions for the applications that are explicitly installed (the applications listed in ) - it does not thoroughly check their dependencies. To update the dependencies of those packages as well, add the  option:

Still, this does not mean all packages: some packages on the system are needed during the compile and build process of packages, but once that package is installed, these dependencies are no longer required. Portage calls those build dependencies. To include those in an update cycle, add :

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
Algunos paquetes del árbol Portage no tienen contenido real pero son utilizados para instalar un conjunto de paquetes. Por ejemplo, el paquete instalará un entorno KDE completo en su sistema incluyendo varios paquetes relacionados con KDE y también sus dependencias.

To remove such a package from your system, running on the package won't have much effect as the dependencies remain on the system.

Portage has the functionality to remove orphaned dependencies as well, but since the availability of software is dynamically dependent it is important to first update the entire system fully, including the new changes applied when changing USE flags. After this one can run to remove the orphaned dependencies. When this is done, it might be necessary to rebuild the applications that were dynamically linked to the now-removed software titles but don't require them anymore, although recently support for this has been added to Portage.

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

is provided by the package; do not forget to emerge it:

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. 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.

It is possible to set ACCEPT_LICENSE globally in, or to specify it on a per-package basis in.

Por ejemplo, si quiere permitir la licencia para, añada lo siguiente a :

Esto permite la instalación de versiones de truecrypt que tengan la licencia, pero no versiones con la licencia.

License groups defined in ACCEPT_LICENSE 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
As stated before, Portage is extremely powerful and supports many features that other software management tools lack. To understand this, we explain a few aspects of Portage without going into too much detail.

With Portage different versions of a single package can coexist on a system. While other distributions tend to name their package to those versions (like freetype and freetype2) Portage uses a technology called SLOTs. An ebuild declares a certain SLOT for its version. Ebuilds with different SLOTs can coexist on the same system. For instance, the freetype package has ebuilds with SLOT="1" and 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 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).

Software in the Portage tree 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 Portage tree, 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 Portage tree 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
Ebuilds contain specific fields that inform Portage about its dependencies. There are two possible dependencies: build dependencies, declared in the DEPEND variable and run-time dependencies, likewise declared in RDEPEND. When one of these dependencies explicitly marks a package or virtual as being not compatible, it triggers a blockage.

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
The application to install depends on another package that is not available for the system. Please check Bugzilla if the issue is known and if not, please report it. Unless the system is configured to mix branches, this should not occur and is therefore a bug.

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 Portage tree. 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 was unable to download the sources for the given application and will try to continue installing the other applications (if applicable). This failure can be due to a mirror that has not synchronized correctly or because the ebuild points to an incorrect location. The server where the sources reside can also be down for some reason.

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 Portage tree - often, it is because a developer may have made a mistake when committing a package to the tree.

When the digest verification fails, do not try to re-digest the package personally. Running will not fix the problem; it will almost certainly make it worse!

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 Portage tree. 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 Portage tree to pick up the fixed digest.