[DUDA]Como configurar /etc/apt/preferences

Antes de nada indicar que esta duda me surge usando Debian 7.5 wheezy Kde (para evitar problemas con versiones o distros distintas a los que busquen resolver una duda similar)

También comentar que me he leído la documentación que sale bajo en comando
man apt_preferences
pero no acaba de quedarme del todo claro.

Antes de llegar a la parte de la duda he escrito un ladrillo bastante gordo, pero así lo aprovecho para documentar mi caso un poco ya que es un pequeño conjunto de experiencias sufridas y aprendidas que espero puedan serle de ayuda a alguien algún día.

No obstante hago una versión corta para evitar el aburrimiento.

Version corta.

Alguien sabe como se configura el archivo /etc/apt/preferences si lo que quiero es:

Caso 1(caso para experimentar con xbmc antes de cagarla con Steam):

Actualizaciones normales del sistema se hagan de los repositorios estables.
Actualizaciones del XBMC salgan de testing

Caso 2(Caso real):
Actualizaciones normales del sistema se hagan de los repositorios estables.
Actualizaciones del XBMC salgan de backports
Instalar Steam de los repositorios testing


-----------------------------------------------------------
Introducción
-----------------------------------------------------------

Llevo usando linux desde hace mas o menos 7 años, empecé a experimentar con ubuntu simplemente porque tenia un entorno muy amigable y por ello hasta el día de hoy, he dado prioridad a la interfaz gráfica antes que al uso de la consola. Eso ha provocado que, pasado X tiempo, instalando cosas de repositorios ajenos a los oficiales(y/o estables), cada distribución se sumiera en el caos. Lo que a los ojos de los expertos en linux se verá como algo lógico e irresponsable por mi parte, me ha permitido ir saltando de distro en distro probando y experimentando(aunque abandoné ubuntu por la incorporación de Unity [+risas] ).

De esto no me he dado cuenta hasta el día de hoy ¿Porque? porque gracias al hilo oficial de Debian, en especial al usuario roMZell y a que no se porqué Kde no me deja instalar directamente paquetes *.deb, me he visto obligado por fin a familiarizarme con la consola, apt-get, aptitude, sources.list, sources.list.d/ y un largo etc.

Pues bien, antes de quedarme en la rama estable de Debian(wheezy 7.5 a día de hoy) pasé por testing(jessie) y ahí encontré bastantes mas facilidades de las que me he encontrado en wheezy para tener las versiones mas recientes, lo cual es bastante lógico.

He preferido quedarme en la estable por lo obvio, sin embargo, para ciertas aplicaciones y siempre teniéndolas presentes y controladas, estoy usando "otros" repositorios. Siempre voy a preferir trabajar con un libreoffice estable, sin embargo para el "ocio" prefiero andar actualizado(y como vais a ver, en algún caso particular hasta es obligado ir a por repositorios de testing)

-----------------------------------------------------------
Causas
-----------------------------------------------------------
Ok, todo este ladrillo que he escrito encuentra su origen en mis intenciones de usar Steam y disfrutar de la pequeña colección que poseo de juegos compatibles con linux. También tiene parte de culpa XBMC cuya versión "Frodo" está presente en testing y en una raspberry que tengo mientas que en wheezy está "eden"(algo mas vieja).

-----------------------------------------------------------
Dudas y necesidades
-----------------------------------------------------------

Trasteando y escuchando a roMZell he aprendido que puedo instalar versiones de paquetes mas recientes usando unos repositorios llamados "backports", los cuales dentro de la rama estable, te permite instalar alguna versión mas reciente que la que viene por defecto, y mas estable que los que ofrece testing. Y aunque esto comenzó con una duda sobre distintas versiones de kde, lo aproveché para tener mi querido XBMC "frodo".

Info y documentación sobre el uso de backports: http://backports.debian.org/Instructions/

Respecto a Steam.

