# Colision de Archivos

## Pipeng

Holas, tengo una pequeña duda, nesesito poder instalar un paquete pero otra ya tiene ciertos archivos instalados y quiero que al instalar el siguiente no se instalen los archivos en colision ej:

paquete A instala:

archivo a

archivo b 

archivo c

despues instala el paquete B

este instalaria:

archivo c 

archivo d 

archivo e

asi que en este caso en el paquete B no se instalaria el archivo c ya que ya esta instalado por el paquete A pero si instalaria el d y el e.

Super mensaje de archivos de colision mandado por portage:

```
* This package will overwrite one or more files that may belong to other

 * packages (see list below). You can use a command such as `portageq

 * owners / <filename>` to identify the installed package that owns a

 * file. If portageq reports that only one package owns a file then do

 * NOT file a bug report. A bug report is only useful if it identifies at

 * least two or more packages that are known to install the same file(s).

 * If a collision occurs and you can not explain where the file came from

 * then you should simply ignore the collision since there is not enough

 * information to determine if a real problem exists. Please do NOT file

 * a bug report at http://bugs.gentoo.org unless you report exactly which

 * two packages install the same file(s). See

 * http://wiki.gentoo.org/wiki/Knowledge_Base:Blockers for tips on how to

 * solve the problem. And once again, please do NOT file a bug report

 * unless you have completely understood the above message.
```

ose evitar la sobreescritura de los ficheros.

muchas gracias

----------

## quilosaq

 *Quote:*   

> quiero que al instalar el siguiente no se instalen los archivos en colision

 Creo que lo que quieres no se puede hacer.

Portage se puede configurar para que en caso de encontrar colisiones continue la instalación y sobreescriba lo que sea necesario o bien se puede configurar para que en caso de encontrar colisiones aborte la instalación. No hay posibilidad de una instalación parcial.

Lo mas parecido a lo que pretendes sería considerar archivo c como un archivo de configuración. Quizá funcionara un comando como: 

```
CONFIG_PROTECT="/ruta_hasta_archivo_c/archivo c" emerge -v1 paquete_B
```

Después tendrías que ejecutar un etc-config o similar y quedarte con la versión vieja del archivo.

----------

## natrix

La otra es que si quieres instalar el mismo archivo pero de diferentes versiones puedes crear Slots. Con esto tendrás el mas de una versión del mismo archivo y no hay nada de reemplazo sino que trabajan en paralelo según la demanda.

----------

## Pipeng

mm, gracias por las respuestas, probare lo de los asrchivos de configuracion, respecto a lo de los slots no se como hacerlo con paquetes diferentes, por ejemplo, quiero el libav en la version 54 y ffmpeg en la version 55, en este caso los slots no cambian las cosas, y ademas si lo hago con una unica libreria por ejemplo libav, para cambiar de slot creo que tendria que cambiar la ebuild, ¿abra alguna forma de instalar con portage y especificar el slot?, ademas por ejemplo que en el caso de libav tengo hardblock con media-plugins/gst-plugins-libav que me impediria instalar un nuevo slot.

thx

----------

## quilosaq

 *Quote:*   

> por ejemplo, quiero el libav en la version 54 y ffmpeg en la version 55

 Entiendo que los números que pones son ejemplos ya que en portage (estable) libav va por la versión 9.17 y ffmpeg por la 1.2.6-r1.

El super mensaje de portage de tu primer post lo que dice es que si estas utilizando el arbol oficial de portage, la situación que describes no podría darse y que si se da es que se trata de un bug que habría que informar en https://bugs.gentoo.org

----------

## natrix

Respondiendo al tema de los slot: por ejemplo si un paquete te pide la librería boost-1.55.0-r2, y otro la librería boost-1.52.0-r7 (es raro pero a veces se da con binarios) puedes instalar ambos especificando la versión en emerge:

```
emerge -a --oneshot =dev-libs/boost-1.52.0-r7

emerge -a --oneshot =dev-libs/boost-1.55.0-r2
```

Con lo anterior tienen en funcionamiento ambas versión de boost. Claro que aveces puedes tener problemas nuevos y no siempre se puede, sobretodo si son librería del sistema y no se un paquete puntual

Por el caso puntual de libav y ffmpeg es normal que tengas problemas, lee la news titulada "2015-02-01  ffmpeg/libav conflict management: USE=libav" con el comando:

```
eselect news list

eselect news read 'número de news'

```

En la noticia dice que temporalmente habrá conflicto entre ambos y que habrá optar por uno, revisa que programa te pide instalar "media-plugins/gst-plugins-libav" e instalalo con la USE="-ffmpeg"

Te recomiendo que para la próxima nos muestra la salida completa y presentes tu caso completo, como dice quilosaq, los bloqueos no son de darse salvo en los bugs y a veces hace falta planteo puntuales como en el caso de libav/ffmpeg.

Suerte!

----------

## Pipeng

Holas, muchas gracias por las respuestas, ebl caso de ffmpeg y libav era solo un ejemplo no es el problema en si, la publicacion sigue orientada a la pregunta original, una instalacion parcial, bueno, gracias por la aclaracion sobre los slots, ahora, bueno siguiendo el ejemplo con libav, en el que un paquete tiene la condicion de !>media-video/libav-10

emerge -pa =media-video/libav-10.5::gentoo =media-video/libav-9.17::gentoo

[ebuild   R    ] media-video/libav-9.17 

[ebuild     U ~] media-video/libav-10.5 [9.17] USE="wavpack%* webp%*" CPU_FLAGS_X86="-avx2%" 

[blocks B      ] >=media-video/libav-10 (">=media-video/libav-10" is hard blocking media-plugins/gst-plugins-libav-1.2.4)

bueno en este caso veo un bloqueo y ademas que la version de 10.5 no se instalaria en un nuevo slot u.u aunque cuendo lo probe con ruby efectivamente este se instalaba en un nuevo slot.

Bueno eso muchas gracias.

----------

## natrix

Para ese caso no se puede instalarlos en simultaneo por el camino normal.

En ese caso tienes libav-9.17 que esta en la rama estable de portage y libav-10.5 que está a prueba. En este caso debería decidir por uno.

Si optas por libav-10.5 debes agregar la siguiente línea a /etc/portage/package.keywords

```
=media-video/libav-10.5 ~amd64
```

y desinstalar la otra versión.

El bloqueo en sí lo general el software que te instaló el libav-10.5 por estar en la rama de prueba. La rama estable esta libre de bloqueos salvo por algún bug que esté dando vueltas.

----------

