apt-get update apenas para um repositório específico

98

Quando eu adiciono um PPA e quero instalar parte de seu conteúdo, é muito irritante atualizar novamente toda a minha lista apt usando apt-get update .

É possível sincronizar apenas o conteúdo de um determinado repositório?

    
por Treviño 11.10.2011 / 11:42

4 respostas

79

sim, o apt-get pode fazer isso e pode fazer isso de uma maneira legal.

  1. Anexar após a ~/.bash_funcs

    update-repo() {
        for source in "$@"; do
            sudo apt-get update -o Dir::Etc::sourcelist="sources.list.d/${source}" \
            -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"    
        done
    }
    
  2. Anexar após a ~/.bashrc

    if [ -f $HOME/.bash_funcs ]; then
    .  $HOME/.bash_funcs
    fi
    
  3. Anexar após a ~/.bash_completion

    # Debian user-defined completion                             -*- shell-script -*-
    
    _ppa_lists(){
        local cur
        _init_completion || return
    
        COMPREPLY=( $( find /etc/apt/sources.list.d/ -name "*$cur*.list" \
    -exec basename {} \; 2> /dev/null ) )
        return 0
    } &&
    complete -F _ppa_lists update-repo
    
  4. Em seguida, digite os arquivos

    . ~/.bashrc
    . ~/.bash_completion
    
  5. Feito e comece a disparar

    update-repo <tab> <tab>
    

Você pode atualizar um único repositório ppa sem precisar atualizar todo o código-fonte do apt, com o implemento de conclusão do bash.

    
por funicorn 07.10.2012 / 22:03
38

Se o repositório estiver configurado em um arquivo específico no diretório /etc/apt/sources.list.d/ , digamos myrepo.list , você poderá atualizar esse único repositório com o comando:

sudo apt-get update -o Dir::Etc::sourcelist="sources.list.d/myrepo.list" \
    -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"

No entanto, isso não é muito conveniente.
Isso pode ser simplificado definindo uma função bash

update_repo() {
    sudo apt-get update -o Dir::Etc::sourcelist="sources.list.d/$1.list" \
        -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
}

para que você possa simplesmente executar

update_repo myrepo
    
por enzotib 11.10.2011 / 12:24
12

O Y PPA Manager vem com uma ferramenta de linha de comando chamada update-ppa que permite atualizar um único PPA.

Por exemplo:

sudo update-ppa ppa:nilarimogard/webupd8

Além disso, ao adicionar um PPA por meio do Y PPA Manager, a origem do PPA é atualizada automaticamente (somente para esse PPA). Em uma versão futura, haverá uma GUI para atualizar manualmente os PPAs individuais.

Mais informações sobre o Y PPA Manager, AQUI .

    
por Alin Andrei 05.10.2012 / 13:48
8

Para atualizar um repositório específico, use -o , por exemplo:

apt-get update -o Dir::Etc::sourcelist=/path/to/repo.list

Aqui está uma atualização de uma linha apenas recentemente adicionada ao repositório

find /etc/apt/sources.list.d -type f -name '*.list' -exec sudo apt-get update -o Dir::Etc::sourcelist="{}" ';'

É muito mais rápido do que atualizar todos os repositórios, especialmente durante o provisionamento de VMs após adicionar novos.

    
por kenorb 14.11.2015 / 21:08