Gentoo Logo

Renuncia de responsabilidad: Este manual ha sido sustituido por una versión más reciente y no tendrá soporte de aquí en adelante.


[ << ] [ < ] [ Inicio ] [ > ] [ >> ]


1. Introducción al Sistema Portage

Contenido:

1.a. Bienvenido a Portage

Portage es probablemente la más importante innovación de Gentoo en la gestión de software. Con su gran flexibilidad y una gran cantidad de características 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, completamente a la vista de los usuarios al ser ambos lenguajes de script.

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:

Listado de Código 1.1: Leyendo la página del manual sobre emerge

$ man emerge

1.b. El Árbol Portage

Ebuilds

Cuando hablamos sobre paquetes, nos referimos normalmente a programas software disponible 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 le pida a Portage que ejecute alguna acción relacionada con los programas software, é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 el comando emerge proporciona una interfaz para rsync:

Listado de Código 2.1: Actualizando 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.

Listado de Código 2.2: Ejecutando emerge-webrsync

# emerge-webrsync

1.c. Mantenimiento de Software

Buscando software

Para buscar software utilizando el árbol de Portage , puede utilizar las características 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:

Listado de Código 3.1: Buscando paquetes cuyo nombre tenga pdf

$ emerge search pdf

Si quiere buscar también en las descripciones puede utilizar el parámetro --searchdesc (o -S).

Listado de Código 3.2: Buscando 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

Instalando Software

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:

Listado de Código 3.4: Instalando gnumeric

# emerge gnumeric

Muchas aplicaciones depende 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 que instalará Portage cuando le pida que instale un cierto paquete, añada el parámetro --pretend. Por ejemplo:

Listado de Código 3.5: Simulando instalar 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 de esto, el paquete será descomprimido, compilado e instalado. Si quiere que portage únicamente descargue las fuentes sin instalarlas, añada la opción --fetchonly al comando emerge:

Listado de Código 3.6: Descargar el código fuente de gnumeric

# emerge --fetchonly gnumeric

Desinstalando Software

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

Listado de Código 3.7: Desinstalando 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 utilidad 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:

Listado de Código 3.8: Actualizando su sistema

# emerge --update world

Portage buscará entonces las nuevas versiones de las aplicaciones que tenga instaladas. Sin embargo, solamente comprobará las versiones de las aplicaciones que tenga instaladas, no de las dependencias. Si quiere actualizar cada paquete existente en su sistema, añada la opción --deep:

Listado de Código 3.9: Actualizando completamente su sistema

# emerge --update --deep world

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:

Listado de Código 3.10: Llevando a cabo una actualización completa

# emerge --update --deep --newuse world

Paquetes colectivos

Algunos paquetes del árbol Portage no tienen contenido real pero son utilizados para instalar un conjunto de paquetes. Por ejemplo, el paquete kde dejará un completo entorno KDE en su sistema a través de instalar varios paquetes relacionados con KDE y 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 comandos:

Listado de Código 3.11: Desinstalando dependencias huérfanas

# emerge --update --deep --newuse world
# emerge depclean
# revdep-rebuild

revdep-rebuild es parte del paquete gentoolkit; no olvide instalarlo primero:

Listado de Código 3.12: Instalando el paquete gentoolkit

# emerge gentoolkit

1.d. Cuando Portage se queja...

Sobre SLOTs, Paquetes Virtuales, Ramas, Arquitecturas y Perfiles

Como mencionamos anteriormente, Portage es muy potente y soporta muchas características que de las que carecen otros 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 renombre 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 logeadores del sistema. Aplicaciones que necesitan la disponibilidad de un "logeador del sistema" no pueden depender, por ejemplo, de metalogd, ya que el resto de logeadores del sistema son igualmente válidos. Portage permite virtuals: cada logeador del sistema proporciona virtual/syslog de tal manera que las aplicaciones puede depender de virtual/syslog.

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 sólo 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

Listado de Código 4.1: Portage avisa sobre paquete bloqueados (con --pretend)

[blocks B     ] gnome-base/bonobo-activation (from pkg gnome-base/libbonobo-2.4.0)

Listado de Código 4.2: Portage avisa sobre paquete bloqueados (sin --pretend)

!!! Error: the gnome-base/bonobo-activation package conflicts with another package.
!!!        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.

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 libbonobo o eliminar primero bonobo-activation.

Paquetes enmascarados (masked)

Listado de Código 4.3: Portage avisa sobre paquetes enmascarados

!!! all ebuilds that could satisfy "bootsplash" have been masked. 

Listado de Código 4.4: Portage avisa 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)
- media-video/ati-gatos-4.3.0 (masked by: package.mask)
- sys-libs/glibc-2.3.2-r11 (masked by: profile)

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 implica que la aplicación aún no ha sido probada en su arquitectura. Pida al equipo encargado de portar arquitecturas que pruebe el paquete o pruébelo por ellos y 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.

Dependencias perdidas

Listado de Código 4.5: Portage avisa sobre dependencias perdidas

emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-4.2-r4".

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

Listado de Código 4.6: Portage avisa sobre nombre ambiguos en ebuild

!!! The short ebuild name "aterm" is ambiguous.  Please specify
!!! one of the following fully-qualified ebuild names instead:

    dev-libs/aterm
    x11-terms/aterm

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

Listado de Código 4.7: Portage avisa 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 

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

Listado de Código 4.8: Portage avisa 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.

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 reside 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 Pérfil de Sistema

Listado de Código 4.9: Portage avisa sobre un paquete protegido por perfil

!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! 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 y, por tanto, no debería ser eliminado del sistema.


[ << ] [ < ] [ Inicio ] [ > ] [ >> ]


Imprimir

Ver completo

Página actualizada 24 de octubre, 2004

Esta traducción ha dejado de tener soporte

Sumario: Este capítulo explica los pasos "sencillos" que un usuario necesita saber definitivamente para mantener el software en su sistema.

Daniel Robbins
Autor

Sven Vermeulen
Autor

Chris Houser
Autor

Jerry Alexandratos
Autor

Seemant Kulleen
Desarrollador Gentoo x86

Tavis Ormandy
Desarrollador Gentoo Alpha

Jason Huebel
Desarrollador Gentoo AMD64

Guy Martin
Desarrollador Gentoo HPPA

Pieter Van den Abeele
Desarrollador Gentoo PPC

Joe Kallar
Desarrollador Gentoo SPARC

John P. Davis
Editor

Pierre-Henri Jondot
Editor

Eric Stockbridge
Editor

Rajiv Manglani
Editor

Jungmin Seo
Editor

Stoyan Zhekov
Editor

Jared Hudson
Editor

Colin Morey
Editor

Jorge Paulo
Editor

Carl Anderson
Editor

Jon Portnoy
Editor

Zack Gilburd
Editor

Jack Morgan
Editor

Benny Chuang
Editor

Erwin
Editor

Joshua Kinard
Editor

Tobias Scherbaum
Editor

Grant Goodyear
Revisor

Gerald J. Normandin Jr.
Revisor

Donnie Berkholz
Revisor

Ken Nowack
Revisor

Lars Weiler
Contribuidor

José Alberto Suárez López
Editor-Es

John Christian Stoddart
Editor-Es Adjunto

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.