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 ]
[ > ]
[ >> ]
El contenido de este documento, a no ser que se especifique
expresamente, está registrado bajo los términos de la licencia
CC-BY-SA-2.5. Se aplican las
Pautas de
Utilización del logotipo y nombre de Gentoo.
|