¿Desea poder especificar repositorio durante el tiempo de ejecución, o debería ser más una cosa estática? Las dos respuestas a continuación suponen la última opción.
tshepang
Idealmente sería durante el tiempo de ejecución. Sin embargo, la opción estática es suficiente.
Ton van den Heuvel
2
Su rumbo y la ayuda real que solicita son diferentes.
Sundar
Respuestas:
29
Usar fijación
La fijación es un proceso que le permite permanecer en una versión estable de Ubuntu (o cualquier otro sistema debian) mientras toma paquetes de una versión más reciente. - help.ubuntu.com
Puede deshabilitar las actualizaciones automáticas de ciertos repositorios sin eliminarlas por completo mediante aptpolíticas:
Para deshabilitar las actualizaciones automáticas del repositorio repo, agregue un archivo /etc/apt/preferences.d/repocon el siguiente contenido:
Package: *
Pin: release n=repo
Pin-Priority: 50
Lo que dará a todos los paquetes de este repositorio una prioridad menor que los paquetes ya instalados (que tienen 100).
Es una pena que la única respuesta de apt_preferences sea la última ...
Robert Siemer
¿Cómo saber qué versión es de qué repositorio?
Max N
2
@MaxN normalmente encontrarías esa información ejecutandoapt-cache policy package-name
Anwar
Esto no forzará un repositorio por no ser considerado durante la actualización. porque release n=repono va a cachear a nadie
Anwar
35
Puede especificar un lanzamiento con -topción. Como ejemplo, he agregado el siguiente repositorio /etc/apt/sources.listpara instalar la última versión de Iceweasel:
deb http://mozilla.debian.net/ squeeze-backports iceweasel-release
Como saben, hay un mismo paquete iceweaselen el repositorio oficial de Debian. Si quiero instalar Iceweasel desde esta versión específica, ejecuto:
apt-get install -t squeeze-backports iceweasel
de la página del manual de apt-get:
-t, --target-release, --default-release
This option controls the default input to the policy engine, it creates a default pin at priority 990 using the specified
release string. This overrides the general settings in /etc/apt/preferences. Specifically pinned packages are not affected by
the value of this option. In short, this option lets you have simple control over which distribution packages will be retrieved
from. Some common examples might be -t '2.1*', -t unstable or -t sid. Configuration Item: APT::Default-Release; see also the
apt_preferences(5) manual page.
Creo que esta es una mejor solución.
ACTUALIZACIÓN : Como @SuB mencionó en el comentario, " -tespecifica la versión, no el nombre del repositorio. No hay un nombre de repositorio en Ubuntu (a diferencia de Linux basado en RedHat como RHEL, Fedora, CentOS, ...)".
Como puede ver en el apt-getmanual, -tespecifique el nombre de la versión no del repositorio. No hay un nombre de repositorio en Ubuntu (a diferencia de Linux basado en RedHat como RHEL, Fedora, CentOS, ...)
SuB
1
@SuB Sí, tienes razón! ¡Confundí el nombre del repositorio con el lanzamiento!
dibujante
-t xenialFunciona para un solo paquete. pero todas sus dependencias aún se obtendrán de paquetes superiores
Anwar
10
Respuesta corta
Debe fijar los repositorios desde los que no desea instalar con una prioridad inferior a 100. Lo que significa (de la apt_preferencepágina de manual)
100 <= P <500
hace que se instale una versión a menos que haya una versión disponible que pertenezca a otra distribución o la versión instalada sea más reciente
Y para seleccionar un repositorio para fijar, usaría campos del Releasearchivo de repositorios . Tales como archive, label, release, versionetc. Al especificar los valores de estos campos, se pueden seleccionar con precisión un repositorio y asignar su prioridad preferente a la misma. Consulte la página apt_preference para más detalles.
Respuesta larga
Antes de continuar, necesitamos saber algo importante sobre la fijación. Eso incluye
Campos de Releasearchivos y su asignación a apt-cache policysalida
Formato de archivos de preferencias de apt
Usar Releasecampos de archivos para establecer prioridad
1. Campos de Releasearchivo y apt-cache policysalida
Los valores en estas líneas provienen de los Releasearchivos.
Descripción establece la descripción de un repositorio. Esto no se muestra en la apt-cache policysalida
Etiqueta es la etiqueta del repositorio. Muchos repositorios tienen etiquetas vacías. Se muestra l=<label>en la salida.
Origen esto habla sobre el origen del repositorio. El repositorio oficial de Ubuntu tiene Ubuntucomo valor. Se muestra como o=en la salida
Versión es la versión de una distribución. Son las 16.04 para Xenial. Se muestra como v=en la salida
Suite es lo mismo que Archive . De debian wiki es El nombre de la distribución de Debian a la que pertenecen (o están diseñados) los paquetes en este directorio, es decir, estable, de prueba o inestable. . Para Ubuntu, estos son release-updates, release-securityetc. Por ejemplo xenial-updates,, xenial-security. Se muestra en la salida como a=xenial, a=xenial-security. Los PPA usan solo el nombre de la versión para esto, es por eso que no ayudará mucho en Pinning.
El componente habla sobre el tema de las licencias. Es main, multiverse, restricted, universeen Ubuntu. En la salida se muestra como c=maino c=restrictedetc. La mayoría de los PPA se utilizan mainpara este campo, por lo que tampoco ayuda a fijar mucho.
La arquitectura se trata de la arquitectura del sistema operativo. Mostrado como b=i386o b=amd64en la salida
El nombre en clave es el nombre de lanzamiento de la distribución. Para 16.04 lo es xenial. Para 14.04 lo es trusty. Se muestra en la apt-cache policysalida como n=xenialo n=trusty. Es lo mismo para todos los repositorios para una sola distribución por lo general. Es por eso que no ayuda a fijar mucho.
La otra línea en la apt-cache policysalida que comienza originindica el origen de Internet del repositorio. También se puede usar para fijar. Pero no debe mezclarse con el campo de Releasearchivos Origin. Esos son diferentes.
Usaremos estos valores para anclar un repositorio.
Entonces, ¿cómo usamos la fijación 1 para restringir el repositorio?
Hay varias formas de controlar la fijación y solo un pequeño subconjunto es efectivo para Ubuntu. Sin embargo, una explicación detallada está más allá del alcance de la respuesta. Consulte la apt_preferencepágina de manual para esto.
2. Formato de archivo pin
Los archivos de preferencias pin o apt residen en la /etc/apt/preferences.dcarpeta. Cada fijación contiene tres líneas.
La primera línea comienza con Package:un nombre de paquete separado por comas. Se permiten expresiones regulares y globs
La segunda línea comienza con Pin:y se usa para apuntar a un conjunto de paquetes.
Si queremos anclar paquetes desde xenialmás alto xenial-updates, lo usaremos release a=xenial.
Si queremos fijar la versión 5.0, la usaremos version 5.0aquí. Se permiten patitas de globo.
O si queremos anclar paquetes desde el origen http://archive.ubuntu.com, usaremos origin "archive.ubuntu.com". Tenga en cuenta que no escribimos http://protocolo allí.
La tercera línea comienza con Pin-Priority:y su valor es un número. Lo que significa la prioridad de los elementos seleccionados anteriormente.
3. Uso de Releasecampos de archivos para establecer prioridad
En este ejemplo, los paquetes de xenialarchivos tienen mayor prioridad que xenial-updatesy xenial-security.
Después de fijar, ejecutar un apt-cache policy nautilusprograma muestra que, de hecho, ha dado mayor prioridad a una versión inferior del xenialarchivo que a una versión superior del xenial-updatesarchivo. Fíjate en la Candidate:línea.
Pero, si queremos dar prioridad a los paquetes provistos por PPA también, esto no funcionará. Porque los PPA usan el mismo nombre de archivo xenialde forma predeterminada. Por lo tanto, asignar una prioridad a a=xenialtambién se aplicará a esos paquetes. Por ejemplo (después de PPA habilitado),
Ahora la versión candidata es de un PPA. Ambos paquetes del xenialarchivo del repositorio oficial de Ubuntu y el PPA tienen la misma prioridad 1001, porque ambos usan el mismo valor para el Archivearchivo de lanzamiento. Para anclar con éxito, necesitamos combinar más campos en el archivo Pin.
Algunos ejemplos
Anclar un repositorio de PPA
Para anclar paquetes desde un repositorio, necesitamos apuntarlo usando la información que se encuentra en el apt-cache policycomando. Acabamos de ver que a=xenialeso no ayudará a señalar un repositorio. Necesitamos usar múltiples campos juntos usando una coma en un archivo de preferencias para apuntar con precisión a un repositorio.
Por ejemplo, para evitar todos los paquetes de http://ppa.launchpad.net/oibaf/graphics-drivers/ppa, podemos usar
Aquí estamos utilizando el valor del nombre en código, así como el Originvalor del PPA. (Aunque el valor del nombre en clave no se requiere aquí en realidad). A veces, el repositorio puede perder estos valores. En esos casos, se deben utilizar algunas otras técnicas. La salida de apt-cache policy libgl1-mesa-glxdice que funciona. Se redujo la prioridad de todos los paquetes de este PPA.
Ignora el hecho de que es candidato. Esto sucedió porque ya está instalado en mi sistema . Verifique la prioridad a la derecha
Anclar un repositorio cuando falta información de lanzamiento
Si queremos anclar un repositorio cuya información de lanzamiento falta, como este http://download.opensuse.org/repositories/home:/sarimkhan/xUbuntu_14.04, debemos usar otro método. Dado que ningún otro repositorio está usando ese origen, podemos usarlo originpara anclar este repositorio de manera segura .
Y luego eliminar comentarios de sources.list. Tal vez no sea la mejor manera, pero al menos las apt-getpáginas man no especifican ninguna forma de hacerlo.
En una nota relacionada, por ejemplo, el proceso de actualización de distribución de Ubuntu deshabilita todos los repositorios de terceros durante la actualización (y no solo ejecuta alguna opción para excluirlos temporalmente).
Respuestas:
Usar fijación
Puede deshabilitar las actualizaciones automáticas de ciertos repositorios sin eliminarlas por completo mediante
aptpolíticas:Para deshabilitar las actualizaciones automáticas del repositorio
repo, agregue un archivo/etc/apt/preferences.d/repocon el siguiente contenido:Lo que dará a todos los paquetes de este repositorio una prioridad menor que los paquetes ya instalados (que tienen 100).
Para obtener más información
man apt_preferenceso consulte el Wiki de la comunidad de Ubuntu .fuente
apt-cache policy package-namerelease n=repono va a cachear a nadiePuede especificar un lanzamiento con
-topción. Como ejemplo, he agregado el siguiente repositorio/etc/apt/sources.listpara instalar la última versión de Iceweasel:Como saben, hay un mismo paquete
iceweaselen el repositorio oficial de Debian. Si quiero instalar Iceweasel desde esta versión específica, ejecuto:de la página del manual de apt-get:
Creo que esta es una mejor solución.
ACTUALIZACIÓN : Como @SuB mencionó en el comentario, "
-tespecifica la versión, no el nombre del repositorio. No hay un nombre de repositorio en Ubuntu (a diferencia de Linux basado en RedHat como RHEL, Fedora, CentOS, ...)".fuente
apt-getmanual,-tespecifique el nombre de la versión no del repositorio. No hay un nombre de repositorio en Ubuntu (a diferencia de Linux basado en RedHat como RHEL, Fedora, CentOS, ...)-t xenialFunciona para un solo paquete. pero todas sus dependencias aún se obtendrán de paquetes superioresRespuesta corta
Debe fijar los repositorios desde los que no desea instalar con una prioridad inferior a 100. Lo que significa (de la
apt_preferencepágina de manual)Y para seleccionar un repositorio para fijar, usaría campos del
Releasearchivo de repositorios . Tales comoarchive,label,release,versionetc. Al especificar los valores de estos campos, se pueden seleccionar con precisión un repositorio y asignar su prioridad preferente a la misma. Consulte la página apt_preference para más detalles.Respuesta larga
Antes de continuar, necesitamos saber algo importante sobre la fijación. Eso incluye
Campos de
Releasearchivos y su asignación aapt-cache policysalidaFormato de archivos de preferencias de apt
Usar
Releasecampos de archivos para establecer prioridad1. Campos de
Releasearchivo yapt-cache policysalidaDel artículo de Debian Wiki
Vería resultados de
apt-cache policyestosLos valores en estas líneas provienen de los
Releasearchivos.Descripción establece la descripción de un repositorio. Esto no se muestra en la
apt-cache policysalidaEtiqueta es la etiqueta del repositorio. Muchos repositorios tienen etiquetas vacías. Se muestra
l=<label>en la salida.Origen esto habla sobre el origen del repositorio. El repositorio oficial de Ubuntu tiene
Ubuntucomo valor. Se muestra comoo=en la salidaVersión es la versión de una distribución. Son las 16.04 para Xenial. Se muestra como
v=en la salidaSuite es lo mismo que Archive . De debian wiki es El nombre de la distribución de Debian a la que pertenecen (o están diseñados) los paquetes en este directorio, es decir, estable, de prueba o inestable. . Para Ubuntu, estos son
release-updates,release-securityetc. Por ejemploxenial-updates,,xenial-security. Se muestra en la salida comoa=xenial,a=xenial-security. Los PPA usan solo el nombre de la versión para esto, es por eso que no ayudará mucho en Pinning.El componente habla sobre el tema de las licencias. Es
main,multiverse,restricted,universeen Ubuntu. En la salida se muestra comoc=mainoc=restrictedetc. La mayoría de los PPA se utilizanmainpara este campo, por lo que tampoco ayuda a fijar mucho.La arquitectura se trata de la arquitectura del sistema operativo. Mostrado como
b=i386ob=amd64en la salidaEl nombre en clave es el nombre de lanzamiento de la distribución. Para 16.04 lo es
xenial. Para 14.04 lo estrusty. Se muestra en laapt-cache policysalida comon=xenialon=trusty. Es lo mismo para todos los repositorios para una sola distribución por lo general. Es por eso que no ayuda a fijar mucho.La otra línea en la
apt-cache policysalida que comienzaoriginindica el origen de Internet del repositorio. También se puede usar para fijar. Pero no debe mezclarse con el campo deReleasearchivosOrigin. Esos son diferentes.Usaremos estos valores para anclar un repositorio.
Entonces, ¿cómo usamos la fijación 1 para restringir el repositorio?
Hay varias formas de controlar la fijación y solo un pequeño subconjunto es efectivo para Ubuntu. Sin embargo, una explicación detallada está más allá del alcance de la respuesta. Consulte la
apt_preferencepágina de manual para esto.2. Formato de archivo pin
Los archivos de preferencias pin o apt residen en la
/etc/apt/preferences.dcarpeta. Cada fijación contiene tres líneas.La primera línea comienza con
Package:un nombre de paquete separado por comas. Se permiten expresiones regulares y globsLa segunda línea comienza con
Pin:y se usa para apuntar a un conjunto de paquetes.Si queremos anclar paquetes desde
xenialmás altoxenial-updates, lo usaremosrelease a=xenial.Si queremos fijar la versión 5.0, la usaremos
version 5.0aquí. Se permiten patitas de globo.O si queremos anclar paquetes desde el origen
http://archive.ubuntu.com, usaremosorigin "archive.ubuntu.com". Tenga en cuenta que no escribimoshttp://protocolo allí.La tercera línea comienza con
Pin-Priority:y su valor es un número. Lo que significa la prioridad de los elementos seleccionados anteriormente.3. Uso de
Releasecampos de archivos para establecer prioridadAquí hay un ejemplo
En este ejemplo, los paquetes de
xenialarchivos tienen mayor prioridad quexenial-updatesyxenial-security.Después de fijar, ejecutar un
apt-cache policy nautilusprograma muestra que, de hecho, ha dado mayor prioridad a una versión inferior delxenialarchivo que a una versión superior delxenial-updatesarchivo. Fíjate en laCandidate:línea.Pero, si queremos dar prioridad a los paquetes provistos por PPA también, esto no funcionará. Porque los PPA usan el mismo nombre de archivo
xenialde forma predeterminada. Por lo tanto, asignar una prioridad aa=xenialtambién se aplicará a esos paquetes. Por ejemplo (después de PPA habilitado),Ahora la versión candidata es de un PPA. Ambos paquetes del
xenialarchivo del repositorio oficial de Ubuntu y el PPA tienen la misma prioridad1001, porque ambos usan el mismo valor para elArchivearchivo de lanzamiento. Para anclar con éxito, necesitamos combinar más campos en el archivo Pin.Algunos ejemplos
Anclar un repositorio de PPA
Para anclar paquetes desde un repositorio, necesitamos apuntarlo usando la información que se encuentra en el
apt-cache policycomando. Acabamos de ver quea=xenialeso no ayudará a señalar un repositorio. Necesitamos usar múltiples campos juntos usando una coma en un archivo de preferencias para apuntar con precisión a un repositorio.Por ejemplo, para evitar todos los paquetes de
http://ppa.launchpad.net/oibaf/graphics-drivers/ppa, podemos usarAquí estamos utilizando el valor del nombre en código, así como el
Originvalor del PPA. (Aunque el valor del nombre en clave no se requiere aquí en realidad). A veces, el repositorio puede perder estos valores. En esos casos, se deben utilizar algunas otras técnicas. La salida deapt-cache policy libgl1-mesa-glxdice que funciona. Se redujo la prioridad de todos los paquetes de este PPA.Ignora el hecho de que es candidato. Esto sucedió porque ya está instalado en mi sistema . Verifique la prioridad a la derecha
Anclar un repositorio cuando falta información de lanzamiento
Si queremos anclar un repositorio cuya información de lanzamiento falta, como este
http://download.opensuse.org/repositories/home:/sarimkhan/xUbuntu_14.04, debemos usar otro método. Dado que ningún otro repositorio está usando ese origen, podemos usarlooriginpara anclar este repositorio de manera segura .Nota 1: Este origen es el origen de Internet, no el que especifica el proveedor en el archivo de lanzamiento.
Nota 2:
Pin-Prioritynúmero tiene un significado especial. Consulteapt_preferencela página del manual para más detalles.fuente
Una alternativa basada en GUI sería abrir el centro de software y seleccionar editar> fuentes de software ...
todo lo que necesita hacer es desmarcar los repositorios de los que no desea actualizaciones.
Espero que esto ayude
fuente
La opción obvia es modificar
/etc/apt/sources.listy comentar todos los demás repositorios, y luego ejecutarY luego eliminar comentarios de
sources.list. Tal vez no sea la mejor manera, pero al menos lasapt-getpáginas man no especifican ninguna forma de hacerlo.En una nota relacionada, por ejemplo, el proceso de actualización de distribución de Ubuntu deshabilita todos los repositorios de terceros durante la actualización (y no solo ejecuta alguna opción para excluirlos temporalmente).
fuente
Otra opción de GUI es elegir el origen en el administrador de paquetes Synaptic.
fuente