Fixação e repos locais

2

Eu não consigo enrolar minha cabeça em fixar no Debian. Estou tentando instalar um pacote automaticamente primeiro a partir de nosso repositório de projeto local, depois de nosso repositório local estável e depois do repositório oficial do Debian, preenchendo as dependências conforme necessário na mesma ordem.

Então eu tenho três repos em /etc/apt/sources.list:

deb http://our-stable-repo/ our-squeeze-stable main
deb http://official-debian-repo/ squeeze main
deb http://our-project-repo/ our-project main

Os arquivos de lançamento são os seguintes, repo-stable-repo:

Origin: Ourname
Label: Ourname
Suite: our-squeeze-stable
Components: backports main
Architectures:  
MD5Sum:
 [...]
SHA1:
 [...]

e nosso projeto-repo:

Origin: Ourname
Label: Ourname
Archive: our-project
Component: main
Architecture: amd64

Todos os nossos pacotes estão em nosso repositório stable-stable e em nosso repo-projeto. Eu quero testar um pacote do nosso-projeto-repo, que terá poucas dependências do mesmo, e alguns (aqueles que não devem ser testados) do nosso repo estável-estável.

Agora eu configuro meu / etc / apt / preferences:

Package: *
Pin: release a=our-project
Pin-Priority: 900

Package: *
Pin: release a=our-squeeze-stable
Pin-Priority: 750

Package: *
Pin: release a=squeeze
Pin-Priority: 600

então eu espero que o apt tente e instale qualquer pacote do nosso projeto primeiro.

Mas isso não acontece; nosso-nosso-squeeze-estável parece sempre "vencer". E mesmo fornecendo -t our-project em uma linha de comando não ajuda. A única forma de fazer com que o apt instalar meu pacote do repositório do projeto fosse remover outras fontes, mas dessa forma acabei com dependências quebradas.

Eu tentei depurar com apt-cache policy , mas isso é ainda mais confuso:

root@test:~# apt-cache policy
Package files:
 100 /var/lib/dpkg/status
     release a=now
 500 http://our-project-repo/ our-project/main amd64 Packages
     origin our-project-repo
 500 http://official-debian-repo/debian-security/ squeeze/updates/non-free amd64 Packages
     release v=6.0,o=Debian,a=oldstable,n=squeeze,l=Debian-Security,c=non-free
     origin official-debian-repo
 500 http://official-debian-repo/debian-security/ squeeze/updates/contrib amd64 Packages
     release v=6.0,o=Debian,a=oldstable,n=squeeze,l=Debian-Security,c=contrib
     origin official-debian-repo
 500 http://official-debian-repo/debian-security/ squeeze/updates/main amd64 Packages
     release v=6.0,o=Debian,a=oldstable,n=squeeze,l=Debian-Security,c=main
     origin official-debian-repo
 500 http://official-debian-repo/debian/ squeeze/non-free amd64 Packages
     release v=6.0.7,o=Debian,a=oldstable,n=squeeze,l=Debian,c=non-free
     origin official-debian-repo
 500 http://official-debian-repo/debian/ squeeze/contrib amd64 Packages
     release v=6.0.7,o=Debian,a=oldstable,n=squeeze,l=Debian,c=contrib
     origin official-debian-repo
 500 http://official-debian-repo/debian/ squeeze/main amd64 Packages
     release v=6.0.7,o=Debian,a=oldstable,n=squeeze,l=Debian,c=main
     origin official-debian-repo
 750 http://our-stable-repo/ our-squeeze-stable/main amd64 Packages
     release o=Ourname,a=our-squeeze-stable,l=Ourname,c=main
     origin our-stable-repo
Pinned packages:
root@test:~# 

Por que nesta saída da política do apt-cache o repositório do projeto ainda tem 500?

Há algo de errado com essa configuração?

    
por Alois Mahdal 29.07.2013 / 15:09

1 resposta

4
 500 http://our-project-repo/ our-project/main amd64 Packages
     origin our-project-repo

Observe a falta de uma linha de lançamento. Isso é importante, porque você está tentando definir um alfinete em um campo de liberação. Muito provavelmente, você não tem um arquivo Release apropriado no seu arquivo (ou, pelo menos, ele não possui os campos definidos).

Não tenho certeza do que você está usando para manter seu arquivo de pacotes, mas (por exemplo,) para mini-dinstall, você precisa definir as opções release_* config. Você pode checar em / var / lib / apt / lists para encontrar o arquivo de lançamento atual que o apt-get tem para o seu arquivo (se houver). Se você observar um apt-get update de perto, poderá ver o download (ou a falha no download) do arquivo de lançamento, bem como o material relacionado (como Release.gpg, a assinatura do arquivo de lançamento).

Se você não conseguir corrigir o arquivo de lançamento, defina um alfinete na origem:

Package: *
Pin: origin "our-project-repo"
Pin-Priority: 900
    
por 29.07.2013 / 16:37