Deseja especificar um repo durante o tempo de execução ou deve ser mais uma coisa estática? As duas respostas abaixo assumem a última opção.
tshepang
Idealmente, seria durante o tempo de execução. A opção estática é suficiente.
Ton van den Heuvel
2
Seu título e a ajuda real que você está solicitando são diferentes.
sundar
Respostas:
29
Usar Fixação
Fixar é um processo que permite que você permaneça em uma versão estável do Ubuntu (ou qualquer outro sistema debian) enquanto obtém pacotes de uma versão mais recente. - help.ubuntu.com
Você pode desativar as atualizações automáticas de determinados repositórios sem removê-las completamente por meio de aptpolíticas:
Para desativar as atualizações automáticas do repositório repo, adicione um arquivo /etc/apt/preferences.d/repocom o seguinte conteúdo:
Package: *
Pin: release n=repo
Pin-Priority: 50
O que dará a todos os pacotes deste repositório uma prioridade mais baixa do que os pacotes já instalados (que possuem 100).
É uma pena que a única apt_preferences resposta é a última ...
Robert Siemer
como descobrir qual versão é de qual repositório?
Max N
2
@MaxN você costuma encontrar essa informação, executandoapt-cache policy package-name
Anwar
Isso não forçará um repositório a não ser considerado durante a atualização. porque release n=repovontade não cache de ninguém
Anwar
35
Você pode especificar uma liberação com a -topção Como exemplo, eu adicionei o seguinte repositório /etc/apt/sources.listpara instalar o Iceweasel versão mais recente:
deb http://mozilla.debian.net/ squeeze-backports iceweasel-release
Como você sabe, existe um mesmo pacote iceweaselno repositório oficial da Debian. Se eu quiser instalar o Iceweasel a partir desta versão específica, eu corro:
apt-get install -t squeeze-backports iceweasel
da página de manual do 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.
Eu acho que essa é uma solução melhor.
ATUALIZAÇÃO : Como o @SuB mencionado no comentário, " -tespecifica o nome do repositório, não o repositório. Não há nome no repositório no Ubuntu (diferente do Linux baseado no RedHat, como RHEL, Fedora, CentOS, ...)".
Como você vê no apt-getmanual, -tespecifique release, não nome do repositório. Não existe um nome de repositório no Ubuntu (ao contrário do Linux baseado em RedHat, como RHEL, Fedora, CentOS, ...)
SuB
11
@SuB Sim, você está certo! Confundi o nome do repositório com o release!
cartunista
-t xenialtrabalha para um único pacote. mas tudo o que é dependências ainda será buscada a partir pacotes mais elevados
Anwar
11
Resposta curta
Você precisa fixar os repositórios dos quais não deseja instalar com uma prioridade menor que 100. O que significa (na apt_preferencepágina de manual)
100 <= P <500
faz com que uma versão seja instalada, a menos que exista uma versão disponível pertencente a alguma outra distribuição ou a versão instalada seja mais recente
E para selecionar um repositório para fixação, você usaria campos do Releasearquivo dos repositórios . Tais como archive, label, release, versionetc. Ao especificar os valores desses campos, você pode precisamente selecionar um repositório e atribuir a sua prioridade preferido a ele. Verifique a página apt_preference para mais detalhes.
Resposta longa
Antes de prosseguir, precisamos saber algo importante sobre a fixação. Isso inclui
Campos de Releasearquivos e mapeamento para apt-cache policysaída
Formato dos arquivos de preferência do apt
Usando Releasecampos de arquivos para definir a prioridade
1. Campos de Releasearquivo e apt-cache policysaída
Os valores nessas linhas são provenientes de Releasearquivos.
Descrição define a descrição para um repositório. Isso não é mostrado na apt-cache policysaída
Label é o rótulo do repositório. Muitos repositórios têm rótulos vazios. É mostrado na l=<label>saída.
Origem: informa sobre a origem do repositório. Repositório oficial do Ubuntu tem Ubuntucomo valor. Mostrado como o=na saída
Version é a versão de uma distribuição. É 16.04 para o Xenial. Mostrado como v=na saída
O conjunto é o mesmo que o arquivo morto . No wiki do debian é is O nome da distribuição do Debian aos quais os pacotes deste diretório pertencem (ou foram projetados), ou seja, estável, testando ou instável. . Para o Ubuntu, estes são release-updates, release-securityetc. Por exemplo, xenial-updates, xenial-security. É mostrado na saída como a=xenial, a=xenial-security. Os PPAs usam apenas o nome do release para isso, é por isso que não ajuda muito em Pinning.
O componente fala sobre o licenciamento. É main, multiverse, restricted, universeno Ubuntu. Na saída, é mostrado como c=mainou c=restrictedetc. A maioria dos PPAs usa mainpara esse campo, portanto, também não ajuda a fixar muito.
Arquitetura é sobre a arquitetura do SO. Mostrado como b=i386ou b=amd64na saída
Codename é o nome do release da distribuição. Para 16.04 é xenial. Para 14.04 é trusty. Mostrado na apt-cache policysaída como n=xenialou n=trusty. É o mesmo para todos os repositórios para uma única distribuição normalmente. É por isso que não ajuda em fixar muito.
A outra linha na apt-cache policysaída iniciada por origininforma a origem da Internet do repositório. Também pode ser usado na fixação. Mas não deve ser misturado com o campo Releasearquivos Origin. Aqueles são diferentes.
Usaremos esses valores para fixar um repositório.
Então, como usamos a fixação de 1 para restringir o repositório?
Existem várias maneiras de controlar a fixação e apenas um pequeno subconjunto é eficaz para o Ubuntu. Uma explicação detalhada está além do escopo da resposta. Por favor, consulte a apt_preferencepágina de manual para isso.
2. Formato do arquivo PIN
Os arquivos de preferência para fixar ou apt residem na /etc/apt/preferences.dpasta. Cada fixação contém três linhas.
A primeira linha começa com Package:e os nomes de pacotes separados por vírgula. Expressões regulares e globs são permitidos
A segunda linha começa com Pin:e é usada para direcionar um conjunto de pacotes.
Se quisermos fixar pacotes com valores xenialsuperiores a xenial-updates, usaremos release a=xenial.
Se quisermos fixar a versão 5.0, usaremos version 5.0aqui. Pattens Glob são permitidos.
Ou, se quisermos fixar pacotes da origem http://archive.ubuntu.com, usaremos origin "archive.ubuntu.com". Note, não escrevemos http://protocolo lá.
A terceira linha começa com Pin-Priority:e seu valor é um número. O que significa a prioridade dos itens segmentados acima.
3. Usando Releasecampos de arquivos para definir a prioridade
Neste exemplo, os pacotes dos xenialarquivos têm prioridade mais alta que xenial-updatese xenial-security.
Após a fixação, a execução de um apt-cache policy nautilusmostra que ele realmente deu uma prioridade mais alta a uma versão inferior do xenialarquivo morto do que a uma versão superior do xenial-updatesarquivo morto . Observe a Candidate:linha.
Mas, se também queremos dar prioridade aos pacotes fornecidos pelo PPA, isso não funcionará. Porque PPAs usam o mesmo nome do arquivo xenialpor padrão. Portanto, atribuir uma prioridade a a=xenialtambém se aplicará a esses pacotes. Por exemplo (após o PPA ativado),
Agora a versão candidata é de um PPA. Ambos os pacotes do xenialarquivo de repositório oficial do Ubuntu e o PPA têm a mesma prioridade 1001, porque usam o mesmo valor Archiveno arquivo Release. Para fixar com sucesso, precisamos combinar mais campos no arquivo Fixar.
Alguns exemplos
Fixar um repositório PPA
Para fixar pacotes de um repositório, precisamos direcioná-lo usando as informações encontradas no apt-cache policycomando Acabamos de ver que a=xenialisso não ajudará a apontar um repositório. Precisamos usar vários campos juntos usando vírgula em um arquivo de preferência para direcionar com precisão um repositório.
Por exemplo, para impedir todos os pacotes do http://ppa.launchpad.net/oibaf/graphics-drivers/ppa, podemos usar
Aqui estamos usando o valor do codinome e o Originvalor do PPA. (Embora o valor do codinome não seja necessário aqui, na verdade). Às vezes, o repositório pode perder esses valores. Nesses casos, algumas outras técnicas devem ser usadas. A saída de apt-cache policy libgl1-mesa-glxdiz que funciona. Reduziu a prioridade de todos os pacotes deste PPA.
Ignore o fato de que é candidato. Isso aconteceu porque já está instalado no meu sistema . Verifique a prioridade à direita
Fixar um repositório quando faltam informações da versão
Se queremos fixar um repositório cujas informações de liberação estão ausentes, como este http://download.opensuse.org/repositories/home:/sarimkhan/xUbuntu_14.04, devemos usar outro método. Como nenhum outro repositório está usando essa origem, podemos usar origincom segurança para fixar esse repositório.
E, em seguida, remova os comentários de sources.list. Talvez não seja a melhor maneira, mas pelo menos as apt-getpáginas de manual não especificam nenhuma maneira de fazer isso.
Em nota relacionada, por exemplo, o processo de atualização da distribuição Ubuntu desativa todos os repositórios de terceiros durante a atualização (e não basta executar alguma opção para excluí-los temporariamente).
Respostas:
Usar Fixação
Você pode desativar as atualizações automáticas de determinados repositórios sem removê-las completamente por meio de
apt
políticas:Para desativar as atualizações automáticas do repositório
repo
, adicione um arquivo/etc/apt/preferences.d/repo
com o seguinte conteúdo:O que dará a todos os pacotes deste repositório uma prioridade mais baixa do que os pacotes já instalados (que possuem 100).
Para mais informações
man apt_preferences
ou consulte o Wiki da Comunidade Ubuntu .fonte
apt-cache policy package-name
release n=repo
vontade não cache de ninguémVocê pode especificar uma liberação com a
-t
opção Como exemplo, eu adicionei o seguinte repositório/etc/apt/sources.list
para instalar o Iceweasel versão mais recente:Como você sabe, existe um mesmo pacote
iceweasel
no repositório oficial da Debian. Se eu quiser instalar o Iceweasel a partir desta versão específica, eu corro:da página de manual do apt-get:
Eu acho que essa é uma solução melhor.
ATUALIZAÇÃO : Como o @SuB mencionado no comentário, "
-t
especifica o nome do repositório, não o repositório. Não há nome no repositório no Ubuntu (diferente do Linux baseado no RedHat, como RHEL, Fedora, CentOS, ...)".fonte
apt-get
manual,-t
especifique release, não nome do repositório. Não existe um nome de repositório no Ubuntu (ao contrário do Linux baseado em RedHat, como RHEL, Fedora, CentOS, ...)-t xenial
trabalha para um único pacote. mas tudo o que é dependências ainda será buscada a partir pacotes mais elevadosResposta curta
Você precisa fixar os repositórios dos quais não deseja instalar com uma prioridade menor que 100. O que significa (na
apt_preference
página de manual)E para selecionar um repositório para fixação, você usaria campos do
Release
arquivo dos repositórios . Tais comoarchive
,label
,release
,version
etc. Ao especificar os valores desses campos, você pode precisamente selecionar um repositório e atribuir a sua prioridade preferido a ele. Verifique a página apt_preference para mais detalhes.Resposta longa
Antes de prosseguir, precisamos saber algo importante sobre a fixação. Isso inclui
Campos de
Release
arquivos e mapeamento paraapt-cache policy
saídaFormato dos arquivos de preferência do apt
Usando
Release
campos de arquivos para definir a prioridade1. Campos de
Release
arquivo eapt-cache policy
saídaDo artigo da Debian Wiki
Você veria resultados
apt-cache policy
como essesOs valores nessas linhas são provenientes de
Release
arquivos.Descrição define a descrição para um repositório. Isso não é mostrado na
apt-cache policy
saídaLabel é o rótulo do repositório. Muitos repositórios têm rótulos vazios. É mostrado na
l=<label>
saída.Origem: informa sobre a origem do repositório. Repositório oficial do Ubuntu tem
Ubuntu
como valor. Mostrado comoo=
na saídaVersion é a versão de uma distribuição. É 16.04 para o Xenial. Mostrado como
v=
na saídaO conjunto é o mesmo que o arquivo morto . No wiki do debian é is O nome da distribuição do Debian aos quais os pacotes deste diretório pertencem (ou foram projetados), ou seja, estável, testando ou instável. . Para o Ubuntu, estes são
release-updates
,release-security
etc. Por exemplo,xenial-updates
,xenial-security
. É mostrado na saída comoa=xenial
,a=xenial-security
. Os PPAs usam apenas o nome do release para isso, é por isso que não ajuda muito em Pinning.O componente fala sobre o licenciamento. É
main
,multiverse
,restricted
,universe
no Ubuntu. Na saída, é mostrado comoc=main
ouc=restricted
etc. A maioria dos PPAs usamain
para esse campo, portanto, também não ajuda a fixar muito.Arquitetura é sobre a arquitetura do SO. Mostrado como
b=i386
oub=amd64
na saídaCodename é o nome do release da distribuição. Para 16.04 é
xenial
. Para 14.04 étrusty
. Mostrado naapt-cache policy
saída comon=xenial
oun=trusty
. É o mesmo para todos os repositórios para uma única distribuição normalmente. É por isso que não ajuda em fixar muito.A outra linha na
apt-cache policy
saída iniciada pororigin
informa a origem da Internet do repositório. Também pode ser usado na fixação. Mas não deve ser misturado com o campoRelease
arquivosOrigin
. Aqueles são diferentes.Usaremos esses valores para fixar um repositório.
Então, como usamos a fixação de 1 para restringir o repositório?
Existem várias maneiras de controlar a fixação e apenas um pequeno subconjunto é eficaz para o Ubuntu. Uma explicação detalhada está além do escopo da resposta. Por favor, consulte a
apt_preference
página de manual para isso.2. Formato do arquivo PIN
Os arquivos de preferência para fixar ou apt residem na
/etc/apt/preferences.d
pasta. Cada fixação contém três linhas.A primeira linha começa com
Package:
e os nomes de pacotes separados por vírgula. Expressões regulares e globs são permitidosA segunda linha começa com
Pin:
e é usada para direcionar um conjunto de pacotes.Se quisermos fixar pacotes com valores
xenial
superiores axenial-updates
, usaremosrelease a=xenial
.Se quisermos fixar a versão 5.0, usaremos
version 5.0
aqui. Pattens Glob são permitidos.Ou, se quisermos fixar pacotes da origem
http://archive.ubuntu.com
, usaremosorigin "archive.ubuntu.com"
. Note, não escrevemoshttp://
protocolo lá.A terceira linha começa com
Pin-Priority:
e seu valor é um número. O que significa a prioridade dos itens segmentados acima.3. Usando
Release
campos de arquivos para definir a prioridadeAqui está um exemplo
Neste exemplo, os pacotes dos
xenial
arquivos têm prioridade mais alta quexenial-updates
exenial-security
.Após a fixação, a execução de um
apt-cache policy nautilus
mostra que ele realmente deu uma prioridade mais alta a uma versão inferior doxenial
arquivo morto do que a uma versão superior doxenial-updates
arquivo morto . Observe aCandidate:
linha.Mas, se também queremos dar prioridade aos pacotes fornecidos pelo PPA, isso não funcionará. Porque PPAs usam o mesmo nome do arquivo
xenial
por padrão. Portanto, atribuir uma prioridade aa=xenial
também se aplicará a esses pacotes. Por exemplo (após o PPA ativado),Agora a versão candidata é de um PPA. Ambos os pacotes do
xenial
arquivo de repositório oficial do Ubuntu e o PPA têm a mesma prioridade1001
, porque usam o mesmo valorArchive
no arquivo Release. Para fixar com sucesso, precisamos combinar mais campos no arquivo Fixar.Alguns exemplos
Fixar um repositório PPA
Para fixar pacotes de um repositório, precisamos direcioná-lo usando as informações encontradas no
apt-cache policy
comando Acabamos de ver quea=xenial
isso não ajudará a apontar um repositório. Precisamos usar vários campos juntos usando vírgula em um arquivo de preferência para direcionar com precisão um repositório.Por exemplo, para impedir todos os pacotes do
http://ppa.launchpad.net/oibaf/graphics-drivers/
ppa, podemos usarAqui estamos usando o valor do codinome e o
Origin
valor do PPA. (Embora o valor do codinome não seja necessário aqui, na verdade). Às vezes, o repositório pode perder esses valores. Nesses casos, algumas outras técnicas devem ser usadas. A saída deapt-cache policy libgl1-mesa-glx
diz que funciona. Reduziu a prioridade de todos os pacotes deste PPA.Ignore o fato de que é candidato. Isso aconteceu porque já está instalado no meu sistema . Verifique a prioridade à direita
Fixar um repositório quando faltam informações da versão
Se queremos fixar um repositório cujas informações de liberação estão ausentes, como este
http://download.opensuse.org/repositories/home:/sarimkhan/xUbuntu_14.04
, devemos usar outro método. Como nenhum outro repositório está usando essa origem, podemos usarorigin
com segurança para fixar esse repositório.Nota 1: Esta origem é a origem da Internet, não a que especifica o Fornecedor no arquivo de Liberação.
Nota 2:
Pin-Priority
número tem um significado especial. Consulteapt_preference
a página do manual para obter detalhes.fonte
Uma alternativa baseada em GUI seria abrir o centro de software e selecionar editar> fontes de software ...
tudo o que você precisa fazer é desmarcar os repositórios dos quais você não deseja atualizações.
Espero que isto ajude
fonte
A escolha óbvia é modificar
/etc/apt/sources.list
e comentar todos os outros repositórios e, em seguida, executarE, em seguida, remova os comentários de
sources.list
. Talvez não seja a melhor maneira, mas pelo menos asapt-get
páginas de manual não especificam nenhuma maneira de fazer isso.Em nota relacionada, por exemplo, o processo de atualização da distribuição Ubuntu desativa todos os repositórios de terceiros durante a atualização (e não basta executar alguma opção para excluí-los temporariamente).
fonte
Uma outra opção da GUI é escolher apenas a origem no gerenciador de pacotes Synaptic.
fonte