Portage es un sistema de gestión de paquetes creado originalmente para Gentoo Linux y utilizado por ChromeOS y Calculate, entre otros. Portage se basa en el concepto de colecciones de puertos . A Gentoo se le suele llamar metadistribución debido a la extrema flexibilidad de Portage, que lo hace independiente del sistema operativo . [ 3 ] [ 4 ] [ 5 ] [ 6 ] El proyecto Gentoo/Alt se centró en utilizar Portage para gestionar otros sistemas operativos, como BSD , macOS y Solaris . La implementación más destacada es el proyecto Gentoo/FreeBSD .
Existe un proyecto en curso denominado Especificación del Gestor de Paquetes (PMS) [ 7 ] , cuyo objetivo es estandarizar y documentar el comportamiento de Portage, permitiendo que el árbol ebuild y los paquetes del sistema Gentoo se utilicen con gestores de paquetes alternativos como Paludis y pkgcore. Su meta es especificar el conjunto exacto de características y el comportamiento de los gestores de paquetes y los ebuilds, sirviendo como referencia autorizada para Portage.
Descripción general
Acceso a Portage

Portage es similar al sistema de gestión de paquetes estilo BSD conocido como ports , y fue diseñado originalmente teniendo en cuenta los ports de FreeBSD . [ 8 ] Portage está escrito en el lenguaje de programación Python y es la utilidad principal que define Gentoo. Aunque el sistema en sí se conoce como Portage, consta de dos partes principales: el sistema ebuild y emerge . El sistema ebuild se encarga del trabajo real de compilación e instalación de paquetes, mientras que emerge proporciona una interfaz para ebuild: gestiona un repositorio ebuild, resuelve dependencias y problemas similares. (Por lo tanto, estos dos tienen aproximadamente la misma relación que rpm con yum , o dpkg con APT ).
Porthole , una interfaz gráfica de usuario basada en GTK , está disponible para trabajar con Portage. También existe Himerge , cuyas siglas significan "Interfaz Haskell para eMerge".
Funciones proporcionadas
Portage se caracteriza por su función principal: compilar a partir del código fuente los paquetes que el usuario desea instalar. De esta forma, permite personalizar las opciones del compilador y de la aplicación de destino para adaptarlas a las especificaciones del sistema y a las preferencias del usuario. Las funcionalidades relacionadas con la gestión del sistema incluyen: instalación paralela de versiones de paquetes, seguimiento de dependencias entre paquetes , gestión de una base de datos de paquetes instalados, repositorio local de ebuilds y sincronización del árbol local de Portage con repositorios remotos. Las funcionalidades relacionadas con la instalación de paquetes individuales incluyen: especificar la configuración de compilación para la máquina de destino y elegir los componentes del paquete.
Portage distingue entre tres niveles de estabilidad en los ebuilds: estable (por ejemplo, el software funciona según lo previsto sin problemas de seguridad conocidos en el momento del lanzamiento), enmascarado por palabras clave (principalmente para paquetes que no se han probado lo suficiente en la arquitectura del sistema de destino para ser considerados estables) y enmascarado duro (paquetes rotos o muy inseguros).
Características
Surgir

La herramienta de línea de comandos emerge es el núcleo de Portage. Este comando es personalizable con numerosas opciones y modificadores. La herramienta emerge es la utilidad más importante para acceder a las funciones de Portage desde la línea de comandos .
El programa calcula y gestiona las dependencias, ejecuta los ebuilds y mantiene el árbol Portage local y la base de datos de paquetes instalados. La configuración de compilación utilizada por los ebuilds se puede modificar mediante la variable de entorno CFLAGS , según las especificaciones del equipo y las preferencias del usuario en cuanto a optimización. La utilidad emerge ejecuta los ebuilds en un entorno aislado . De esta forma, el sistema queda protegido del software ejecutado por el ebuild y los binarios resultantes solo se combinan tras una compilación e instalación exitosas en el entorno aislado.
Las dependencias que instala emerge dependen de la configuración de la bandera USE. Esta configuración determina qué funciones opcionales se incluirán al instalar o actualizar una aplicación. El comando emerge también se puede usar para descargar e instalar archivos binarios precompilados.
Banderas de USO

