119 votes

apt-get update seulement pour un dépôt spécifique

Lorsque j'ajoute un PPA et que je veux installer une partie de son contenu, il est assez ennuyeux de mettre à jour toute ma liste d'apt à l'aide de la fonction apt-get update .

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

92voto

funicorn Points 3186

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

  1. Ajouter ce qui suit à ~/.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. Ajouter ce qui suit à ~/.bashrc

    if [ -f $HOME/.bash_funcs ]; then
    .  $HOME/.bash_funcs
    fi
  3. Ajouter ce qui suit à ~/.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 créez les fichiers

    . ~/.bashrc
    . ~/.bash_completion
  5. C'est fait et je commence à l'allumer

    update-repo <tab> <tab>

Vous pouvez mettre à jour un seul dépôt ppa sans avoir à mettre à jour toute la source apt, avec l'implémentation de bash-completion.

49voto

enzotib Points 86709

Si le référentiel est configuré dans un fichier spécifique du répertoire /etc/apt/sources.list.d/ disons que 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.
Ceci peut être simplifié en définissant une fonction 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"
}

afin que vous puissiez simplement exécuter

update_repo myrepo

12voto

Alin Andrei Points 7268

Y PPA Manager est livré 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 même, lorsque l'on ajoute un PPA via le gestionnaire de PPA de Y, la source du PPA est automatiquement mise à jour (uniquement pour ce PPA). Dans une future version, il y aura une interface graphique pour mettre à jour manuellement les PPAs individuels.

Plus d'informations sur Y PPA Manager, ICI .

9voto

kenorb Points 8840

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 un exemple de mise à jour d'un dépôt apt récemment ajouté.

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

C'est beaucoup plus rapide que de mettre à jour tous les référentiels, notamment lors du provisionnement des VM après l'ajout de nouvelles.

2voto

wisbucky Points 2233

Le site -u a été ajoutée dans la version 15.10 . Du 15.10 au 17.10, vous pouviez utiliser -u pour mettre automatiquement à jour uniquement le repo spécifique que vous ajoutez :

add-apt-repository -u my-ppa

Ce qui est stupide, c'est que cette option n'a pas été ajoutée à man jusqu'à la version 18.04 (elle était documentée dans le document add-apt-repository --help Cependant, il n'y a pas de raison de ne pas le faire.) Mais dans la 18.04, cette fonctionnalité a été supprimée ! (Encore une fois, pas dans man mais vous pouvez voir dans add-apt-repository --help ).

Dans la version 18.04, le la fonctionnalité de mise à jour a été modifiée de toujours faire une apt-get update après add-apt-repository . Le site -u a été effectivement supprimée. Elle reste présente pour les anciennes syntaxes, mais elle est toujours définie comme suit options.update = False . Dans la version 18.04, vous avez la possibilité de -n, --no-update ce qui est comme l'ancien comportement. Mais c'est tout ou rien, vous ne pouvez pas mettre à jour un seul repo depuis 18.04.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X