Resulta que en su momento instalé steam y al parecer este esta solo disponible para "jessie" por ello no tuve ningun problema. Sin embargo, si agrego el repositorio
deb http://http.debian.net/debian/ jessie main contrib non-free
al sources.list me puedo encontrar con un problema bien majo, y es que me aparecen 1104 actualizaciones correspondientes a ese repositorio que sustituirían medio debían y este dejaría de tener sentido y ser estable, así que me he puesto a indagar un poco y he descubierto que se puede crear un archivo que maneje las prioridades que dará el sistema a la hora de realizar instalaciones teniendo varios repositorios, y esto es lo que no me acaba de quedar claro del todo ya que me lío un poco con las explicaciones que dan a cada cifra de prioridades en la documentación.

Mi objetivo es que el sistema se actualice de los repositorios oficiales, XBMC de backports y Steam de testing. PERO, y esto es importante, como steam aun no me he atrevido a instalarlo vamos a usar como base de experimentos XBMC y a pedir que se instale desde testing.

Bien, para continuar vamos con ejemplos:

quiero:

Actualizaciones normales del sistema se hagan de los repositorios estables.
Actualizaciones del XBMC salgan de testing

Bien, asi es como tengo instalado actualmente XBMC. Lo tengo instalado desde backports usando el comando
sudo apt-get install -t wheezy-backports xbmc
que asi es como indicaba que se hiciera en la documentación de debian al respecto.

Si nos vamos al gestor de actualizaciones como bien vemos tenemos todo listo para evitar problemas:
https://app.box.com/s/2m2wo9pmvi3k3rjmip05
Mi sources.list:
#

# deb cdrom:[Debian GNU/Linux 7 _Wheezy_ - Official Snapshot amd64 LIVE/INSTALL Bina$

