# Cambiar temporal de Portage

## Pablo S. Barrera

Buenas, tengo mi / que posee algo asi como 3 gb libres.

Tengo otras particiones realizadas y la idea es que el temporal de portage se haga en otro particion.

```
S.ficheros          Tamaño Usado  Disp Uso% Montado en

/dev/hdb2             9,4G  5,4G  3,6G  61% /

udev                   10M  140K  9,9M   2% /dev

/dev/hdb1              37M  6,8M   28M  20% /boot

/dev/hdb5              15G   13G  882M  94% /home

/dev/hdb6              71G   50G   18G  74% /Peliculas

shm                   505M     0  505M   0% /dev/shm

```

Asi esta mi disco.

Quiero que en vez de ser el archivo temporal /var/tmp/portage sea /Peliculas/tmp/portage o algo asi..

Leyendo vi que esta configuracion esta en el make.conf

Agregue estas lineas 

```

PORTAGE_TMPDIR=/Peliculas/tmp/portage

BUILD_PREFIX=/Peliculas/tmp/portage
```

Pero al compilar openoffice me tira unos cuantos errores...

```

>>> Compiling source in /Peliculas/tmp/portage/portage/app-office/openoffice-2.2.1/work/ooo ...

/usr/portage/app-office/openoffice/openoffice-2.2.1.ebuild: ./configure: /bin/sh: bad interpreter: Permission denied

 *

 * ERROR: app-office/openoffice-2.2.1 failed.

 * Call stack:

 *   ebuild.sh, line 1654:   Called dyn_compile

 *   ebuild.sh, line 990:   Called qa_call 'src_compile'

 *   ebuild.sh, line 44:   Called src_compile

 *   openoffice-2.2.1.ebuild, line 321:   Called die

 *

 * Configuration failed!

 * If you need support, post the topmost build error, and the call stack if relevant.

 * A complete build log is located at '/Peliculas/tmp/portage/portage/app-office/openoffice-2.2.1/temp/build.log'.

 *

!!! When you file a bug report, please include the following information:

GENTOO_VM=  CLASSPATH="." JAVA_HOME="/etc/java-config-2/current-system-vm"

JAVACFLAGS="" COMPILER=""

and of course, the output of emerge --info

```

En que le estoy pifiando? Solo quiero cambiar el lugar donde esta el temporal.. probe con un enlace simbolico pero me hice mas lio que soluciones.. podria ser una solucion a mi problema un enlace?

Gracias.

----------

## Inodoro_Pereyra

La verdad, no conozco las opciones de portage, pero se me ocurre una alternativa:

```
mount -o bind /var/tmp/portage /peliculas/tmp/portage #o en cualquier otro directorio en cualquier partición en donde haya mas espacio

#otra posibilidad:

ln -sf /var/tmp/portage /peliculas/tmp/portage #o cualquier otra ubicación

```

Espero que sirva.

Salud!

----------

## Pablo S. Barrera

Lo del montaje me parecio barbaro el tema es que cuando tiro el emerge openoffice me sigue usando la vieja ruta, osea la /var/tmp/portage y me dice que no hay 5 gb libres.

```
 Checking for at least 256MBytes RAM ...                                                        [ ok ]

 * Checking for at least 5120MBytes disk space at ${PORTAGE_TMPDIR} ...                           [ !! ]

 * Don't have at least 5120MBytes disk space at ${PORTAGE_TMPDIR}

```

Mas abajo muestra la ruta en la que lo esta haciendo y es la misma.. como que no lo cambia..

De todos modos voy a compilarlo mañana por que mas alla del error donde hace el chekeo me carga app-office en la ruta /Peliculas... tal vez escribe ahi, pero no puedo probarlo ahora por que necesito tiempo para ver que particion se va llenando.

Lo del ln -sf no funciono.. me genera cualquier enlace..

Gracias!!! Mañana te comento como me fue, buenisimas las ideas, creo le pegaste con la primera.

----------

## gringo

 *Quote:*   

> /usr/portage/app-office/openoffice/openoffice-2.2.1.ebuild: ./configure: /bin/sh: bad interpreter: Permission denied 

 

comprueba los flags de /Peliculas ( con mount mismamente). En gentoo por defecto creo que se usa noexec, nodev, etc.

saluetes

----------

## Theasker

leyendo otra vez el post me surge una pregunta imagino q por ser novato: qué es /dev/shm?

