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


Lorsque j'ajoute un PPA et que je souhaite installer une partie de son contenu, il est très embêtant de mettre à jour toute ma liste d'apt en utilisant apt-get update.

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


97
2017-10-11 09:42


origine


À partir de sournoisement, vous pouvez simplement utiliser add-apt-repository -u - Treviño
Il n'y a pas -u sur Ubuntu (15.x) Vives aussi loin que je puisse dire. - kenorb
@ Treviño Il n'est pas mentionné dans la page de manuel Wily: manpages.ubuntu.com/manpages/wily/en/man1/… Est-ce documenté ailleurs? - muru
@muru Je pense que cela doit être corrigé, il est seulement mentionné sur add-apt-repository --help. S'il vous plaît ouvrir un bogue demandant de corriger la page de manuel. - Treviño


Réponses:


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 "$@"; 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 tirer

    update-repo <tab> <tab>
    

Vous pouvez mettre à jour un seul référentiel ppa sans avoir à mettre à jour l'intégralité de la source apt, avec un outil de mise à jour bash.


78
2017-10-07 20:03



Vous devriez emballer ceci. - PyRulez
Êtes-vous sûr que le script d'auto-complétion fonctionne? - qed
Quand je frappe Languette ça montre update-repo _init_completion: command not found - kevy
FYI: J'ai utilisé les connaissances acquises dans ce post pour proposer une option pour ajouter-apt-repository pour le faire automatiquement. code.launchpad.net/~evarlast/software-properties/support-update/… - Jay _silly_evarlast_ Wren
@CiprianTomoiaga Il a été fusionné, mais la source est ici: bazaar.launchpad.net/~evarlast/software-properties/…  J'espère que ça va être rusé. - Jay _silly_evarlast_ Wren


Si le référentiel est configuré dans un fichier spécifique du répertoire /etc/apt/sources.list.d/, dire 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/$1.list" \
        -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
}

afin que vous puissiez simplement courir

update_repo myrepo

38
2017-10-11 10:24



Je l'ai vérifié à nouveau, mais cela ne fonctionne pas si vous voulez installer un paquet qui a une dépendance non résolue sur un autre référentiel (également dans l'archive principale) - Treviño


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

En outre, lors de l'ajout d'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.


12
2017-10-05 11:48



sudo add-apt-repository ppa:webupd8team/y-ppa-manager puis sudo apt-get update et enfin sudo apt-get install y-ppa-manager - mchid


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 ajoutée récemment au référentiel apt

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 la mise à jour de tous les référentiels, en particulier lors du provisionnement de VM après l'ajout de nouveaux.


8
2017-11-14 20:08



Je pense que cela met à jour tout ce qui se trouve dans /path/to - John Bachir
@JohnBachir Exactement. - Roman