El sistema Portage ofrece el uso de "indicadores USE", que permiten a los usuarios indicar qué características de software desean incluir (y excluir) al crear paquetes. Por ejemplo, existe un indicador USE para incluir compatibilidad con DVD , cuando esté disponible, en los paquetes compilados con el indicador habilitado. Los indicadores USE afectan las dependencias requeridas, afectando generalmente las características opcionales que se incorporarán a un programa determinado cuando se compile. Por ejemplo, en los paquetes que utilizan un script de configuración , el indicador USE featurese traduciría en ./configure --with-feature.
La especificación de indicadores USE es la forma habitual de configurar programas en Gentoo. Los indicadores USE se pueden configurar manualmente o mediante herramientas fáciles de usar como 'ufed' (editor de indicadores USE), que muestra los indicadores junto con su descripción. En el Índice de Indicadores USE del sitio web de Gentoo se puede consultar una lista de los indicadores USE disponibles .
ebuild
Gentoo no utiliza, por defecto, paquetes binarios como otros sistemas de gestión de paquetes (como pacman o apt), sino que emplea un formato conocido como ebuild. Mientras que los binarios RPM son binarios precompilados , los ebuilds son scripts de shell con variables y funciones que contienen una descripción del software e instrucciones sobre cómo obtenerlo, configurarlo, compilarlo e instalarlo, más parecidos a (pero más potentes que) los archivos .spec distribuidos en SRPM . [ 9 ] El repositorio oficial proporciona más de 19.600 ebuilds, la mayoría de los cuales se distribuyen mediante los espejos de Gentoo . Se pueden obtener ebuilds nuevos y actualizados sincronizando los repositorios ebuild locales con los espejos. Esto se hace ejecutando el comando emaint sync -a. Históricamente, Gentoo ha proporcionado paquetes binarios precompilados para muchos programas comunes, especialmente aquellos que son largos de compilar, como Mozilla Firefox y OpenOffice.org . Estos paquetes se siguen instalando con emerge, simplemente añadiendo "-bin" al nombre del paquete para instalar la versión binaria.
Ejemplo de ebuild para GNOME Terminator :
# Copyright 1999-2020 Autores de Gentoo # Distribuido bajo los términos de la Licencia Pública General GNU v2EAPI = 7PYTHON_COMPAT =( python3_ { 6 ,7,8 } ) DISTUTILS_USE_SETUPTOOLS = "no" inherit distutils-r1 virtualx xdg-utilsDESCRIPCIÓN = "Múltiples terminales GNOME en una sola ventana" PÁGINA PRINCIPAL = "https://github.com/gnome-terminator/terminator" URI_ORIGEN = "https://github.com/gnome-terminator/terminator/releases/download/v ${ PV } / ${ P } .tar.gz"LICENCIA = "GPL-2" RANURA = "0" PALABRAS CLAVE = "amd64 ~ppc x86" IUSE = "dbus +libnotify"RDEPEND = " >=dev-libs/glib-2.32:2 dev-libs/keybinder:3[introspection] dev-python/configobj[ ${ PYTHON_USEDEP } ] dev-python/psutil[ ${ PYTHON_USEDEP } ] dev-python/pycairo[ ${ PYTHON_USEDEP } ] dev-python/pygobject:3[ ${ PYTHON_USEDEP } ] >=x11-libs/gtk+-3.16:3 x11-libs/vte:2.91[introspection] dbus? ( dev-python/dbus-python[ ${ PYTHON_USEDEP } ] ) libnotify? ( x11-libs/libnotify[introspection] ) " BDEPEND = " dev-util/intltool " configuración de distutils_enable_tests.py PARCHES =( " ${ FILESDIR } " /terminator-1.91-without-icon-cache.patch " ${ FILESDIR } " /terminator-1.91-desktop.patch " ${ FILESDIR } " /terminator-1.92-make-tests-fail.patch " ${ FILESDIR } " /terminator-1.92-metainfo.patch ) src_prepare () { xdg_environment_reset distutils-r1_src_prepare } src_test () { virtx distutils-r1_src_test } pkg_postinst () { xdg_desktop_database_update xdg_icon_cache_update } pkg_postrm () { xdg_desktop_database_update xdg_icon_cache_update }Paquetes binarios
Gentoo sí cuenta con un formato de empaquetado binario, que consiste en un archivo .tbz2 ( tar con compresión bzip2 ) con metadatos adicionales . Esta función permite crear paquetes binarios en un sistema (usando Portage buildpkg) quickpkgy, posteriormente, instalarlos rápidamente en sistemas compatibles (con Portage getbinpkg) emerge -K. Consulte la sección "Características de Portage" en el Manual de Gentoo Linux para obtener más información.
Perfiles
Portage cuenta con un conjunto de perfiles para diferentes casos de uso y destinos de host que suelen estar versionados por los desarrolladores principales, lo que puede modificar el funcionamiento de Portage y su interacción con el sistema en lo que respecta a la jerarquía del sistema de archivos, las actualizaciones de la cadena de herramientas, libc y los sistemas de inicio. Los perfiles también pueden aplicar configuraciones de ebuild, indicadores del compilador y enmascaramiento en el conjunto de mundos. [ 10 ]
Enmascaramiento
El enmascaramiento es el método que utiliza Gentoo para determinar qué paquetes son adecuados para un sistema. Los ebuilds diseñados para arquitecturas diferentes o software experimental suelen estar enmascarados de forma que impiden que un sistema estable los instale sin la intervención del usuario.
Los paquetes que generalmente solo requieren algunas pruebas pero que a menudo funcionan bien se denominan enmascarados por palabras clave (es decir, están disponibles para sistemas con una entrada ACCEPT_KEYWORDS make.conf que comienza con el carácter ~, como ~x86, ~amd64, ~ppc). Un paquete enmascarado por palabras clave individual se puede desenmascarar agregando una línea con el nombre completo del paquete y la palabra clave a algún archivo dentro del /etc/portage/package.accept_keywords/directorio. Los usuarios también pueden crear subdirectorios aquí, lo que permite una organización personalizada. Por ejemplo, si un paquete enmascarado tuviera múltiples dependencias enmascaradas, el usuario podría crear un directorio con el nombre del paquete enmascarado original y colocar todos los archivos de máscara para el paquete y sus dependencias en ese directorio. Este esquema reemplaza el esquema anterior de tener /etc/portage/package.accept_keywordscomo un solo archivo de texto.
Los paquetes con problemas conocidos o que no se consideran lo suficientemente maduros como para ser candidatos a la versión estable están enmascarados por uno de los diversos archivos package.mask en /usr/portage/profiles, y dichas entradas generalmente van acompañadas de un comentario de los desarrolladores que explica el motivo del enmascaramiento.
Gentoo/Alt
Gentoo/Alt es un proyecto creado para gestionar la adaptación del framework Portage y otras funcionalidades a otros sistemas operativos , como Mac OS X y los sistemas BSD libres . Gentoo/Alt fue creado por Pieter Van den Abeele y Daniel Robbins después de que Pieter Van den Abeele fundara Gentoo para Mac OS X.
Mac OS X
Gentoo para Mac OS X fue el primer proyecto de Gentoo que no se basaba en Linux y se centró en llevar la experiencia de Gentoo al sistema operativo de Apple mediante la introducción del sistema Portage como una entidad independiente. Esto era similar a Fink y MacPorts , pero utilizaba Portage en lugar de un sistema tipo Debian o Ports. Posteriormente, Gentoo para Mac OS X se convirtió en un subproyecto de Gentoo/Alt. El proyecto ya no está activo, porque su premisa principal de usar y no modificar el sistema operativo anfitrión no resultó ser realista y acabó rompiendo la mayoría de los paquetes o dificultándoles su mantenimiento. Gentoo para Mac OS X ha sido reemplazado por Gentoo Prefix , que es lo que Gentoo ofrece actualmente a los usuarios de Mac OS X. [ 11 ]
El proyecto Prefix en Mac OS X está probado y es compatible con Mac OS X Tiger, Leopard y Snow Leopard en arquitecturas PowerPC , IA-32 y x86-64 . [ 12 ]
FreeBSD
Gentoo/FreeBSD traslada el diseño, la estructura y las herramientas de Gentoo Linux, como Portage y la arquitectura base de Gentoo Linux, al sistema operativo FreeBSD . Se utiliza el conjunto de herramientas GNU de Gentoo en lugar del original de FreeBSD.
Aunque el proyecto ya no recibe mantenimiento por parte de desarrolladores activos de Gentoo, existen instrucciones que permiten la instalación de un sistema completo Gentoo/FreeBSD. [ 13 ] Los ebuilds del sistema FreeBSD están integrados en el árbol principal de Portage, pero este puerto está lejos de estar completo debido a la cantidad de paquetes que necesitan ser portados y la falta de un Live CD adecuado ( durante la instalación se utiliza el Live CD de FreeSBIE o el CD de configuración de FreeBSD).
El logotipo actual (semi)oficial de Gentoo/FreeBSD es una "g" demonizada, derivada del logotipo original de Gentoo Linux e inspirada en el BSD Daemon . Fue diseñado por Marius Morawski, en respuesta a un concurso no oficial lanzado por Diego Elio Pettenò en su blog. [ 14 ]
NetBSD
Gentoo/NetBSD es un proyecto que proporciona un entorno de usuario GNU gestionado por Portage con un núcleo NetBSD. El proyecto fue iniciado por Damian Florczyk. Solo está dirigido a la arquitectura x86 y el sistema en su conjunto se encuentra en un estado incompleto.
OpenBSD
Gentoo/OpenBSD fue un subproyecto de Gentoo/*BSD para portar características de Gentoo, como Portage, al sistema operativo OpenBSD . Fue iniciado originalmente por Grant Goodyear y está obsoleto. [ 16 ] En la página del proyecto se proporciona una guía de instalación, pero también está marcada como obsoleta.
DragonFlyBSD
Gentoo/DragonFlyBSD es una adaptación no oficial del kernel DragonFlyBSD . El proyecto es desarrollado por Robert Sebastian Gerus. [ 17 ]
GNU Hurd
El 1 de abril de 2026 se publicó una versión experimental para GNU Hurd. [ 18 ]
Androide
Dirigido por Benda Xu, "Gentoo RAP para dispositivos Android " instala una variante de Gentoo llamada Gentoo RAP en un prefijo de directorio junto con Android. [ 19 ] El kernel de Linux es utilizado tanto por Android como por Gentoo RAP. [ 19 ]
Interix
Gentoo/Interix (eprefix) es una versión de Gentoo que se ejecuta sobre el Subsistema Interix para Windows, también conocido como Servicios de Microsoft Windows para UNIX (SFU) o Subsistema para Aplicaciones Basadas en Unix (SUA). Una de las ventajas del proyecto Gentoo/Interix es la capacidad de instalar y usar el sistema Portage para desarrollar aplicaciones nativas de Windows (requiere Visual Studio; la versión 2008 Express Edition también funciona). Sin embargo, esta función no es compatible con la amplia variedad de paquetes compatibles con otras plataformas (incluido Interix).
Portaris
En torno a 2006 se anunció "Portaris", una versión no oficial del sistema operativo Solaris , pero nunca llegó a hacerse pública. Fue reemplazada por el proyecto Gentoo Prefix.
Plan 9
Iniciado en 2011 como un proyecto de Google Summer of Code , Plan 9 For Gentoo toma la base de Gentoo y superpone un espacio de usuario inspirado en Plan 9. [ 20 ] Los objetivos declarados del proyecto son tener mejor soporte de hardware , mejor soporte de software y crear un "choque cultural" para las personas que han usado previamente sistemas Linux . [ 20 ] El proyecto es mantenido por Robert Seaton. [ 20 ]
Véase también
Referencias
- ↑ "proj/portage.git" . 28 de abril de 2024. Consultado el 17 de mayo de 2024 .
- 1 2 3 "El proyecto de código abierto Gentoo Portage en Open Hub: Página de idiomas" . Open Hub . Consultado el 18 de mayo de 2024 .
- ↑ "Acerca de Gentoo" . gentoo.org . Archivado del original el 21 de diciembre de 2018. Consultado el 23 de agosto de 2019 .
- ↑ Mi sistema operativo de estación de trabajo: Gentoo | Sitio web de Tom Chance Archivado el 8 de julio de 2009 en Wayback Machine
- ↑ Daniel Robbins (10 de octubre de 2002). "Gentoo Linux Reloaded - O'Reilly Media" . Archivado del original el 14 de octubre de 2017. Recuperado el 27 de mayo de 2015 .
- ↑ "OSNews.com" . Archivado del original el 29 de septiembre de 2007. Consultado el 27 de mayo de 2015 .
- ↑ "Proyecto: Especificación del gestor de paquetes" . wiki.gentoo.org . Archivado del original el 8 de julio de 2019. Consultado el 23 de agosto de 2019 .
- ↑ Documentación de Gentoo Linux - Creación de la distribución, Parte 3 Archivado el 22/12/2014 en Wayback Machine
- ↑ "ebuild - Gentoo Wiki" . wiki.gentoo.org . Archivado del original el 17/12/2019 . Consultado el 17/12/2019 .
- ↑ "Perfil (Portage) - Wiki de Gentoo" .
- ↑ Groffen, Fabian (15 de diciembre de 2005). "Objetivos del proyecto Gentoo para Mac OS X" . Archivado del original el 21 de mayo de 2008. Consultado el 20 de julio de 2017 .
- ↑ Groffen, Fabian (1 de junio de 2009). "Proceso de arranque del prefijo Gentoo para Mac OS X" . Archivado del original el 19 de julio de 2009. Consultado el 20 de julio de 2017 .
- 1 2 3 4 "Gentoo FreeBSD" . Gentoo Wiki . 2018-08-20. Archivado del original el 2014-01-06 . Recuperado el 2019-03-06 .
- ↑ Pettenò, Diego Elio (16 de julio de 2005). "Concurso de arte no tan oficial de Gentoo/FreeBSD" . Blog de Flameeyes . Archivado del original el 19 de abril de 2019. Consultado el 20 de julio de 2017 .
- ^ "Gentoo OpenBSD - Wiki de Gentoo" .
- ↑ "Gentoo OpenBSD - Gentoo wiki" . wiki.gentoo.org . Consultado el 25/11/2024 .
- ↑ Goodyear, Grant; Pettenò, Diego Elio (19 de octubre de 2006). "Gentoo/*BSD" . Archivado del original el 28 de diciembre de 2007. Consultado el 20 de julio de 2017 .
- ↑ " [ gentoo-dev ] [ PATCH 00/94 ] Porting Gentoo to the Hurd - Sam James" . public-inbox.gentoo.org . Consultado el 1 de mayo de 2026 .
- 1 2 "Proyecto:Android - Gentoo Wiki" . Wiki.gentoo.org . 13 de enero de 2016. Archivado del original el 24 de octubre de 2016. Consultado el 24 de septiembre de 2016 .
- 1 2 3 Seaton, Robert (2011-08-01). "Plan 9 From Gentoo: Plan 9 Meets Gentoo" . Archivado del original el 26-04-2012 . Recuperado el 20-07-2017 .
Enlaces externos
- Documentación oficial
- Características de Gentoo Portage
- Introducción al transporte de pingüinos Gentoo
- Trabajando con Portage
- Paquetes Gentoo , información sobre los ebuilds disponibles actualmente.
- Documentación no oficial
- Gentoo-Portage , presentación alternativa de la información actual de ebuild
- Utilizando Portage
- Instalación de Portage en otras distribuciones de Linux
- Software similar
- Emerde, un proyecto tipo portaje para Slackware
- Pkgcore , reimplementación de Portage en BSD
- Paludis Archivado el 23/09/2020 en Wayback Machine , un gestor de paquetes que se puede utilizar con ebuilds y otros formatos.
- Arch Build System es un sistema similar a los puertos para Arch Linux.
- Sistemas de gestión de paquetes gratuitos
- Software libre programado en Python
- Gentoo Linux
- Software relacionado con la gestión de paquetes de Linux
- Software que utiliza la Licencia Pública General de GNU.