----------

## i92guboj

 *Theasker wrote:*   

> leyendo otra vez el post me surge una pregunta imagino q por ser novato: qué es /dev/shm?

 

/dev/shm se aparece en la mayoría de las distros modernas. Se montan con tmpfs, puedes buscarlo en el kernel config como CONFIG_TMPFS. Es un sistema de archivos especial que monta espacio ram en un punto de tus disco duro (en este caso, /dev/shm). Tiene dos ventajas claves que benefician su uso como sistema de archivos de uso temporal:

1.- En primer lugar, al estar en ram es ultrarápido.

2.- En segundo, no necesita limpieza. Por supuesto, al ser un sistema de ficheros basado en ram, tan solo con desmontarlo se pierde el acceso a todo lo que contuviera, y esa zona de ram puede ser re-escrita por cualquier otro proceso. Por supuesto, y en cualquier caso, al reiniciar o apagar el ordenador se pierde de forma definitiva su contenido.

Por tanto, /dev/shm puede ser usado como espacio de intercambio donde los distintos procesos pueden poner ficheros intermedios, que no necesitan ser guardados a largo plazo, pero que luego podrán leer para realizar alguna tarea con ellos. En fvwm, por ejemplo, algunos scripts para minimizar las ventanas usando una miniatura de la misma (en lugar del icono de toda la vida) usan /dev/shm para guardar dichas miniaturas.

----------

## i92guboj

Por cierto, yo personalmente no aconsejo usar /dev/shm como temporal de portage.

Hay varias razones. En primer lugar, las compilaciones en poco se van a beneficiar de un disco más rápido. Cuando se compila, el cuello de botella, usualmente, es la cpu, y no la E/S, sobre todo, si usamos el cflag "-pipe" (que permite a gcc usar pipes, o sea, memoria, en lugar de ficheros para transportar cosas de un lado a otro).

Además, esto provoca un gasto exagerado de cpu en algunos paquetes. OO por ejemplo necesita unos 6 gigas en /var/tmp. El mismo espacio pillaría en /dev/shm, es decir, que o tienes 8 gigas de ram o la cosa se pone negra.

----------

## Theasker

entendido y ... donde pones el espacio a usar de ram?

----------

## i92guboj

 *Theasker wrote:*   

> entendido y ... donde pones el espacio a usar de ram?

 

tmpfs es realmente sofisticado. En primer lugar, no tiene un tamaño fijo. Se adapta al contenido de cada monento, por lo cual, si está vacío, no ocupará nada de tu ram (puedes vaciarlo simplemente borrando lo que hay dentro, eso sí, asegúrate de que nada importante lo está usando).

Además, tmpfs puede hacer varias cosas más, como paginar parte de su contenido a swap si no hay planes de que vaya a ser usado pronto, ahorrando de esta forma memoria ram, pero manteniendo un ojo sobre ese contenido paginado por si fuera necesario recuperarlo en el menor tiempo posible. También es posible asignar un tamaño máximo de fichero simplemente re-montando la partición tmpfs... Vamos, todo un lujo, comparado con otras soluciones como ramfs.

El límite predeterminado creo que es la mitad de la ram física (es decir, sin contar swap). También puede ser cambiado al montar o remontar, con -o size=n o incluso -o size=n%. Pero como puede ser que me equivoque, mejor mira en Documentation/filesystems/tmpfs.txt, dentro del dir de tu kernel. Ahí está todo esto y más, muy bien explicado.

----------

## jgascon

 *i92guboj wrote:*   

> Por cierto, yo personalmente no aconsejo usar /dev/shm como temporal de portage

 

He estado leyendo este hilo TIP: emerge speed-up, compile in RAM not on disc. y he visto que ahora (no sé si antes también) hay una opción en el make.conf que se llama PORTAGE_TMPFS y que aconsejan configurarla a /dev/shm, que además mirando mi fstab veo que se monta como tmpfs. 

¿Qué os parece esta nueva opción? ¿Es lo mismo  o tiene el mismo efecto que montar /var/tmp en RAM? ¿Merece la pena configurarla?

Preguntas, preguntas y más preguntas  :Wink: 

----------

## i92guboj

 *jgascon wrote:*   

