apt-get aggiornamento solo per un repository specifico

95

Quando aggiungo un PPA e voglio installare parte del suo contenuto, è piuttosto fastidioso aggiornare di nuovo tutto il mio elenco apt usando apt-get update .

È invece possibile sincronizzare solo il contenuto di un determinato repository?

    
posta Treviño 11.10.2011 - 11:42

4 risposte

77

sì, apt-get può farlo e può farlo in un modo carino.

  1. Aggiungi in seguito a ~/.bash_funcs

    update-repo() {
        for source in "[email protected]"; 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. Aggiungi in seguito a ~/.bashrc

    if [ -f $HOME/.bash_funcs ]; then
    .  $HOME/.bash_funcs
    fi
    
  3. Aggiungi in seguito 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. Quindi fonte i file

    . ~/.bashrc
    . ~/.bash_completion
    
  5. Fine e inizia a sparagli

    update-repo <tab> <tab>
    

Puoi aggiornare un singolo repository ppa senza dover aggiornare l'intera sorgente apt, con l'implementazione di bash-completion.

    
risposta data funicorn 07.10.2012 - 22:03
38

Se il repository è configurato in un file specifico nella directory /etc/apt/sources.list.d/ , ad esempio myrepo.list , è possibile aggiornare quel singolo repository con il comando:

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

Tuttavia non è molto conveniente.
Questo può essere semplificato definendo una funzione bash

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

così puoi semplicemente eseguire

update_repo myrepo
    
risposta data enzotib 11.10.2011 - 12:24
12

Y PPA Manager viene fornito con uno strumento da riga di comando chiamato update-ppa che consente di aggiornare un singolo PPA.

Ad esempio:

sudo update-ppa ppa:nilarimogard/webupd8

Inoltre, quando si aggiunge un PPA tramite Y PPA Manager, l'origine PPA viene automaticamente aggiornata (solo per quel PPA). In una versione futura, ci sarà una GUI per aggiornare manualmente singoli PPA.

Ulteriori informazioni su Y PPA Manager, QUI .

    
risposta data Alin Andrei 05.10.2012 - 13:48
8

Per aggiornare un repository specifico, usa -o , ad esempio:

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

Ecco un one-liner che aggiorna solo repository apt aggiunti di recente

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

È molto più rapido dell'aggiornamento di tutti i repository, specialmente durante il provisioning VM dopo l'aggiunta di nuovo.

    
risposta data kenorb 14.11.2015 - 21:08

Leggi altre domande sui tag