Portage es un sistema de gestión de paquetes creado originalmente para Gentoo Linux y también para ChromeOS , Calculate y Funtoo Linux, entre otros. Portage se basa en el concepto de colecciones de puertos . A veces se hace referencia a Gentoo como una 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 ocupó de usar Portage para administrar otros sistemas operativos, como BSD , macOS y Solaris . La más notable de estas implementaciones es el proyecto Gentoo/FreeBSD .
Existe un proyecto en curso denominado Package Manager Specification (PMS), [7] cuyo objetivo es estandarizar y documentar el comportamiento de Portage, permitiendo que el árbol de ebuilds y los paquetes del sistema Gentoo se utilicen con gestores de paquetes alternativos como Paludis y pkgcore. Su objetivo es especificar el conjunto exacto de características y comportamiento de los gestores de paquetes y ebuilds, y servir como referencia autorizada para Portage.
Portage es similar a la gestión de paquetes al estilo BSD conocida como ports , y fue diseñada originalmente teniendo en mente 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 construir e instalar paquetes, mientras que emerge proporciona una interfaz para ebuild: administrar un repositorio de ebuild, resolver dependencias y problemas similares. (Estos dos, por lo tanto, tienen aproximadamente la misma relación que rpm tiene con yum , o dpkg tiene con APT ).
Hay disponible una interfaz gráfica de usuario basada en GTK+ , Porthole , para trabajar con Portage. También está disponible la interfaz gráfica de usuario Himerge , que significa "Interfaz Haskell para eMerge".
Portage se caracteriza por su función principal: compilar desde el código fuente los paquetes que el usuario desea instalar. Al hacerlo, permite la personalización de las opciones del compilador y de la aplicación de destino para que se ajusten a las especificaciones del sistema y a los propios deseos del usuario. Las funcionalidades relacionadas con la gestión del sistema incluyen: permitir la instalación paralela de versiones de paquetes, realizar un seguimiento de las dependencias entre paquetes , administrar una base de datos de paquetes instalados, proporcionar un repositorio de ebuild local y sincronizar el árbol local de Portage con repositorios remotos. Las funcionalidades relacionadas con la instalación de paquetes individuales incluyen: especificar las configuraciones de compilación para la máquina de destino y elegir los componentes del paquete.
Portage distingue entre tres niveles de estabilidad en ebuilds: estable (por ejemplo, el software funciona como está previsto sin problemas de seguridad conocidos al 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 paquetes enmascarados (rotos o muy inseguros).
La herramienta de línea de comandos emerge es el corazón de Portage. El comando se puede personalizar con muchas 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 administra dependencias, ejecuta ebuilds y mantiene el árbol Portage local y la base de datos de paquetes instalados. Las configuraciones de compilación utilizadas por ebuilds se pueden cambiar a través de la variable de entorno CFLAGS , según las especificaciones de cada computadora y el deseo de optimización del usuario. La utilidad emerge ejecuta ebuilds en un entorno de pruebas . De esta manera, el sistema está protegido del software ejecutado por el ebuild y los binarios resultantes solo se fusionan después de una compilación exitosa y una instalación en un entorno de pruebas.
Lo que emerge instala como dependencias se ve afectado por la configuración del indicador USE. Estos parámetros deciden qué características opcionales se incluirán al instalar o actualizar una aplicación. El comando emerge también se puede utilizar para descargar e instalar archivos binarios precompilados.
El sistema Portage ofrece el uso de "indicadores USE", que permiten a los usuarios indicar qué características del software les gustaría incluir (y excluir) al crear paquetes. Por ejemplo, hay un indicador USE para incluir compatibilidad con DVD , cuando esté disponible, en paquetes compilados con el indicador habilitado. Los indicadores USE afectan qué dependencias son necesarias, generalmente afectando qué características opcionales se incorporarán a un programa determinado cuando se compile. Por ejemplo, en paquetes que usan un script de configuración , el indicador USE feature
se traduciría a ./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 enumera los indicadores junto con su descripción. Una lista de indicadores USE disponibles está disponible en el índice de indicadores USE del sitio web de Gentoo.
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 SRPMs . [9] El repositorio oficial proporciona más de 19.600 ebuilds, la mayoría de los cuales se distribuyen por los servidores espejo de Gentoo . Se pueden obtener ebuilds nuevos y actualizados sincronizando los repositorios de ebuild locales con los servidores espejo. 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 todavía se instalan con emerge, simplemente agregando un "-bin" al nombre del paquete para instalar la versión binaria.
Ejemplo de ebuild para GNOME Terminator :
# Copyright 1999-2020 Gentoo Authors # Distribuido bajo los términos de la Licencia Pública General GNU v2EAPI = 7PYTHON_COMPAT =( python3_ { 6 ,7,8 } ) DISTUTILS_USE_SETUPTOOLS = "no"
heredar distutils-r1 virtualx xdg-utils DESCRIPCIÓN = "Varias terminales GNOME en una ventana" PÁGINA DE INICIO = "https://github.com/gnome-terminator/terminator" URI_DE_ORIGINAL = "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[introspección] 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[introspección] dbus? ( dev-python/dbus-python[ ${ PYTHON_USEDEP } ] ) libnotify? ( x11-libs/libnotify[introspección] ) " BDEPEND = " dev-util/intltool "
distutils_enable_tests setup.pyPARCHES =( " ${ 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 () { actualización de la base de datos del escritorio xdg actualización de la caché de iconos xdg } pkg_postrm () { xdg_desktop_database_update xdg_icon_cache_update }
Gentoo tiene un formato de empaquetado binario, que es un archivo .tbz2 ( tar con compresión bzip2 ) con metadatos adicionales . Esta característica permite la creación de paquetes binarios en un sistema (utilizando Portage buildpkg
o quickpkg
) seguida de una rápida instalación en sistemas compatibles (con Portage getbinpkg
o emerge -K
). Consulte Características de Portage en el Manual de Gentoo Linux para obtener más información.
El enmascaramiento es la forma en que Gentoo determina qué paquetes son adecuados para un sistema. Los ebuilds diseñados para diferentes arquitecturas o software experimental suelen estar enmascarados de manera que se impida 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 de make.conf ACCEPT_KEYWORDS que comience 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 tenía 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_keywords
un solo archivo de texto.
Los paquetes con problemas conocidos o que no se consideran lo suficientemente maduros para ser candidatos a ser estables están enmascarados por uno de los diversos archivos package.mask en /usr/portage/profiles, y dichas entradas generalmente están acompañadas por un comentario de los desarrolladores que explica el motivo de la máscara.
Gentoo/Alt es un proyecto creado para gestionar la portabilidad del framework Portage y otras características a otros sistemas operativos , como Mac OS X y los 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.
Gentoo para Mac OS X fue el primer proyecto no Linux de Gentoo y se centró en hacer que la experiencia Gentoo estuviera disponible en el sistema operativo de Apple mediante la introducción del sistema Portage como una entidad separada. Esto era más o menos similar a Fink y MacPorts , pero utilizaba Portage en lugar de un sistema similar a Debian o Ports. Más tarde, Gentoo para Mac OS X se convirtió en un subproyecto de Gentoo/Alt. El proyecto ya no está activo, porque su suposición principal de usar y no modificar el sistema operativo anfitrión parecía no ser realista y finalmente rompió la mayoría de los paquetes o los hizo difícilmente mantenibles. Gentoo para Mac OS X ha sido reemplazado por Gentoo Prefix, que es actualmente lo que Gentoo ofrece a los usuarios de Mac OS X. [10]
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 . [11]
Gentoo/FreeBSD incorpora el diseño, la estructura y las herramientas de Gentoo Linux, como Portage y el diseño básico de Gentoo Linux, al sistema operativo FreeBSD . Se utiliza la cadena de herramientas GNU de Gentoo en lugar de la original de FreeBSD.
Aunque el proyecto ya no es mantenido por ningún desarrollador activo de Gentoo, hay instrucciones que permiten la instalación de un sistema Gentoo/FreeBSD completo. [12] Los ebuilds del sistema FreeBSD están integrados en el árbol de portage principal, 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 ( el Live CD de FreeSBIE o el CD de instalación de FreeBSD se usa durante la instalación).
El logo (semi)oficial actual de Gentoo/FreeBSD es una "g" demonizada, derivada del logo 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]
Gentoo/NetBSD es un proyecto para proporcionar un espacio de usuario GNU administrado por Portage con un núcleo NetBSD. El proyecto fue iniciado por Damian Florczyk. Solo se ha abordado la arquitectura x86 y el sistema en su conjunto se encuentra en un estado incompleto.
Gentoo/OpenBSD es un subproyecto de Gentoo/*BSD cuyo objetivo es trasladar características de Gentoo, como Portage, al sistema operativo OpenBSD . Fue iniciado originalmente por Grant Goodyear y actualmente se encuentra [ ¿cuándo? ] en una pausa en su desarrollo. Karol Pasternak mantiene actualmente una imagen ISO basada en OpenBSD 3.8 que se puede descargar desde el sitio web del proyecto.
Gentoo/DragonFlyBSD es actualmente [¿ cuándo? ] un puerto no oficial del núcleo DragonFlyBSD . El proyecto está siendo desarrollado por Robert Sebastian Gerus. [15]
También se estaba desarrollando un puerto no oficial para GNU Hurd , [16] pero fue abandonado a finales de 2006.
Liderado por Benda Xu, "Gentoo RAP para dispositivos Android " instala una variante de Gentoo llamada Gentoo RAP en un prefijo de directorio junto con Android. [17] El núcleo Linux es utilizado tanto por Android como por Gentoo RAP. [17]
Gentoo/Interix (eprefix) es un port de Gentoo que se ejecuta sobre el Subsistema Interix para Windows, también conocido como Servicios Microsoft Windows para UNIX (SFU) o Subsistema para Aplicaciones basadas en Unix (SUA). Un resultado del proyecto Gentoo/Interix es la capacidad de instalar y usar el sistema Portage para generar aplicaciones nativas de Windows (requiere Visual Studio, 2008 Express Edition también lo hará). Sin embargo, esta característica no es compatible con la amplia variedad de paquetes compatibles con otras plataformas (incluido Interix).
En 2006 se anunció un puerto no oficial para el sistema operativo Solaris , "Portaris", pero nunca se hizo público. Fue reemplazado por el proyecto Gentoo Prefix.
Plan 9 For Gentoo, que comenzó en 2011 como un proyecto de Google Summer of Code , toma la base de Gentoo y la superpone a un espacio de usuario inspirado en Plan 9. [ 18] Los objetivos declarados del proyecto son tener un mejor soporte de hardware , un mejor soporte de software y crear un "choque cultural" para las personas que han utilizado previamente sistemas Linux . [18] El proyecto es mantenido por Robert Seaton. [18]