>  *i92guboj wrote:*   Por cierto, yo personalmente no aconsejo usar /dev/shm como temporal de portage 
> 
> He estado leyendo este hilo TIP: emerge speed-up, compile in RAM not on disc. y he visto que ahora (no sé si antes también) hay una opción en el make.conf que se llama PORTAGE_TMPFS y que aconsejan configurarla a /dev/shm, que además mirando mi fstab veo que se monta como tmpfs. 
> 
> ¿Qué os parece esta nueva opción? ¿Es lo mismo  o tiene el mismo efecto que montar /var/tmp en RAM? ¿Merece la pena configurarla?
> ...

 

Ni es nueva, ni es nada distinto.

Es lo mismo. Puedes usar esa variable para poner el dir temporal de portage en otro lugar distinto de /var/tmp/portage (que esté montado en tmpfs), o bien puedes montar directamente /var/tmp (o /var/tmp/portage) en tmpfs. Es exactamente lo mismo.

----------

## sefirotsama

```
Permission denied
```

La particion /peliculas no seria una particion o disco extraible en fat32 (similares) ¿¿no??

Si lo fuera, no conservaria los permisos de linux, y explicaria el permission denied, sin poder ejecutar nada en su interior...

----------

## Theasker

para usar el tmp del portage en ram ... imagino q hay q tener bastante ram con 512 haces las risas

----------

## gringo

 *Quote:*   

> imagino q hay q tener bastante ram con 512 haces las risas

 

si, aunque depende de los que vayas a compilar, a ver quién es el guapo que compila openoffice en ram  :Razz: 

De cualquier manera, es una chorrada como ya dijo i92guboj mas arriba, yo tb. lo he probao hace tiempo y no he notao diferencia alguna, probad vosotros mismos.

saluetes

----------

## ekz

YO una vez probé eso de compilar en ram y con 512!!

En esa oportunidad compilé xorg-server creo, y el resultado fue más que deficiente, ya que se llena la ram y esta pasa a swap y con ambas memorias (casi) llenas demoró más de 2 o 3 veces lo normal, aparte de estar todo ese tiempo con lag en el ratón, en el teclado, en todo.

 :Very Happy: 

SAludos

----------

## jgascon

 *gringo wrote:*   

> 
> 
>  yo tb. lo he probao hace tiempo y no he notao diferencia alguna, probad vosotros mismos.
> 
> 

 

Pequeño resumen, para las pruebas he desactivado ccache:

Máquina

```

cat /proc/cpuinfo

model name      : AMD Athlon(tm) 64 X2 Dual Core Processor 3800+

free -m

             total       used       free     shared    buffers     cached

Mem:          3024       2991         32          0        259       1611

-/+ buffers/cache:       1120       1903

Swap:         1427          0       1427

```

Compilación "Normal"

```

     Thu Oct 18 21:44:35 2007 >>> x11-base/xorg-server-1.3.0.0

       merge time: 13 minutes and 52 seconds.

```

Copilación montando /var/tmp/portage en RAM

```

     Thu Oct 18 22:03:19 2007 >>> x11-base/xorg-server-1.3.0.0

       merge time: 13 minutes and 55 seconds.

```

¿Dónde está la diferencia?   :Shocked: 

 *Theasker wrote:*   

> imagino q hay q tener bastante ram con 512 haces las risas

 

Me parece ni que aunque tengas 80 gigas ibas a notar la diferencia...

----------

## i92guboj

 *jgascon wrote:*   

> 
> 
> Me parece ni que aunque tengas 80 gigas ibas a notar la diferencia...

 

Lo dicho. Y gran parte del motivo es el que dije más arriba:

 *i92guboj wrote:*   

> 
> 
> Hay varias razones. En primer lugar, las compilaciones en poco se van a beneficiar de un disco más rápido. Cuando se compila, el cuello de botella, usualmente, es la cpu, y no la E/S, sobre todo, si usamos el cflag "-pipe" (que permite a gcc usar pipes, o sea, memoria, en lugar de ficheros para transportar cosas de un lado a otro).
> 
> 

 

A las personas que de verdad sienten una necesidad imperiosa de instalar los paquetes más rápido solo les puedo dar tres consejos:

1.- comprar un ordenador más rápido, una cpu más rápida o más ram

2.- compilación distribuída

3.- no usar una distro basada en fuentes

Todo lo demás, incluyendo magia potagia, howtos superoptimizantes, y demás aberraciones, son solo eso: aberraciones.

----------

