apt-get update uniquement pour un référentiel spécifique

95

Lorsque j'ajoute un PPA et que je veux installer une partie de son contenu, il est très embêtant de mettre à jour toutes mes listes d'apt via apt-get update .

Est-il possible de synchroniser uniquement le contenu d'un référentiel donné?

    
posée Treviño 11.10.2011 - 11:42
la source

4 réponses

77

Oui, apt-get peut le faire et peut le faire d'une manière agréable.

  1. Ajoutez les éléments suivants à ~/.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. Ajoutez les éléments suivants à ~/.bashrc

    if [ -f $HOME/.bash_funcs ]; then
    .  $HOME/.bash_funcs
    fi
    
  3. Ajoutez les éléments suivants à ~/.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. Puis source les fichiers

    . ~/.bashrc
    . ~/.bash_completion
    
  5. Fait et commence à le lancer

    update-repo <tab> <tab>
    

Vous pouvez mettre à jour un seul référentiel ppa sans avoir à mettre à jour l’ensemble de la source apt, avec un outil de bash-completion.

    
réponse donnée funicorn 07.10.2012 - 22:03
la source
38

Si le référentiel est configuré dans un fichier spécifique du répertoire /etc/apt/sources.list.d/ , dites myrepo.list , vous pouvez mettre à jour ce référentiel unique avec la commande:

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

Néanmoins, ce n'est pas très pratique.
Cela peut être simplifié en définissant une fonction 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"
}

pour que vous puissiez simplement lancer

update_repo myrepo
    
réponse donnée enzotib 11.10.2011 - 12:24
la source
12

Y PPA Manager est fourni avec un outil de ligne de commande appelé update-ppa qui vous permet de mettre à jour un seul PPA.

Par exemple:

sudo update-ppa ppa:nilarimogard/webupd8

De plus, lorsque vous ajoutez un PPA via Y PPA Manager, la source PPA est automatiquement mise à jour (uniquement pour ce PPA). Dans une prochaine version, il y aura une interface graphique pour mettre à jour manuellement des PPA individuels.

Plus d’informations sur Y PPA Manager, ICI .

    
réponse donnée Alin Andrei 05.10.2012 - 13:48
la source
8

Pour mettre à jour un référentiel spécifique, utilisez -o , par exemple:

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

Voici une mise à jour à une seule ligne qui vient d’ajouter le référentiel apt

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

Il est beaucoup plus rapide que de mettre à jour tous les référentiels, en particulier lors du provisionnement de VM après l'ajout de nouveaux fichiers.

    
réponse donnée kenorb 14.11.2015 - 21:08
la source

Lire d'autres questions sur les étiquettes