Introducción . Como ya he visto a varios usuarios usando Gentoo como distribución preferida, me pongo a redactar este pequeño articulo de cómo administrarlo con las herramientas y las configuraciones que nos ofrece esta excelente distribución a mi parecer. Por consiguiente, algunas recomendaciones son las que aconstumbro hacer y no están sujetas como obligatorias..
El archivo make.conf
Este archivo contiene toda las información necesaria para que emerge y portage hagan su labor debidamente. Ahora veamos la estructura de una configuración común de make.conf ( osea, la mia xD):
UnderHouse ~ # more /etc/make.conf
# These settings were set by the catalyst build script that automatically built
this stage
# Please consult /etc/make.conf.example for a more detailed example
CFLAGS="-O2 -march=pentium4 -pipe"
##-fomit-frame-pointer"
CHOST="i686-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"
USE="browserplugin nvidia nomalloccheck utf8 apache2 php imap
unicode gtk gpm directfbi foomaticdb nls spell -3dfx -aim alsa
-arts cdr -cjk debug doc -dedicate dga directfb encode fdftk flash
gnome -hardened -icq -jabber java -kde -qt -mmx mpeg msn nls opengl
oss samba svga usb xmms -yahoo nptl aac aalib -acpi apm cups dri fam
fbcon gphoto2 gstreamer hal mp3 -mozilla firefox esd sdl usb"
GENTOO_MIRRORS="http://linuv.uv.es/mirror/gentoo"
AUTOCLEAN="yes"
LINGUAS='es'
CONFIG_PROTECT_MASK="/usr/X11R6/bin/startx"
MAKEOPTS="-j2"
#PORTDIR_OVERLAY=/usr/local/portage
PORTDIR_OVERLAY="/usr/local/portage/xgl-coffee"
FEATURES="parallel-fetch"
INPUT_DEVICES="evdev keyboard mouse"
VIDEO_CARDS="nvidia fbded nv none vesa"
PORTAGE_ELOG_CLASSES="log error warn info"
PORTAGE_ELOG_SYSTEM="save"
CFLAGS: Esta variable contiene las opciones que usa el compilador (gcc) para compilar los paquetes para instalar/reinstalar. Por ejemplo yo tengo estas opciones:
-O2 Es el tipo de optimización
-march=pentium4 Es la arquitectura de mi sistemam, que es com ha visto un pentium 4
-pipe Usa tuberias para la compilación..
Generalmente se recomienda las opciones que generen una optimización segura y efectiva ( si estas opciones son muy agresivas los paquetes pueden llegar a tener errores ). Ahora la pregunta obligatoria, ¿Qué opciones uso para mi sistema?. Bueno hay una lista recomendada en la siguiente dirección:
http://gentoo-wiki.com/Safe_CflagsCHOST: Simplemente es el tipo de arquitectura que uses..
CXXFLAGS: Otra variable más para el compilador, generalmente toma las mismas definidas anteriormente en CFLAGS
USE: Esta es una de las variables que más me gustan :D. El concepto es simple, los paquetes disponen de ciertos soportes, pero que soportes? mirar:
http://www.gentoo-portage.com/USE || less /usr/portage/profiles/use.desc
Por ejemplo, para que mis paquetes puedan integrarse al gnome uso la use "gnome" xD, si quiero que mis paquetes tenga soporte para varios idiomas uso la use "nls". Asi mismo para dar soporte escribimos la use tal y cual es, para quitarselo antepnemos un signo menos "-" antes del nombre..
Nota importante: Las USE's definidas en make.conf serán las usadas siempre, osea, emerge al instalar/actualizar el sistema siempre usará los soporte definidos por esta variable, por esos es importante colocar los soportes que queremos que "siempre" tengan nuestros paquetes..
GENTOO_MIRRORS: Simplemente el mirror que usará gentoo para actualizar la BD de portage
AUTOCLEAN="yes" Significa que los paquetes descargados (/usr/portage/distfiles) serán borrados después de un tiempo (no recuerdo bien el lapso, pero creo es cada mes o algo similar)..
LINGUAS='es': Algunos paquetes usan esta variable para dar soporte a ciertos idiomas incluyendo el español :P
CONFIG_PROTECT_MASK: Especifíca que archivos no seran modificados por emerge..
MAKEOPTS: Determina las compilaciones paralelas definidas por la cantidad de CPUS que tengas, en este caso como yo tengo solo un CPU le sumo uno "-j2", en caso de tener un CPU de doble nucleo ponemos "-j3"..
PORTDIR_OVERLAY: Es un directorio opcional para que emerge lo tenga en cuenta para paquetes definidos por los usuarios (ebuilds creados por nosotros, ebuils creados por desarroladores que no son del equipo de gentoo, etc..). Muy útil para pruebas y para agregar nuestros propios paquetes que no se encuentren en la BD de portage.
FEATURES="parallel-fetch": Esta opción habilita el poder bajar paquetes mientras a su vez se compola otro, útil al momento de actualizar todo el sistema..
INPUT_DEVICES: Esta variable la he puesto por el cambio a xorg-7.x, simplemente poner los dispositivos para los que queremos soporte. La lista es:
INPUT_DEVICES="evdev keyboard mouse -acecad -aiptek -calcomp -citron -digitaledge -dmc
-dynapro -elo2300 -elographics -fpit -hyperpen -jamstudio -joystick -magellan -magictouch
-microtouch -mutouch -palmax -penmount -spaceorb -summa -synaptics -tek4957 -ur98 -vmmouse
-void -wacom"
VIDEO_CARDS: Lo mismo que lo anterior pero ahora para el soporte de las tarjetas gráficas que queremos tener disponibles. La lista:
VIDEO_CARDS="nv nvidia vesa -apm -ark -chips -cirrus -cyrix -dummy -fbdev
-fglrx -glint -i128 -i740 -i810 -imstt -mach64 -mga -neomagic -nsc -r128
-radeon -rendition -s3 -s3virge -savage -siliconmotion -sis -sisusb -tdfx
-tga -trident -tseng -v4l -vga -via -vmware -voodoo"
PORTAGE_ELOG_CLASSES: Integra la herramienta elog para emegerge ( a partir de la versión 2.1 de portage :P ), esta herramienta es de uso obigatorio, cuantas veces nos hemos dado cuenta que al emergear un paquete nos coloca aviso del tipo:
~/.wine/config is now deprecated. For configuration either use
winecfg or regedit HKCU\Software\Wine
Todos estos avisos están puestos para los usuarios, habilitando elog no se nos escapará ni uno solo :D
También bastante útil para los foros y cuando tengas errores..
PORTAGE_ELOG_SYSTEM: Decide donde arrojar estos logs, en mi caso le ponga "save" para que los errores los coloque en /var/log/portage/elog/paquete-x.x.x.
Bueno ya terminamos uno de los archivos más importantes en Gentoo :P
El archivo /etc/portage/package.useEste archivo de configuración contiene las use que solo queremos para ciertos paquetes en especial..
Por ejemplo en un paquete quiero tener soporte X y en otros no, aqui podemos des/habilitar estas opciones por paquete..
echo "categoria/paquete -X +alsa -oss" >> /etc/portage/package.use
Les muestro un pedazo de mi archivo:
soullost@UnderHouse ~ $ head /etc/portage/package.use
sys-devel/gcc hardened
dev-lang/python -X
net-misc/openssh chroot
net-fs/samba -python
x11-base/xorg-x11 dlloader
app-editors/vim bash-completion vim-with-x
app-editors/vim-core bash-completion
www-client/mozilla crypt debug gnome ipv6 java mozcalendar
mozdevelop -moznocompose -moznoirc -moznomail -moznoxft mozsvg
-postgres ssl truetype -xinerama -xprint
media-video/totem xine
media-libs/xine-lib -X dvd imagemagick vcd vidix win32codecs ffmpeg
El archivo /etc/portage/package.keywordsSi tenemos una rama estable :P, aqui coloquemos todo esos paquetes que por alguna razón preferimos tener los paquetes más recientes en portage..
echo "categoria/paquete ~x86" >> /etc/portage/package.keywords
Les muestro un pedazo de mi archivo:
soullost@UnderHouse ~ $ head /etc/portage/package.keywords
net-im/amsn ~x86
app-emulation/kqemu ~x86
app-emulation/qemu-softmmu ~x86
app-emulation/qemu ~x86
app-emulation/qemu-user ~x86
media-gfx/gimp-print ~x86
net-print/foomatic ~x86
net-print/foomatic-db ~x86
net-print/foomatic-db-engine ~x86
net-print/foomatic-filters ~x86
También podemos escoger versiones de paquetes con los operadores >=. <=, = ..
echo ">=categoria/paquete-version ~x86" >> /etc/portage/package.keywords
El archivo /etc/portage/package.unmaskContiene todos los paquetes que queremos tener disponibles pero marcados como
masked por los desarrolladores de gentoo.
echo "categoria/paquete" >> /etc/portage/package.unmask
El archivo /etc/portage/package.maskContiene todos los paquetes que "nosotros" queremos enmascarar para de ninguna forma poder emergearlos
echo "categoria/paquete" >> /etc/portage/package.mask
Buscando paquetesYo regularmente uso eix para tal motivo :P
emerge eix
Uso:
eix paquete
Instalando paquetesMi procedimiento:
Primero miramos las dependencias de los paquetes y las uses por defecto:
emerge -pv paquete
Si es necesario agrego las uses a package.use, si hay dependencias de paquetes inestables o quiero alguna versión en especial al archivo package.keywords..
Ahora descargo/compilo e instalo:
emerge paquete
Otras formas de instalando paquetesPodemos saltarnos la parte de agregar paquetes a los archivos package.use, package.keyword, emergeando de las siguientes formas respectivamentes:
USE="gnome -kde" emerge paquete
ACCEPT_KEYWORDS="~x86" emerge paquete
emerge =categoria/paquete-version
Tengan en claro que esta formas son correctas pero que al actualizar el sistema estas no son tomadas, por ejemplo, si instalo un paquete inestable al momento de actualizar todo el sistema, emerge me va a instalar la versión estable del paquete. Lo mismo pasa con las uses, cuando actualize el sistema o reemergee sin especificar nada tomará las uses por defecto en make.conf
Desinstalando paquetes
emerge -C paquete ## -C desinstalar
emerge depclean ## Elimina dependencias rotas
revdep-rebuild ## Arregla librerias rotas
Cuidado con usar depclean, antes de desinstalar dependencias "según inservibles" te manda un listado, verifica que no este ningún paquete importante que puedan corromper el sistema..Ver dependencias de paquetesHay muchas herramientas disponibles en el paquete gentookit, una de ellas es el poder ver las dependencias de las que depende un paquete, por ejemplo para el apache:
UnderHouse ~ # equery depends apache
[ Searching for packages depending on apache... ]
dev-util/subversion-1.3.2-r1
dev-lang/php-5.1.4-r4
Útil al momento de desinstalar paquetes
Nota: Solo disponible para paquetes ya instalados en el sistema :P
Para mirar todos los archivos que componen el paquete apache:
UnderHouse ~ # equery files apache
/usr/share/man/man8
/usr/share/man/man8/ab2.8.gz
/usr/share/man/man8/apache2.8.gz
/usr/share/man/man8/apache2ctl.8.gz
/usr/share/man/man8/apxs2.8.gz
/usr/share/man/man8/logresolve2.8.gz
/usr/share/man/man8/rotatelogs2.8.gz
/usr/share/man/man8/suexec2.8.gz
/var
/var/cache
/var/cache/apache2
/var/cache/apache2/.keep
/var/lib
/var/lib/dav
/var/lib/dav/.keep
/var/log
/var/log/apache2
/var/log/apache2/.keep
/var/www
Más usos de equery:
Usage: equery <global-opts> command <local-opts>
where <global-opts> is one of
-q, --quiet - minimal output
-C, --nocolor - turn off colours
-h, --help - this help screen
-V, --version - display version info
-N, --no-pipe - turn off pipe detection
where command(short) is one of
belongs(b) <local-opts> files... - list all packages owning files...
changes(c) - not implemented yet
check(k) pkgspec - check MD5sums and timestamps of pkgspec's files
depends(d) <local-opts> pkgspec - list all direct dependencies matching pkgspec
depgraph(g) <local-opts> pkgspec - display a dependency tree for pkgspec
files(f) <local-opts> pkgspec - list files owned by pkgspec
glsa(a) - not implemented yet
hasuse(h) <local-opts> useflag - list all packages with useflag
list(l) <local-opts> pkgspec - list all packages matching pkgspec
size(s) <local-opts> pkgspec - print size of files contained in package pkgspec stats(t)
- not implemented yet
uses(u) <local-opts> pkgspec - display USE flags for pkgspec
which(w) pkgspec - print full path to ebuild for package pkgspec
Actualizando todo el sistemaLa manera más recomendable es hacerlo de la siguiente forma:
emerge --sync
emerge -uDav --newuse world
Opciones:
-u Actualizar
-D Actualiza dependencias
-av Pregunta antes de actualizar e información extra
--newuse Verifica si hay uses nuevas y si las tenemos especificadas las toma en cuenta..
world XDDDDDDDDD :P
Archivos de configuración nuevosCada vez que actualizamos servicios posiblemente nos tire un mensaje que necesitams ejecutar etc-update para actualizar archivos de configuración. Algo similar a esto:
Por favor, seleccione el fichero a editar introduciendo el número correspondiente.
(-1 para salir) (-3 para auto-combinar todos los ficheros restantes)
(-5 para auto-combinar SIN usar 'mv -i'):
Yo siempre recomiendo ver primero los archivos, una vez que te muestros los archivos y las lineas agregadas (++) o quitadas (--) puede decirir si dejarlo como estaba o poner la nueva configuración. Las opciones son:
1) Reemplazar el original con la actualización
2) Borrar la actualización, manteniendo el original inalterado
3) Combinar interactivamente el original y la actualización
4) Mostrar de nuevo las diferencias
Servicos/DemoniosNomenclatura:
Runlevels: boot default
[] - Opcional
< > - Obligatorio
Para mirar los servicios encendidos:
rc-update -s
Para mirar todos los servicios disponibles:
rc-update -s -v [runlevel]
Para buscar un servicio
rc-update -s -v [runlevel] | grep <servicio>
Para agregar un servicio al inicio del sistema
rc-update add <servicio> <runlevel>
Para quitar un servicio del sistema
rc-update del <servicio> <runlevel>
[b]Script para el clásico: service <servicio> <acción>[/b]
#!/bin/bash
/etc/init.d/$1 $2
Ahora ya podemos usar: service apache start
En lugar de: /etc/init.d/<servicio> start
Archivos de configuración de ServiciosLos archivos de configuración de los demonios del sistema se encuentra en /etc/conf.d/
Perfiles/Actualización de Gcc, Python, Java y SimilaresNomenclatura:
* - En uso
Todos estos paquetes tiene una herramienta para poder usar alguna versión en especifico. Por ejemplo, con gcc podemos ver los perfiles disponibles con: gcc-config -l
[1] i686-pc-linux-gnu-3.3.6
[2] i686-pc-linux-gnu-3.3.6-hardenednopie
[3] i686-pc-linux-gnu-3.3.6-hardenednopiessp
[4] i686-pc-linux-gnu-3.3.6-hardenednossp
[5] i686-pc-linux-gnu-3.3.6-vanilla
[6] i686-pc-linux-gnu-3.4.6
[7] i686-pc-linux-gnu-3.4.6-hardenednopie
[8] i686-pc-linux-gnu-3.4.6-hardenednopiessp
[9] i686-pc-linux-gnu-3.4.6-hardenednossp
[10] i686-pc-linux-gnu-3.4.6-vanilla *
Para usar alguna versión especifico necesitamos seleccionarlo de la siguiente manera:
gcc-config <num de perfil> && source /etc/profile
Para java:
java-config -L ## Para mirar las maquinas virtuales disponibles y la que usamos actualmente
[sun-jdk-1.4.2.10] "Sun JDK 1.4.2.10" (/etc/env.d/java/20sun-jdk-1.4.2.10) *
[blackdown-jdk-1.4.2.03] "Blackdown JDK 1.4.2.03" (/etc/env.d/java/20blackdown-jdk-1.4.2.03)
Para cambiar de versión:
java-config -S argument --set-system-vm=blackdown-jdk-1.4.2.03
Ahora para python tenemos: python-updater y python-config
Variables de entorno (PATH)Estas configuraciones las encontramos en /etc/env.d
Una pequeña descripción de las variables:
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 un 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 un comando.
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 la cual el comando man busca las páginas de manual.
INFODIR Esta variable contiene una lista de directorios separados por
":" en la cual el comando info busca 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.
CLASSPATH Esta variable contiene una lista de directorios separados por
":" los cuales contienen las clases de Java.
CONFIG_PROTECT Esta variable una lista de directorios separados por espacio
los cuales deben ser protegidos por Portage durante las actualizaciones.
CONFIG_PROTECT_MASK Esta variable una lista de directorios separados
por espacio los cuales no deben ser protegidos por Portage durante las actualizaciones.
Cada vez que actualizemos estas variables es importante hacer:
env-updateProblemas compilandoMirar: http://www.gentoo-es.org/node/363
Nota: Si utilizan el perfil de gcc realizado por gentoo, siempre traten rebajando la versión o utilizando el perfil por default titulado como vanilla..
Bugs de gentoo para reportar y revisar: http://bugs.gentoo.org && http://bugs.gentoo.org/query.cgi
Links que considero importantesForos en español: http://forums.gentoo.org/viewforum.php?f=30
Repositorio web de gentoo: http://packages.gentoo.org/
Recursos de documentación: http://www.gentoo.org/doc/es/list.xml
Gentoo Wiki: http://gentoo-wiki.com/Main_Page
Gentoo y portatiles Toshiba: http://web.gentrinoo.org/
Boletín Semana de Gentoo en español: http://www.gentoo.org/news/es/gwn/gwn.xml
Gentoo español: http://www.gentoo-es.org/
powered by performancing firefox