A resposta curta:
O arquivo de preferências do APT / etc / apt / preferências pode ser usado para controlar quais versões de pacotes serão selecionadas para instalação.
Aqui está o arquivo /etc/apt/preferences
, que é apt-get
usado para decidir qual versão deve ser selecionada se houver muitas versões de um único pacote. Com isso, qualquer pacote proveniente do repositório local terá precedência sobre os outros pacotes.
Pacote: *
PIN: origem ""
Prioridade de pino: 1001
Isso não controlará a versão, mas a preferência de origem, se os dois pacotes tiverem a mesma versão. Se você precisar atribuir a prioridade mais alta para a mesma versão do pacote no seu repositório local, liste-as na parte superior do /etc/apt/sources.list
arquivo>
Resposta à pergunta original:
Como atribuir maior prioridade ao repositório local sem usar o arquivo sources.list?
Não há como atribuir a maior prioridade ao repositório local sem usar o sources.list
arquivo. você deve colocá-los no topo de "sources.list" se desejar atribuir a maior prioridade ao seu repositório local.
Resposta sumária a esta pergunta:
Como faço para o apt-get preferir pacotes de repositórios locais em vez de baixar novamente a mesma versão do pacote dos repositórios oficiais? O repositório local é assinado e confiável. Já tentamos a prioridade de preferências do apt.
Usando o /etc/apt/sources.list
arquivo, você precisa colocar sua linha de repositório local na parte superior deste arquivo. como o abaixo.
deb cdrom: [Kubuntu 12.04 LTS _Precise Pangolin_ - Lançamento i386 (20120424)] / main principal preciso
arquivo deb: / media / Main / Precise-Debs-New /
arquivo deb: / media / Principal / Software Linux / Ubuntu / Precise /
deb http://archive.ubuntu.com/ubuntu multiverso restrito do universo principal preciso
deb-src http://archive.ubuntu.com/ubuntu multiverso principal do universo preciso restrito #Adicionado por software-properties
# deb cdrom: [Xubuntu 12.04 LTS _Precise Pangolin_ - Lançamento i386 (20120423.1)] / universo restrito do multiverso principal preciso
# deb cdrom: [Ubuntu 12.04 LTS _Precise Pangolin_ - Lançamento i386 (20120423)] / main principal preciso
# deb http://archive.canonical.com/ubuntu partner preciso
# deb-src http://archive.canonical.com/ubuntu partner preciso
# deb http://extras.ubuntu.com/ubuntu precise principal
# deb-src http://extras.ubuntu.com/ubuntu precise principal
E sim, "apt_preference" não tem nada a ver com a seleção de instâncias dos pacotes com a mesma versão. O ponto aqui é que você não pode usar o /etc/apt/preference
arquivo para forçar a selecionar / usar um .deb
arquivo do seu repositório local, atribuindo a maior prioridade ao seu local. Esse arquivo (preferência) é usado para selecionar uma versão específica, não uma instância específica (arquivo .deb) da mesma versão. Para o último caso, você precisa usar o /etc/apt/sources.list
arquivo com o método acima mencionado.
Explicação:
Parece que todos entendemos mal o apt_preference
objetivo, o manual apt_preference descreve isso nos três primeiros parágrafos !!
O arquivo de preferências do APT / etc / apt / preferências pode ser usado para controlar quais versões de pacotes serão selecionadas para instalação.
Várias versões de um pacote podem estar disponíveis para instalação quando o arquivo sources.list (5) contém referências a mais de uma distribuição (por exemplo, stable e testing). O APT atribui uma prioridade a cada versão disponível. Sujeito a restrições de dependência, o apt-get (8) seleciona a versão com a maior prioridade para instalação. O arquivo de preferências do APT substitui as prioridades que o APT atribui às versões dos pacotes por padrão, fornecendo ao usuário controle sobre qual deles está selecionado para instalação.
E o muito importante está no terceiro parágrafo
Várias instâncias da mesma versão de um pacote podem estar disponíveis quando o arquivo sources.list (5) contém referências a mais de uma fonte. Nesse caso, o apt-get (8) baixa a instância listada mais cedo no arquivo sources.list (5). O arquivo de preferências do APT não afeta a escolha da instância, apenas a escolha da versão .
Os itálicos foram feitos pelos meus
Vamos ver isso com um exemplo:
Eu tenho a versão precisa compiz-fusion-plugins-extra
, mas desabilitei para demonstração
Aqui está o arquivo /etc/apt/preferences
, que é apt-get
usado para decidir qual versão deve ser selecionada se houver muitas versões de um único pacote. (Neste exemplo, compiz-fusion-plugins-extra
possui várias versões.
Pacote: *
PIN: origem ""
Prioridade de pino: 1001
Este arquivo diz apt-get
que instalar a partir do repositório local para todos os pacotes que têm várias versões existe em repositório diferente.
Em outras palavras, se eu tiver um pacote xapps
com versão 1.0
no meu repositório local, e esse mesmo pacote xapps
existir no repositório do Precise com versão superior, por exemplo 2.0
, apt-get
preferirá a versão do repositório local, ou seja, versão 1.0
.
Aqui está o meu /etc/apt/sources.list
arquivo
deb http://archive.ubuntu.com/ubuntu multiverso restrito do universo principal preciso
deb-src http://archive.ubuntu.com/ubuntu multiverso principal do universo preciso restrito #Adicionado por software-properties
deb http://security.ubuntu.com/ubuntu/ universo de segurança precisa multiverso principal restrito
deb http://archive.ubuntu.com/ubuntu specific-updates universe principal multiverso restrito
deb http://archive.ubuntu.com/ubuntu universo de backports preciso multiverso principal restrito
# deb http://archive.canonical.com/ubuntu partner preciso
# deb-src http://archive.canonical.com/ubuntu partner preciso
# deb http://extras.ubuntu.com/ubuntu precise principal
# deb-src http://extras.ubuntu.com/ubuntu precise principal
deb file: / media / Principal / Software Linux / Ubuntu / Oneiric / #este repositório onírico.
arquivo deb: / media / principal / software Linux / Ubuntu / Natty / natty /
arquivo deb: / media / principal / software Linux / Ubuntu / Natty / kubuntu /
arquivo deb: / media / principal / software Linux / Ubuntu / Natty / natty_new /
Embora eu tenha listado o repositório do preciso anteriormente no arquivo, ele não faz com apt-get
que selecione o pacote desse repositório. Conforme descrito no manual
O arquivo de preferências do APT não afeta a escolha da instância, apenas a escolha da versão.
Portanto, a saída do comando apt-cache policy compiz-fusion-plugins-extra
foi a esperada conforme abaixo
política do anwar @ edubuntu-lenovo: / etc / apt $ apt-cache policy compiz-fusion-plugins-extra
compiz-fusion-plugins-extra:
Instalado: (nenhum)
Candidato: 0.9.5.94-0ubuntu1 / ** selecionando versões inferiores para prioridade ** /
Tabela de versão:
0.9.7.0 ~ bzr9-0ubuntu6 0
500 pacotes http://archive.ubuntu.com/ubuntu/ precision / universe i386
0.9.5.94-0ubuntu1 0
Arquivo 1001: / media / Principal / Software Linux / Ubuntu / Oneiric / Pacotes
0.9.4-0ubuntu3 0
Arquivo 1001: / media / Principal / Software Linux / Ubuntu / Natty / natty / Pacotes
Aqui, a versão candidata é 0.9.5.94-0ubuntu1
, (que está no repositório local), não 0.9.7.0~bzr9-0ubuntu6 0
, que está no repositório de precises. embora o primeiro tenha sido listado primeiro no sources.list
arquivo.
Um exemplo de apt-get
tentativa de instalação compiz-fusion-plugins-extra
após definir a prioridade mais alta para o repositório local.
anwar @ edubuntu-lenovo: ~ $ sudo apt-get install compiz-fusão-plugins-extra
Lendo listas de pacotes ... Concluído
Construindo árvore de dependência
Lendo informações do estado ... Concluído
Os seguintes pacotes foram instalados automaticamente e não são mais necessários:
x11-apps x11-xfs-utils xinit x11-session-utils libfs6
Use 'apt-get autoremove' para removê-los.
Os seguintes pacotes extras serão instalados:
compiz-core compiz-plugins-padrão compiz-plugins-extra
compiz-plugins-main-default libdecoration0 xserver-xorg-core
xserver-xorg-video-intel
Pacotes sugeridos:
compizconfig-settings-manager xfonts-100dpi xfonts-75dpi
Os seguintes pacotes serão REMOVIDOS:
compiz compiz-gnome compizconfig-backend-gconf edubuntu-desktop
libcompizconfig0 unidade ubuntu-desktop 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-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
Os seguintes NOVOS pacotes serão instalados:
compiz-fusão-plugins-extra compiz-plugins-extra
Os seguintes pacotes serão ATUALIZADOS:
compiz-core compiz-plugins-default compiz-plugins-main-default
libdecoration0 xserver-xorg-core xserver-xorg-video-intel
0 atualizado, 2 recém-instalado, 6 rebaixado, 37 para remover e 698 não atualizado.
Precisa obter 0 B / 5.772 kB de arquivos.
Após esta operação, 8.294 kB de espaço em disco serão liberados.
Deseja continuar [S / n]?
Estranho !!!, Ele está tentando fazer o downgrade dos pacotes compiz já instalados, precisos para resolver dependências (combinando com o da Oneiric) com os recém-selecionados compiz-fusion-plugins-extra
!!!.
O que é mais perigoso é, ele está tentando remover os pacotes de drivers gráficos (xserver-xorg -....) para evitar conflitos com novas compactações.
(Provavelmente, se eu também os tivesse no meu repositório local, eles podem com segurança fazer o downgrade. Mas como esses pacotes geralmente são instalados, eu não os baixei, portanto não estão no repositório local, portanto, este resultado) .
Conclusão : Portanto, /etc/apt/preferences
é recomendável usar somente o repositório local, se você tiver um repositório completo no sistema local.
E se várias instâncias (arquivo .deb) da mesma versão existirem em muitos repositórios.
O que é descrito pelo apt_preference
manual
Várias instâncias da mesma versão de um pacote podem estar disponíveis quando o arquivo sources.list (5) contém referências a mais de uma fonte. Nesse caso, o apt-get (8) baixa a instância listada mais cedo no arquivo sources.list (5).
Um exemplo de casos de uso para o /etc/apt/preferences
arquivo:
Um exemplo de forçar apt-get
a seleção da versão disponível em um repositório personalizado, em vez da versão padrão do Ubuntu, pode ser a distribuição "Linux Mint". Eles usam esse preference
arquivo personalizado .
Pacote: *
Pin: liberação o = linuxmint
Prioridade de pino: 700
Pacote: *
Pin: origin packages.linuxmint.com
Prioridade de pino: 700
Pacote: *
Pin: liberação o = Ubuntu
Prioridade de pino: 500
Isso efetivamente faz com que eles forneçam pacotes quando os tiverem em seus repositórios. Mas se eles não os possuem, eles usam o repositório padrão do Ubuntu.
Um exemplo em execução apt-get
após definir a prioridade mais alta para o repositório local
Eu só queria instalar o kubuntu-desktop
pacote no Ubuntu para testar o KDE. (Eu esqueci isso, eu configurei uma preferência usando o /etc/apt/preference
arquivo) . Eu tinha um iso do kubuntu-12.04-alternate-installer, então pensei em usá-lo.
(depois de definir corretamente o iso como fonte de repositório) , corri
sudo apt-get install kubuntu-desktop
e fiquei surpreso ao ver a saída abaixo.
anwar @ edubuntu-lenovo: ~ $ sudo apt-get install kubuntu-desktop
Lendo listas de pacotes ... Concluído
Construindo árvore de dependência
Lendo informações do estado ... Concluído
Alguns pacotes não puderam ser instalados. Isso pode significar que você tem
solicitou uma situação impossível ou se você estiver usando o dispositivo instável
distribuição que alguns pacotes necessários ainda não foram criados
ou foi removido do Incoming.
As seguintes informações podem ajudar a resolver a situação:
Os seguintes pacotes têm dependências não atendidas:
kubuntu-desktop: Depende: language-selector-kde mas não será instalado
Recomenda: amarok, mas não será instalado
Recomenda: apturl-kde, mas não será instalado
Recomenda: gdebi-kde, mas não será instalado
Recomenda: gpgsm, mas não será instalado
Recomenda: ibus-qt4, mas não será instalado
Recomenda: jockey-kde, mas não será instalado
Recomenda: kdegraphics-strigi-plugins, mas não será instalado
Recomenda: kdepim-wizards mas não será instalado
Recomenda: kpackagekit, mas não será instalado
Recomenda: libreoffice-kde, mas não será instalado
Recomenda: libreoffice-style-oxygen, mas não será instalado
Recomenda: network-manager-pptp-kde, mas não será instalado
Recomenda: plasma-widget-facebook, mas não será instalado
Recomenda: plasma-widget-kimpanel, mas não será instalado
Recomenda: usb-creator-kde, mas não será instalado
E: Não foi possível corrigir os problemas, você manteve pacotes quebrados.
Fiquei surpreso com o resultado. de repente, lembro que defini uma preferência ( para escrever esta resposta ) /etc/apt/preference
para definir a maior prioridade ao meu repositório local.
então, eu executei o seguinte:, apt-cache policy kubuntu-desktop
a saída era a seguinte:
anwar @ edubuntu-lenovo: ~ política do apt-cache kubuntu-desktop
kubuntu-desktop:
Instalado: (nenhum)
Candidato: 1.222.1kde47 ~ ppa2
Tabela de versão:
1.254 0
500 cdrom: // Kubuntu 12.04 LTS _Precise Pangolin_ - Lançamento i386 (20120424) / preciso / pacotes principais do i386
500 Pacotes http://archive.ubuntu.com/ubuntu/ precision / main i386
1.222.1kde47 ~ ppa2 0
Arquivo 1001: / media / Principal / Software Linux / Ubuntu / Natty / natty / Pacotes
1.222.1 0
Arquivo 1001: / media / Principal / Software Linux / Ubuntu / Natty / natty / Pacotes
1.222 0
Arquivo 1001: / media / Principal / Software Linux / Ubuntu / Natty / kubuntu / Pacotes
Nesta saída, vemos que tanto o "cdrom" quanto o "repositório principal preciso" têm o número da versão 1.254 , enquanto o repositório local tem a versão 1.222.1kde47 ~ ppa2 , que é a versão inferior. Embora eles sejam colocados antes dos locais no arquivo sources.list, os pacotes locais têm precedência.
Para ver explicitamente que apt-get
realmente está tentando instalar a partir do local, executei synaptic
e obtive isso, o que mostra que, o sistema Apt considera 1.222.1kde47 ~ ppa2 como a versão candidata a ser instalada.
Também apt-cache policy kubuntu-desktop
mostrando as mesmas coisas
anwar @ edubuntu-lenovo: ~ política do apt-cache kubuntu-desktop
kubuntu-desktop:
Instalado: (nenhum)
Candidato: 1.222.1kde47 ~ ppa2
Tabela de versão:
1.254 0
500 cdrom: // Kubuntu 12.04 LTS _Precise Pangolin_ - Lançamento i386 (20120424) / preciso / pacotes principais do i386
500 Pacotes http://archive.ubuntu.com/ubuntu/ precision / main i386
1.222.1kde47 ~ ppa2 0
Arquivo 1001: / media / Principal / Software Linux / Ubuntu / Natty / natty / Pacotes
1.222.1 0
Arquivo 1001: / media / Principal / Software Linux / Ubuntu / Natty / natty / Pacotes
1.222 0
Arquivo 1001: / media / Principal / Software Linux / Ubuntu / Natty / kubuntu / Pacotes
Para resolver isso, removi o /etc/apt/preference
arquivo por sudo rm /etc/apt/preference
.
Então correu novamente isso novamente apt-cache policy kubuntu-desktop
. apenas vendo esta saída esperada.
anwar @ edubuntu-lenovo: ~ $ sudo rm / etc / apt / preferências
anwar @ edubuntu-lenovo: ~ $ política do sudo apt-cache kubuntu-desktop
kubuntu-desktop:
Instalado: (nenhum)
Candidato: 1.254
Tabela de versão:
1.254 0
500 cdrom: // Kubuntu 12.04 LTS _Precise Pangolin_ - Lançamento i386 (20120424) / preciso / pacotes principais do i386
500 Pacotes http://archive.ubuntu.com/ubuntu/ precision / main i386
1.222.1kde47 ~ ppa2 0
Arquivo 500: / media / Principal / Software Linux / Ubuntu / Natty / natty / Pacotes
1.222.1 0
Arquivo 500: / media / Principal / Software Linux / Ubuntu / Natty / natty / Pacotes
1.222 0
Arquivo 500: / media / Principal / Software Linux / Ubuntu / Natty / kubuntu / Pacotes
Também correu isso novamente. sudo apt-get install kubuntu-desktop
para ver a saída abaixo:
......... Detalhes desnecessários excluídos .........
0 atualizado, 213 recém-instalado, 0 para remover e 150 não atualizado.
Precisa obter 0 B / 89,6 MB de arquivos.
Após esta operação, 269 MB de espaço em disco adicional serão usados.
Deseja continuar [S / n]?
Você pode conferir o resultado completo aqui
Então, eu tenho quase certeza da parte Explicação.
Referência 1: O manual apt_preference
Referência 2: Como manter uma versão específica dos pacotes instalados