La respuesta corta:
El archivo de preferencias APT / etc / apt / preferencias se puede usar para controlar qué versiones de paquetes se seleccionarán para la instalación.
Aquí está el archivo /etc/apt/preferences
, que se apt-get
usa para decidir, qué versión se debe seleccionar si hay muchas versiones de un solo paquete. Con esto, cualquier paquete que provenga del repositorio local tendrá prioridad sobre los otros paquetes.
Paquete: *
Pin: origen ""
Prioridad de clavija: 1001
Esto no controlará la versión, sino la preferencia de origen si ambos paquetes tienen la misma versión. Si necesita asignar la máxima prioridad para la misma versión del paquete en su repositorio local, enumérelos en la parte superior del /etc/apt/sources.list
archivo>
Respuesta a la pregunta original:
¿Cómo asignar la máxima prioridad al repositorio local sin usar el archivo sources.list?
No hay forma de asignar la máxima prioridad al repositorio local sin usar el sources.list
archivo. debe colocarlos en la parte superior de "sources.list" si desea asignar la máxima prioridad a su repositorio local.
Respuesta resumida a esta pregunta:
¿Cómo puedo hacer que apt-get prefiera paquetes de repositorios locales en lugar de descargar nuevamente la misma versión del paquete desde los repositorios oficiales? El repositorio local está firmado y es de confianza. Ya hemos probado las preferencias de apt prioridad.
Usando el /etc/apt/sources.list
archivo, debe colocar su línea de repositorio local en la parte superior de este archivo. como el de abajo
deb cdrom: [Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424)] / preciso principal restringido
archivo deb: / media / Main / Precise-Debs-New /
archivo deb: / media / Main / Linux-Software / Ubuntu / Precise /
deb http://archive.ubuntu.com/ubuntu preciso universo principal multiverso restringido
deb-src http://archive.ubuntu.com/ubuntu universo preciso multiverso principal restringido #Añadido por propiedades de software
# deb cdrom: [Xubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120423.1)] / universo restringido multiverso principal preciso
# deb cdrom: [Ubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120423)] / preciso principal restringido
# deb http://archive.canonical.com/ubuntu socio preciso
# deb-src http://archive.canonical.com/ubuntu socio preciso
# deb http://extras.ubuntu.com/ubuntu precisa main
# deb-src http://extras.ubuntu.com/ubuntu precision main
Y sí, "apt_preference" no tiene nada que ver con seleccionar instancias de los paquetes con la misma versión. El punto aquí es que no puede usar el /etc/apt/preference
archivo para forzar a seleccionar / usar un .deb
archivo de su repositorio local asignando la más alta prioridad a su local. Ese archivo (preferencia) se utiliza para seleccionar una versión específica, no una instancia específica (archivo .deb) de la misma versión. Para el último caso, debe usar el /etc/apt/sources.list
archivo con el método mencionado anteriormente.
Explicación:
Parece que todos entendimos mal el apt_preference
propósito, ¡el manual apt_preference describe esto en los primeros 3 párrafos!
El archivo de preferencias APT / etc / apt / preferencias se puede usar para controlar qué versiones de paquetes se seleccionarán para la instalación.
Varias versiones de un paquete pueden estar disponibles para la instalación cuando el archivo sources.list (5) contiene referencias a más de una distribución (por ejemplo, estable y prueba). APT asigna una prioridad a cada versión disponible. Sujeto a restricciones de dependencia, apt-get (8) selecciona la versión con mayor prioridad para la instalación. El archivo de preferencias de APT anula las prioridades que APT asigna a las versiones de paquetes de forma predeterminada, lo que le da al usuario el control sobre cuál se selecciona para la instalación.
Y el muy importante está en el tercer párrafo.
Varias instancias de la misma versión de un paquete pueden estar disponibles cuando el archivo sources.list (5) contiene referencias a más de una fuente. En este caso, apt-get (8) descarga la instancia listada más temprano en el archivo sources.list (5). El archivo de preferencias APT no afecta la elección de la instancia, solo la elección de la versión .
Esas cursivas fueron hechas por la mía
Veamos esto con un ejemplo:
Tengo una versión precisa de compiz-fusion-plugins-extra
, pero la desactivé para la demostración
Aquí está el archivo /etc/apt/preferences
, que se apt-get
usa para decidir, qué versión se debe seleccionar si hay muchas versiones de un solo paquete. (En este ejemplo, compiz-fusion-plugins-extra
tiene varias versiones.
Paquete: *
Pin: origen ""
Prioridad de clavija: 1001
Este archivo dice apt-get
que la instalación desde el repositorio local para todos los paquetes que tienen varias versiones existe en un repositorio diferente.
En otras palabras, si tengo un paquete xapps
con la versión 1.0
en mi repositorio local, y este mismo paquete xapps
existe en el repositorio de Precise con una versión superior, por ejemplo 2.0
, apt-get
preferiré la versión del repositorio local, es decir, la versión 1.0
.
Aquí está mi /etc/apt/sources.list
archivo
deb http://archive.ubuntu.com/ubuntu preciso universo principal multiverso restringido
deb-src http://archive.ubuntu.com/ubuntu universo preciso multiverso principal restringido #Añadido por propiedades de software
deb http://security.ubuntu.com/ubuntu/ precisión-seguridad universo principal multiverso restringido
deb http://archive.ubuntu.com/ubuntu preciso-actualizaciones universo principal multiverso restringido
deb http://archive.ubuntu.com/ubuntu precisión-backports universo principal multiverso restringido
# deb http://archive.canonical.com/ubuntu socio preciso
# deb-src http://archive.canonical.com/ubuntu socio preciso
# deb http://extras.ubuntu.com/ubuntu precisa main
# deb-src http://extras.ubuntu.com/ubuntu precision main
archivo deb: / media / Main / Linux-Software / Ubuntu / Oneiric / #este es el repositorio oneiric.
archivo deb: / media / Main / Linux-Software / Ubuntu / Natty / natty /
archivo deb: / media / Main / Linux-Software / Ubuntu / Natty / kubuntu /
archivo deb: / media / Main / Linux-Software / Ubuntu / Natty / natty_new /
Aunque, he enumerado el repositorio de precisión anteriormente en el archivo, no hace apt-get
que seleccione el paquete de ese repositorio. Como se describe en el manual
El archivo de preferencias APT no afecta la elección de la instancia, solo la elección de la versión.
Entonces, la salida del comando apt-cache policy compiz-fusion-plugins-extra
fue como se esperaba a continuación
anwar @ edubuntu-lenovo: / etc / apt $ apt-cache policy compiz-fusion-plugins-extra
compiz-fusion-plugins-extra:
Instalado: (ninguno)
Candidato: 0.9.5.94-0ubuntu1 / ** seleccionando versiones inferiores para prioridad ** /
Tabla de versiones:
0.9.7.0 ~ bzr9-0ubuntu6 0
500 paquetes http://archive.ubuntu.com/ubuntu/ preciso / universe i386
0.9.5.94-0ubuntu1 0
Archivo 1001: / media / Main / Linux-Software / Ubuntu / Oneiric / Packages
0.9.4-0ubuntu3 0
Archivo 1001: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
Aquí, la versión candidata es 0.9.5.94-0ubuntu1
, (que está en el repositorio local), no 0.9.7.0~bzr9-0ubuntu6 0
, que está en el repositorio de precises. aunque el de los precises figuraba primero en el sources.list
archivo.
Una ejecución de ejemplo de apt-get
intentar instalar compiz-fusion-plugins-extra
después de establecer la máxima prioridad en el repositorio local.
anwar @ edubuntu-lenovo: ~ $ sudo apt-get install compiz-fusion-plugins-extra
Leyendo listas de paquetes ... Hecho
Construyendo árbol de dependencia
Leyendo información del estado ... Hecho
Los siguientes paquetes se instalaron automáticamente y ya no son necesarios:
x11-apps x11-xfs-utils xinit x11-session-utils libfs6
Use 'apt-get autoremove' para eliminarlos.
Se instalarán los siguientes paquetes adicionales:
compiz-core compiz-plugins-default compiz-plugins-extra
compiz-plugins-main-default libdecoration0 xserver-xorg-core
xserver-xorg-video-intel
Paquetes sugeridos:
compizconfig-settings-manager xfonts-100dpi xfonts-75dpi
Los siguientes paquetes serán eliminados:
compiz compiz-gnome compizconfig-backend-gconf edubuntu-desktop
libcompizconfig0 ubuntu-desktop unity xorg xserver-xorg
xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-mouse
xserver-xorg-input-synaptics xserver-xorg-input-vmmouse
xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-ati
xserver-xorg-video-cirrus xserver-xorg-video-fbdev xserver-xorg-video-geode
xserver-xorg-video-mach64 xserver-xorg-video-mga xserver-xorg-video-neomagic
xserver-xorg-video-nouveau xserver-xorg-video-openchrome
xserver-xorg-video-qxl xserver-xorg-video-r128 xserver-xorg-video-radeon
xserver-xorg-video-s3 xserver-xorg-video-savage
xserver-xorg-video-siliconmotion xserver-xorg-video-sis
xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-trident
xserver-xorg-video-vesa xserver-xorg-video-vmware
Se instalarán los siguientes paquetes NUEVOS:
compiz-fusion-plugins-extra compiz-plugins-extra
Los siguientes paquetes serán DESCARGADOS:
compiz-core compiz-plugins-default compiz-plugins-main-default
libdecoration0 xserver-xorg-core xserver-xorg-video-intel
0 actualizado, 2 recién instalado, 6 degradado, 37 para eliminar y 698 no actualizado.
Necesita obtener 0 B / 5,772 kB de archivos.
Después de esta operación, se liberarán 8.294 kB de espacio en disco.
¿Quieres continuar [S / n]?
¡¡¡Extraño !!!, está tratando de degradar los paquetes de compiz ya instalados de dependencias precisas para resolver (coincidentes con las de Oneiric) con las recién seleccionadas compiz-fusion-plugins-extra
!!!.
Lo que es más peligroso es que está intentando eliminar los paquetes de controladores de gráficos (xserver-xorg -....) para evitar conflictos con las nuevas compilaciones.
(Probablemente, si también los tuviera en mi repositorio local, es posible que quieran degradarlos de manera segura. Pero como esos paquetes generalmente están instalados, no los descargué, por lo que no están en el repositorio local, de ahí este resultado) .
Conclusión : Por lo tanto, /etc/apt/preferences
solo se recomienda usar con el repositorio local, si tiene un repositorio completo en el sistema local.
¿Qué sucede si existen varias instancias (archivo .deb) de la misma versión en muchos repositorios?
Que se describe en el apt_preference
manual
Pueden estar disponibles varias instancias de la misma versión de un paquete cuando el archivo sources.list (5) contiene referencias a más de una fuente. En este caso, apt-get (8) descarga la instancia listada más temprano en el archivo sources.list (5).
Un ejemplo de casos de uso para /etc/apt/preferences
archivo:
Un ejemplo de forzar apt-get
a seleccionar la versión disponible de un repositorio personalizado, en lugar del estándar de Ubuntu, puede ser la distribución "Linux Mint". Usan este preference
archivo personalizado .
Paquete: *
Pin: liberar o = linuxmint
Prioridad de clavija: 700
Paquete: *
Pin: paquetes de origen. Linuxmint.com
Prioridad de clavija: 700
Paquete: *
Pin: lanzamiento o = Ubuntu
Prioridad de clavija: 500
Esto efectivamente les hace proporcionar paquetes cuando los tienen en sus repositorios. Pero si no los tienen, usan el repositorio estándar de Ubuntu.
Un ejemplo que se ejecuta apt-get
después de establecer la máxima prioridad para el repositorio local
Solo quería instalar el kubuntu-desktop
paquete sobre Ubuntu para probar KDE. (Olvidé eso, he establecido una preferencia usando el /etc/apt/preference
archivo) . Tenía una iso del instalador alternativo kubuntu-12.04, así que pensé que podía usar eso.
(después de configurar correctamente la iso como fuente del repositorio) , corrí
sudo apt-get install kubuntu-desktop
, luego me sorprendió ver la salida a continuación.
anwar @ edubuntu-lenovo: ~ $ sudo apt-get install kubuntu-desktop
Leyendo listas de paquetes ... Hecho
Construyendo árbol de dependencia
Leyendo información del estado ... Hecho
Algunos paquetes no se pudieron instalar. Esto puede significar que tienes
solicitó una situación imposible o si está utilizando el inestable
distribución de que algunos paquetes requeridos aún no se han creado
o ha sido trasladado fuera de entrada.
La siguiente información puede ayudar a resolver la situación:
Los siguientes paquetes tienen dependencias insatisfechas:
kubuntu-desktop: Depende: language-selector-kde pero no se instalará
Recomienda: amarok pero no se instalará
Recomienda: apturl-kde pero no se instalará
Recomienda: gdebi-kde pero no se instalará
Recomienda: gpgsm pero no se instalará
Recomienda: ibus-qt4 pero no se instalará
Recomienda: jockey-kde pero no se instalará
Recomienda: kdegraphics-strigi-plugins pero no se instalará
Recomienda: kdepim-wizards pero no se instalará
Recomienda: kpackagekit pero no se instalará
Recomienda: libreoffice-kde pero no se instalará
Recomienda: libreoffice-style-oxygen pero no se instalará
Recomienda: network-manager-pptp-kde pero no se instalará
Recomienda: plasma-widget-facebook pero no se instalará
Recomienda: plasma-widget-kimpanel pero no se instalará
Recomienda: usb-creator-kde pero no se instalará
E: Incapaz de corregir problemas, ha retenido paquetes rotos.
Me sorprendió el resultado. De repente, recuerdo que he establecido una preferencia ( por escribir esta respuesta ) /etc/apt/preference
para establecer la máxima prioridad para mi repositorio local.
Entonces, ejecuté esto: apt-cache policy kubuntu-desktop
la salida fue la siguiente:
anwar @ edubuntu-lenovo: ~ $ apt-cache policy kubuntu-desktop
kubuntu-escritorio:
Instalado: (ninguno)
Candidato: 1.222.1kde47 ~ ppa2
Tabla de versiones:
1.254 0
500 cdrom: // Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424) / precise / main i386 Packages
500 http://archive.ubuntu.com/ubuntu/ preciso / main i386 Packages
1.222.1kde47 ~ ppa2 0
Archivo 1001: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1.222.1 0
Archivo 1001: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1.222 0
Archivo 1001: / media / Main / Linux-Software / Ubuntu / Natty / kubuntu / Packages
En este resultado, vemos que tanto el "cdrom" como el "repositorio principal preciso" tienen el número de versión 1.254 , mientras que el repositorio local tiene la versión 1.222.1kde47 ~ ppa2 , que es la versión inferior. Aunque, se colocan antes que los locales en el archivo sources.list, los paquetes locales tienen prioridad.
Para ver explícitamente que apt-get
realmente está intentando instalar desde uno local, ejecuté synaptic
y obtuve esto, lo que demuestra que el sistema Apt considera 1.222.1kde47 ~ ppa2 como la versión candidata para instalar.
También apt-cache policy kubuntu-desktop
muestra las mismas cosas
anwar @ edubuntu-lenovo: ~ $ apt-cache policy kubuntu-desktop
kubuntu-escritorio:
Instalado: (ninguno)
Candidato: 1.222.1kde47 ~ ppa2
Tabla de versiones:
1.254 0
500 cdrom: // Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424) / precise / main i386 Packages
500 http://archive.ubuntu.com/ubuntu/ preciso / main i386 Packages
1.222.1kde47 ~ ppa2 0
Archivo 1001: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1.222.1 0
Archivo 1001: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1.222 0
Archivo 1001: / media / Main / Linux-Software / Ubuntu / Natty / kubuntu / Packages
Para resolver esto, eliminé el /etc/apt/preference
archivo sudo rm /etc/apt/preference
.
Luego corrió de nuevo esto de nuevo apt-cache policy kubuntu-desktop
. solo viendo esta salida esperada.
anwar @ edubuntu-lenovo: ~ $ sudo rm / etc / apt / preferencias
anwar @ edubuntu-lenovo: ~ $ sudo apt-cache policy kubuntu-desktop
kubuntu-escritorio:
Instalado: (ninguno)
Candidato: 1.254
Tabla de versiones:
1.254 0
500 cdrom: // Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424) / precise / main i386 Packages
500 http://archive.ubuntu.com/ubuntu/ preciso / main i386 Packages
1.222.1kde47 ~ ppa2 0
Archivo 500: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1.222.1 0
Archivo 500: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1.222 0
Archivo 500: / media / Main / Linux-Software / Ubuntu / Natty / kubuntu / Packages
También ejecuté esto nuevamente. sudo apt-get install kubuntu-desktop
para ver el resultado a continuación:
......... Detalles innecesarios eliminados .........
0 actualizado, 213 recién instalado, 0 para eliminar y 150 no actualizado.
Necesita obtener 0 B / 89.6 MB de archivos.
Después de esta operación, se utilizarán 269 MB de espacio adicional en disco.
¿Quieres continuar [S / n]?
Puedes consultar el resultado completo aquí
Entonces estoy bastante seguro de la parte de explicación.
Referencia 1: El manual de apt_preference
Referencia 2: Cómo mantener instalada una versión específica de paquetes