Manual de Gentoo: PPC/Trabajar/EnvVar

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Handbook:PPC/Working/EnvVar and the translation is 100% complete.
Manual PPC
Instalación
Acerca de la instalación
Elegir los medios
Configurar la red
Preparar los discos
Instalar el stage3
Instalar el sistema base
Configurar el núcleo
Configurar el sistema
Instalar las herramientas
Configurar el cargador de arranque
Terminar
Trabajar con Gentoo
Introducción a Portage
Ajustes USE
Características de Portage
Sistema de guiones de inicio
Variables de entorno
Trabajar con Portage
Ficheros y directorios
Variables
Mezclar ramas de software
Herramientas adicionales
Repositorios personalizados de paquetes
Características avanzadas
Configuración de la red
Comenzar
Configuración avanzada
Configuración de red modular
Conexión inalámbrica
Añadir funcionalidad
Gestión dinámica


Variables de entorno

Introducción

Una variable de entorno es un objeto designado para contener información usada por una o más aplicaciones. Usar variables de entorno hace que cualquiera pueda cambiar una opción de configuración para una o más aplicaciones fácilmente.

Ejemplos destacados

La siguiente tabla muestra un listado de variables de entorno usado por un sistema Linux y describe su uso. Valores de ejemplo se muestran después de la tabla.

Variable Descripción
PATH Esta variable contiene una lista de directorios separados por ":" en la cual el sistema buscará los archivos ejecutables. Al introducir el nombre de un ejecutable (como ls, rc-update o emerge) que no se encuentre en alguno de los directorios listados, el sistema no lo encontrará, (a menos que se introduzca la ruta completa, por ejemplo: /bin/ls).
ROOTPATH Esta variable tiene la misma función que PATH, pero únicamente contiene los directorios que el sistema debe revisar cuando el usuario root introduce una orden.
LDPATH Esta variable contiene una lista de directorios separados por ":" en la cual el enlazador dinámico busca para encontrar una librería.
MANPATH Esta variable contiene una lista de directorios separados por ":" en los cuales la orden man buscará las páginas de manual.
INFODIR Esta variable contiene una lista de directorios separados por ":" en la cual la orden info buscará las páginas info.
PAGER Esta variable contiene la ruta hacia el programa utilizado para mostrar el contenido de los ficheros (como less o more).
EDITOR Esta variable contiene la ruta hacia el programa utilizado para modificar el contenido de los archivos (como nano o vi).
KDEDIRS Esta variable contiene una lista de directorios separados por ":" los cuales contienen material específico de KDE.
CONFIG_PROTECT Esta variable una lista de directorios separados por espacio los cuales deben ser protegidos por Portage durante las actualizaciones de paquetes.
CONFIG_PROTECT_MASK Esta variable una lista de directorios separados por espacio los cuales no deben ser protegidos por Portage durante las actualizaciones de paquetes.

A continuación puedes encontrar ejemplos de definiciones para todas estas variables:

CÓDIGO Ejemplos de asignaciones para las variables mencionadas
PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin"
ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
MANPATH="/usr/share/man:/usr/local/share/man"
INFODIR="/usr/share/info:/usr/local/share/info"
PAGER="/usr/bin/less" EDITOR="/usr/bin/vim"
KDEDIRS="/usr"
# Directorios que están protegidos durante las actualizaciones de paquetes.
# Observe el uso de \ (barras invertidas) al final de las siguientes líneas, que se interpretan como una sola línea delimitada por espacios.
CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \
                /usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \
                /usr/share/texmf/tex/platex/config/ /usr/share/config"
# Directorios que _no_ están protegidos durante las actualizaciones de paquetes.
CONFIG_PROTECT_MASK="/etc/gconf"

Definir variables globales

El directorio env.d

Para centralizar las definiciones de estas variables, Gentoo introdujo el directorio /etc/env.d/. Dentro de este directorio se encuentran disponibles una serie de archivos, como 50baselayout, gcc/config-x86_64-pc-linux-gnu, etc. que contienen las variables que necesita la aplicación mencionada en su nombre.

Por ejemplo, cuando se instala gcc, el ebuild crea un archivo llamado gcc/config-x86_64-pc-linux-gnu que contiene las definiciones de las siguientes variables:

ARCHIVO /etc/env.d/gcc/config-x86_64-pc-linux-gnuVariables de entorno predeterminadas habilitadas para GCC 13
GCC_PATH="/usr/x86_64-pc-linux-gnu/gcc-bin/13"
LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/13:/usr/lib/gcc/x86_64-pc-linux-gnu/13/32"
MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/13/man"
INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/13/info"
STDCXX_INCDIR="g++-v13"
CTARGET="x86_64-pc-linux-gnu"
GCC_SPECS=""
MULTIOSDIRS="../lib64:../lib"

