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-getusa 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.listarchivo>
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.listarchivo. 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.listarchivo, 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/preferencearchivo para forzar a seleccionar / usar un .debarchivo 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.listarchivo con el método mencionado anteriormente.
Explicación:
Parece que todos entendimos mal el apt_preferencepropó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-getusa para decidir, qué versión se debe seleccionar si hay muchas versiones de un solo paquete. (En este ejemplo, compiz-fusion-plugins-extratiene varias versiones.
Paquete: *
Pin: origen ""
Prioridad de clavija: 1001
Este archivo dice apt-getque 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 xappscon la versión 1.0en mi repositorio local, y este mismo paquete xappsexiste en el repositorio de Precise con una versión superior, por ejemplo 2.0, apt-getpreferiré la versión del repositorio local, es decir, la versión 1.0.
Aquí está mi /etc/apt/sources.listarchivo
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-getque 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-extrafue 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.listarchivo.
Una ejecución de ejemplo de apt-getintentar instalar compiz-fusion-plugins-extradespué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/preferencessolo 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_preferencemanual
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/preferencesarchivo:
Un ejemplo de forzar apt-geta 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 preferencearchivo 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-getdespué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/preferencearchivo) . 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/preferencepara establecer la máxima prioridad para mi repositorio local.
Entonces, ejecuté esto: apt-cache policy kubuntu-desktopla 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-getrealmente está intentando instalar desde uno local, ejecuté synapticy 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-desktopmuestra 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/preferencearchivo 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-desktoppara 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