deb cdrom:[Debian GNU/Linux 7 _Wheezy_ - Official Snapshot amd64 LIVE/INSTALL Binary$


deb http://ftp.es.debian.org/debian/ wheezy main
deb-src http://ftp.es.debian.org/debian/ wheezy main

deb http://security.debian.org/ wheezy/updates main
deb-src http://security.debian.org/ wheezy/updates main

# wheezy-updates, previously known as 'volatile'
deb http://ftp.es.debian.org/debian/ wheezy-updates main
deb-src http://ftp.es.debian.org/debian/ wheezy-updates main

# Añadido contrib y nonfree para drivers nvidia
deb http://http.debian.net/debian/ wheezy main contrib non-free

#repositorio de aplicaciones inestables en una estable. creado en este caso para xbmc
deb http://ftp.es.debian.org/debian wheezy-backports main

#contrib non-free de jessie "testing" para instalar steam.
#deb http://http.debian.net/debian/ jessie main contrib non-free

# Añadido bunkus para mkv toolnix
deb http://www.bunkus.org/debian/wheezy/ ./
deb-src http://www.bunkus.org/debian/wheezy/ ./


Comprobamos con aptitude versions
# apt-get update
# aptitude versions xbmc
Package xbmc:                       
p   2:11.0~git20120510.82388d5-1                    stable                       500
i   2:12.3+dfsg1-3~bpo70+2                          wheezy-backports             100

Package xbmc-bin:
p A 2:11.0~git20120510.82388d5-1+b1                 stable                       500
i A 2:12.3+dfsg1-3~bpo70+2                          wheezy-backports             100

Package xbmc-data:
p   2:11.0~git20120510.82388d5-1                    stable                       500

Package xbmc-eventclients-common:
p   2:11.0~git20120510.82388d5-1                    stable                       500
p   2:12.3+dfsg1-3~bpo70+2                          wheezy-backports             100

Package xbmc-eventclients-dev:
p   2:11.0~git20120510.82388d5-1                    stable                       500
p   2:12.3+dfsg1-3~bpo70+2                          wheezy-backports             100

Package xbmc-eventclients-j2me:
p   2:11.0~git20120510.82388d5-1                    stable                       500
p   2:12.3+dfsg1-3~bpo70+2                          wheezy-backports             100

Package xbmc-eventclients-ps3:
p   2:11.0~git20120510.82388d5-1                    stable                       500
p   2:12.3+dfsg1-3~bpo70+2                          wheezy-backports             100

Package xbmc-eventclients-wiiremote:
p   2:11.0~git20120510.82388d5-1+b1                 stable                       500
p   2:12.3+dfsg1-3~bpo70+2                          wheezy-backports             100

Package xbmc-eventclients-xbmc-send:
p   2:11.0~git20120510.82388d5-1                    stable                       500
p   2:12.3+dfsg1-3~bpo70+2                          wheezy-backports             100

Package xbmc-skin-confluence:
p   2:11.0~git20120510.82388d5-1                    stable                       500

Package xbmc-standalone:
p   2:11.0~git20120510.82388d5-1                    stable                       500

y vemos que los paquetes instalados pertenecen a wheezy-backports.

Ahora veamos que sucede al meter el repositorio de jessie para estar a la ultima con XBMC. En sources.list agrego
deb http://http.debian.net/debian/ jessie main contrib non-free

(Porque es el repositorio que usaré en el caso real para instalar steam) y volvemos a hacer las comprobaciones.
# apt-get update
# aptitude versions xbmc
Package xbmc:                       
p   2:11.0~git20120510.82388d5-1                    stable                       500
i   2:12.3+dfsg1-3~bpo70+2                          wheezy-backports             100
p   2:12.3+dfsg2-6                                  testing                      500

Package xbmc-addons-dev:
p   2:12.3+dfsg2-6                                  testing                      500

Package xbmc-bin:
p A 2:11.0~git20120510.82388d5-1+b1                 stable                       500
i A 2:12.3+dfsg1-3~bpo70+2                          wheezy-backports             100
p A 2:12.3+dfsg2-6                                  testing                      500

Package xbmc-data:
p   2:11.0~git20120510.82388d5-1                    stable                       500

Package xbmc-eventclients-common:
p   2:11.0~git20120510.82388d5-1                    stable                       500
p   2:12.3+dfsg1-3~bpo70+2                          wheezy-backports             100
p   2:12.3+dfsg2-6                                  testing                      500

Package xbmc-eventclients-dev:
p   2:11.0~git20120510.82388d5-1                    stable                       500
p   2:12.3+dfsg1-3~bpo70+2                          wheezy-backports             100
p   2:12.3+dfsg2-6                                  testing                      500

Package xbmc-eventclients-j2me:
p   2:11.0~git20120510.82388d5-1                    stable                       500
p   2:12.3+dfsg1-3~bpo70+2                          wheezy-backports             100
p   2:12.3+dfsg2-6                                  testing                      500

Package xbmc-eventclients-ps3:
p   2:11.0~git20120510.82388d5-1                    stable                       500
p   2:12.3+dfsg1-3~bpo70+2                          wheezy-backports             100
p   2:12.3+dfsg2-6                                  testing                      500

Package xbmc-eventclients-wiiremote:
p   2:11.0~git20120510.82388d5-1+b1                 stable                       500
p   2:12.3+dfsg1-3~bpo70+2                          wheezy-backports             100
p   2:12.3+dfsg2-6                                  testing                      500

Package xbmc-eventclients-xbmc-send:
p   2:11.0~git20120510.82388d5-1                    stable                       500
p   2:12.3+dfsg1-3~bpo70+2                          wheezy-backports             100
p   2:12.3+dfsg2-6                                  testing                      500

Package xbmc-skin-confluence:
p   2:11.0~git20120510.82388d5-1                    stable                       500

Package xbmc-standalone:
p   2:11.0~git20120510.82388d5-1                    stable                       500

Y efectivamente vemos como la version de la rama testing es mas nueva.
Ahora viene donde empiezo a plantearme configurar el archivo de preferencias porque al ir al gestor de actualizaciones me aparece lo siguiente:
https://app.box.com/s/nqjrye8l6g6iho6sb09t

Como podeis comprobar, hay una nueva actualización para el XBMC procedente del repositorio de testing, pero no solo eso, tambien hay otras 1406 actualizaciones que probablemente hagan que pierda algo de estabilidad en general [mad] .

Asi que vamos a intentar añadir un archivo preferences para controlar esta situacion... Pero no consigo dar con la formula, lo he intentado de varias formas y un ejemplo de como lo dejo es:
Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release a=testing
Pin-Priority: 500

Package: xbmc
Pin: release a=testing
Pin-Priority: 990



Pero al usar aptitude versions xbmc sigue teniendo prioridad la rama estable(incluso con prioridad 1001), si que es verdad que ahora el gestor de actualizaciones ya no me pone las 1400 actualizaciones asi que algo he conseguido filtrar, sin embargo no se como hacer para filtrar xbmc, por lo que de Steam ya ni hablamos.


Sugerencias?
Advertencia: tochazo incoming XD

Primero decirte que el hecho mezclar distintas ramas de Debian se llama apt-pinning. Debes saber que hacer apt-pinning en la rama estable no es aconsejable. ¿Por qué? Sigue leyendo y lo comprenderás:

wiki de debian escribió:Pinning le permite instalar ciertos paquetes de una versión (stable, testing, unestable) sin que tenga que actualizar el sistema entero. Sin embargo, al instalar paquetes de futuras versiones, probablemente instale o actualice bibliotecas también, así que puede que termine con un sistema con las desventajas de la versión stable (software viejo), las desventajas de unstable/testing (el soporte relacionado con la seguridad no es tan bueno como en stable) y sin las ventajas de uno u otro.


Una distribución linux, el único propósito que tiene es el de encajar las piezas de software que cada desarrollador hace independientemente. Debian estable podría representarse como una fortaleza, un gran castillo muy bien diseñado, donde sus ladrillos encajan perfectamente unos con otros, haciéndolo muy resistente. Si usas debian estable es porque quieres máxima estabilidad en el sistema. Si haces apt-pinning para mezclar estable con testing debes tener mucho cuidado si quieres conservar dicha estabilidad, ya que hay bastante probabilidad de reemplazar ladrillos claves en el sistema que son autenticas columnas vertebrales de las que dependen otros cientos de programas. Ponte que empiezas a sacar ladrillos a ese castillo y a sustituirlos por otros que no encajan igual de bien. En cualquier momento se puede caer todo.

Antes de mezclar repositorios, te recomiendo ver detenidamente qué paquetes se van a actualizar cada vez, y saber si son paquetes importantes de los que dependen otros cientos. ¿Cómo puedes saberlo? fácil. Dos comandos muy interesantes:

apt-cache depends paquete : te muestra de qué depende ese paquete para funcionar.
apt-cache rdepends paquete: te muestra qué otros paquetes dependen de ese paquete para funcionar (reverse dependencies, de ahí lo de rdepends)

Por ejemplo: ¿de qué depende y quién depende de xmbc?:

┌─( canales ) » { ~ }
└──┤ apt-cache depends xbmc
xbmc
  Depende: xbmc-bin
  Depende: xbmc-bin
  Depende: mesa-utils
  Depende: x11-utils
  Depende: ttf-liberation
  Depende: ttf-dejavu-core
  Depende: python-imaging
  Depende: python
  Depende: python-support

┌─( canales ) » { ~ }
└──┤ apt-cache rdepends xbmc
xbmc
Reverse Depends:


Como ves, de xmbc no hay ningún otro programa que dependa para funcionar. En cambio, xmbc depende de paquetes claves como python. Si haces un apt-cache rdepends python vas a ver que cientos de paquetes dependen de python (no pongo aquí la salida porque la lío parda, puedes buscarlo tú mismo si tienes curiosidad).

Si quieres flipar y ver de cuantísimos cientos y cientos de paquetes depende el inocente xbmc para funcionar, instala apt-rdepends (esta vez la r no es de reverse, es de recursive) y pon lo siguiente: apt-rdepends xbmc >> xbmc . Eso te generará un archivo de texto llamado xbmc en tu carpeta personal indicándote las dependencias de xbmc, y también de qué depende cada una de sus dependencias y así recursivamente hasta listarte realmente todos los paquetes que necesitas tener instalados y funcionando para que xbmc funcione. Es sorprendente.


En fin, con todo esto quiero que seas consciente de la tremenda complejidad de un sistema GNU/linux. Son miles de dependencias entrelazadas entre sí. Es una obra de arquitectura espectacular. Por lo que cuantos menos repositorios externos metamos, más sólido será el sistema.


Conclusión: lo mejor para estar actualizado en debian estable es usar los backports, ya que los paquetes de ahí se adaptan con las dependencias que ya tienes instaladas en tu sistema.
También puedes buscar paquetes sueltos en otros repositorios como en los en los repos de testing, en los ppa de ubuntu (ya ves que te digo paquetes sueltos y no repositorios, ya que instalar un paquete suelto no suele romper nada, pero agregar un repositorio es harina de otro costal), o bien buscar el paquete en la web oficial del programa, o bien compilar el código fuente.

Si no, lo más sencillo es usar simplemente debian testing, así te quitas de complicaciones, pero pierdes estabilidad.


Ahora, en cuanto a lo que quieres hacer con xmbc. Dices que quieres hacer pinning, pero te pregunto ¿por qué? si tienes xmbc en los backports de estable, siempre será mucho mejor ya que está pensado para encajar con tu debian estable, mientras que la versión de testing tendrá unas dependencias que encajarán con las de testing.

Package xbmc:
p 2:11.0~git20120510.82388d5-1 stable 500
i 2:12.3+dfsg1-3~bpo70+2 wheezy-backports 100
p 2:12.3+dfsg2-6 testing 500

Piensas que la versión de testing es más nueva que la de wheezy-backports, pero no es así. Fíjate que en ambos, tanto en wheezy-backports como en Testing tienes la versión 12.3. Claramente te conviene usar la versión de backports, ya que se ajusta a tu sistema totalmente.

Por otro lado, llevo unos días investigando si los paquetes ya instalados desde los backports se actualizan automáticamente o no. Aun no he podido sacar conclusiones, en cuanto lo sepa te lo digo. Pero en principio, sudo apt-get install -t wheezy-backports xmbc es lo que necesitas.

En cuanto a Steam, el método que a mi me ha funcionado ha sido instalarlo con el instalador no oficial de GhostSquad57: https://github.com/GhostSquad57/Steam-I ... for-Wheezy
Como bien dices, Steam se actualiza él solito sin necesidad de repositorios, por lo tanto una vez instalado no necesitas hacer nada más para estar al día.


Aún así, si a pesar de todo quieres intentar hacer apt-pinning, tienes Información con ejemplos en la wiki de Debian: https://wiki.debian.org/es/AptPreferences

Saludos!
Todo esto es por varios motivos:
1- aprender, y en este mes y con estas pequeñas dudas he aprendido casi más que en los últimos años.
2- curiosidad, como bien dices, Linux es tan amplio y complejo que parece inevitable no intentar tocar algo y trastear... Aunque después pasa lo que pasa xD.
3- impaciencia, simplemente soy así, me gusta estar a la última, pero esta vez estoy aprendiendo a ser más paciente. No me queda otra, en esta ocasión necesito que el pc sea estable así que no me corto a la hora de preguntar.

Pues bien, me lo apunto, algo sospechaba y si tenia dudas ya me queda claro que me quedo en Backports.

En realidad, respecto al xbmc, tenia pensado quedarme en Backports, pero plantear el problema de el archivo preferences ya era bastante complicado usando dos repositorios como para agregar un tercero. Así que decidí plantearlo desde la perspectiva del xbmc de testing en lugar del xbmc de Backports + steam de testing (pues en el wiki de debian solo hablan de steam para testing)

También quería aprender a configurar bien ese archivo para tener algo limitado el uso de repositorios externos. Pero teniendo la solución que das para steam probaré y así evito líos. Muchas gracias por todo caballero!!
La verdad que para hacer apt-pinning no te puedo ayudar porque nunca lo he hecho. Pero en la red seguro que puedes encontrar mucha información en blogs.

Nada hombre, a preguntar las dudas que pa eso estamos aquí [beer]

PD: cuando sepa seguro si los paquetes instalados desde backports se actualizan simplemente con un apt-get upgrade te digo.
roMZell escribió:La verdad que para hacer apt-pinning no te puedo ayudar porque nunca lo he hecho. Pero en la red seguro que puedes encontrar mucha información en blogs.

Nada hombre, a preguntar las dudas que pa eso estamos aquí [beer]

PD: cuando sepa seguro si los paquetes instalados desde backports se actualizan simplemente con un apt-get upgrade te digo.

Ayer me salto el gestor de actualizaciones y al mirar la procedencia me fije que eran de backports.
alohl669 escribió:
roMZell escribió:La verdad que para hacer apt-pinning no te puedo ayudar porque nunca lo he hecho. Pero en la red seguro que puedes encontrar mucha información en blogs.

Nada hombre, a preguntar las dudas que pa eso estamos aquí [beer]

PD: cuando sepa seguro si los paquetes instalados desde backports se actualizan simplemente con un apt-get upgrade te digo.

Ayer me salto el gestor de actualizaciones y al mirar la procedencia me fije que eran de backports.

Ah bien, pos ya sabemos que cuando instalamos un programa de backports se actualiza automáticamente al llegar actualizaciones XD
Hola romzel, despues de las rebajas de steam XD me he decidido a usar el metodo que mencionabas para instalarlo en debian (Teniendo presente la arquitectura de 64bits y siguiendo sus instrucciones) y ahora me aparece el siquiente error:
https://app.box.com/s/vszi6ubrevg432bkigg3

La cosa es, si hago lo que me pide con el cd-rom... no se instalaran o actualizaran algunos paquetes cambiándose por algunos de esa arquitectura? Es decir, que si a causa de añadir las fuentes de x86 para que steam funcione corro algún riesgo con esto.
alohl669 escribió:Hola romzel, despues de las rebajas de steam XD me he decidido a usar el metodo que mencionabas para instalarlo en debian (Teniendo presente la arquitectura de 64bits y siguiendo sus instrucciones) y ahora me aparece el siquiente error:
https://app.box.com/s/vszi6ubrevg432bkigg3

La cosa es, si hago lo que me pide con el cd-rom... no se instalaran o actualizaran algunos paquetes cambiándose por algunos de esa arquitectura? Es decir, que si a causa de añadir las fuentes de x86 para que steam funcione corro algún riesgo con esto.


Saludos alohl669 :D
Comentarte que ese error del CD-ROM es porque tienes un repositorio para el CD en /etc/fstab. Puedes verlo desde la terminal con el comando nano /etc/fstab o bien desde algún gestor de paquetes gráfico como synaptic. La pregunta es: ¿estás usando un CD como repositorio de paquetes? si no es así, desactiva ese repositorio y dejará de dar el error.


En cuanto a instalar los paquetes de arquitectura x86, el único riesgo que corres es de quedarte sin espacio en el disco XD

Salu2 [beer]
ok, lo he encontrado en /etc/apt/sorces.list justo al comienzo del archivo, lo que nunca me he fijado es si ya estaba ahi o se me ha agregado la linea solo. lo desactivo por ahora a ver que pasa.
alohl669 escribió:ok, lo he encontrado en /etc/apt/sorces.list justo al comienzo del archivo, lo que nunca me he fijado es si ya estaba ahi o se me ha agregado la linea solo. lo desactivo por ahora a ver que pasa.


eso, sources.list, no fstab XD
9 respuestas