Otras distribuciones pueden indicarle al administrador del sistema que cambie o agregue dichas definiciones de variables de entorno en /etc/profile u otras ubicaciones. Gentoo, por otro lado, facilita a los administradores de sistemas (y a Portage) el mantenimiento y la gestión de las variables de entorno sin tener que tener en cuenta los numerosos archivos que pueden contener variables de entorno.

Por ejemplo, cuando se actualiza gcc, los archivos asociados en /etc/env.d/gcc también se actualizan sin solicitar ninguna interacción administrativa.

Existe la posibilidad ocasional de que se le solicite al administrador del sistema que configure una determinada variable de entorno para todo el sistema. Como ejemplo, tomemos la variable http_proxy. En lugar de editar un archivo en el directorio /etc/profile, cree un archivo llamado /etc/env.d/99local e ingrese la definición en él:

ARCHIVO /etc/env.d/99localAsignando una variable de entorno globalmente=bash
http_proxy="proxy.server.com:8080"

Al utilizar el mismo archivo para todas las variables de entorno personalizadas, los administradores del sistema tienen una descripción general rápida de las variables que ellos mismos han definido.

env-update

Varios archivos dentro del directorio /etc/env.d agregan definiciones a la variable PATH. Esto no es un error: cuando se ejecuta el comando env-update, agregará las distintas definiciones antes de actualizar de forma única cada variable de entorno, lo que facilita que los paquetes (o los administradores de sistemas) agreguen sus propias configuraciones de variables de entorno sin interferir con los valores ya existentes.

El guión env-update concatenará los valores alfabéticamente ordenados por el nombre de los ficheros de /etc/env.d/. Los nombres de fichero deben comenzar con dos dígitos decimales.

CÓDIGO Orden de actualización utilizada por env-update
09sandbox    50baselayout     51dconf
     +------------+----------------+-----------+
CONFIG_PROTECT_MASK="/etc/sandbox.d /etc/gentoo-release /etc/dconf ..."

La concatenación de variables no siempre funciona, solo con las siguientes variables: ADA_INCLUDE_PATH, ADA_OBJECTS_PATH, CLASSPATH, KDEDIRS, PATH, LDPATH, MANPATH, INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT, CONFIG_PROTECT_MASK, PRELINK_PATH, PRELINK_PATH_MASK, PKG_CONFIG_PATH, and PYTHONPATH</va. Para el resto de variables, se utiliza el último valor definido (en orden alfabético de ficheros en /etc/env.d/).

Puede incluir más variables en esta lista de variables concatenadas añadiendo el nombre de la variable a la variable COLON_SEPARATED o a la variable SPACE_SEPARATED (definidas también en el fichero /etc/env.d/).

Cuando ejecute env-update, el guión creará todas las variables de entorno y las colocará en /etc/profile.env (el cual es usado por /etc/profile). Además, también extraerá la información de la variable LDPATH y la usará para crear /etc/ld.so.conf. Después de esto, ejecutará ldconfig para recrear el archivo usado por el enlazador dinámico: /etc/ld.so.cache.

Si quiere observar el efecto de env-update inmediatamente después de ejecutarlo, ejecute la siguiente orden para actualizar su entorno. Posiblemente, los usuarios que instalaron Gentoo ellos mismos, recordarán estas instrucciones de la instalación:

root #env-update && source /etc/profile
Nota
La orden anterior actualiza únicamente las variables en la terminal actual, en las nuevas consolas y sus hijas. Sabiendo esto, si se está trabajando en X11, necesitará ejecutar source /etc/profile en las nuevas terminales que abra o reiniciar las X para que las nuevas terminales definan las nuevas variables. Si está utilizando un gestor de inicio, conviértase en root y reinicie el servicio /etc/init.d/xdm.
Importante
No se pueden utilizar las variables del terminal para definir otras variables. Esto implica que cosas como TAL="$CUAL" (donde $CUAL es otra variable) están prohibidas.

Definir variables locales

Específicas de usuario

No siempre queremos definir variables de entorno globales. Por ejemplo, podríamos querer añadir /home/mi_usuario/bin y el directorio de trabajo actual (en el cual nos encontramos), a la variable PATH, pero no queremos que todos los usuarios de nuestro sistema lo tengan en su PATH. Si queremos definir una variable localmente, debemos usar ~/.bashrc o ~/.bash_profile:

ARCHIVO ~/.bashrcExtendiendo PATH para uso local
# Dos puntos sin incluir después un directorio son tratados como el directorio de trabajo actual
PATH="${PATH}:/home/mi_usuario/bin:"

Cuando vuelva a iniciar la sesión, su variable PATH será actualizada.

Específicas de la sesión

En ocasiones, se requieren definiciones aún más estrictas. Puede querer usar binarios de un directorio temporal que ha creado sin tener que usar la trayectoria completa a los binarios o sin editar ~/.bashrc. Para estos momentos necesitará esto.

En este caso, puede definir la variable PATH en su sesión activa usando la orden export. Mientras no cierre la sesión, la variable PATH usará los valores temporales.

root #export PATH="${PATH}:/home/my_user/tmp/usr/bin"