Vraag apt-get update alleen voor een specifieke repository


Wanneer ik een PPA toevoeg en ik een deel van de inhoud wil installeren, is het behoorlijk vervelend om al mijn apt-lijst opnieuw te gebruiken met behulp van apt-get update.

Is het in plaats daarvan mogelijk om alleen de inhoud van een gegeven repository te synchroniseren?


97
2017-10-11 09:42


oorsprong


Beginnend van sluwheid, zou je het gewoon kunnen gebruiken add-apt-repository -u - Treviño
Er is geen -u op Ubuntu (15.x) Levendig voor zover ik kan vertellen. - kenorb
@ Treviño Het staat niet op de Wily manpage: manpages.ubuntu.com/manpages/wily/en/man1/... Is het ergens anders gedocumenteerd? - muru
@muru Ik denk dat dat moet worden opgelost, het wordt alleen vermeld op add-apt-repository --help. Open een bug die vraagt ​​om de manpage te herstellen. - Treviño


antwoorden:


ja, apt-get kan dat doen en kan het op een leuke manier doen.

  1. Voeg volgende toe aan ~/.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. Voeg volgende toe aan ~/.bashrc

    if [ -f $HOME/.bash_funcs ]; then
    .  $HOME/.bash_funcs
    fi
    
  3. Voeg volgende toe aan ~/.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. Bron vervolgens de bestanden

    . ~/.bashrc
    . ~/.bash_completion
    
  5. Klaar en begin met schieten

    update-repo <tab> <tab>
    

Je kunt een enkele ppa-repository bijwerken zonder de hele apt-bron te updaten, met een bash-aanvulimplement.


78
2017-10-07 20:03



Dit moet je verpakken. - PyRulez
Weet je zeker dat het autocompletion-script werkt? - qed
Toen ik sloeg tab het laat zien update-repo _init_completion: command not found - kevy
Ter info: ik heb de kennis die ik heb opgedaan met dit bericht gebruikt om een ​​optie voor het toevoegen van apt-repository aan te bieden om dit automatisch te doen. code.launchpad.net/~evarlast/software-properties/support-update/... - Jay _silly_evarlast_ Wren
@CiprianTomoiaga Het is samengevoegd, maar de bron is hier: bazaar.launchpad.net/~evarlast/software-properties/...  Ik hoop dat het in sluwheid zal zijn. - Jay _silly_evarlast_ Wren


Als de repository is geconfigureerd in een specifiek bestand in de directory /etc/apt/sources.list.d/, zeggen myrepo.list, je kunt die ene repository bijwerken met de opdracht:

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

Toch is dit niet erg handig.
Dit kan vereenvoudigd worden door een bash-functie te definiëren

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"
}

zodat je gewoon kunt rennen

update_repo myrepo

38
2017-10-11 10:24



Ik heb dit opnieuw gecontroleerd, maar het werkt niet als je dan een pakket wilt installeren met een niet-geresolveerde afhankelijkheid van een andere repository (ook in het hoofdarchief) - Treviño


Y PPA Manager wordt geleverd met een opdrachtregelhulpprogramma update-ppa waarmee u een enkele PPA kunt bijwerken.

Bijvoorbeeld:

sudo update-ppa ppa:nilarimogard/webupd8

Bij het toevoegen van een PPA via Y PPA Manager wordt de PPA-bron ook automatisch bijgewerkt (alleen voor die PPA). In een toekomstige versie zal er een grafische gebruikersinterface zijn om ook afzonderlijke PPA's handmatig bij te werken.

Meer informatie over Y PPA Manager, HIER.


12
2017-10-05 11:48



sudo add-apt-repository ppa:webupd8team/y-ppa-manager dan sudo apt-get update en tenslotte sudo apt-get install y-ppa-manager - mchid


Om een ​​specifieke repository bij te werken, gebruikt u -o, bijv .:

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

Hier is een one-liner-update van pas onlangs toegevoegde apt-repository

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

Het is veel sneller dan het bijwerken van alle opslagplaatsen, vooral tijdens VM-provisioning na het toevoegen van nieuw.


8
2017-11-14 20:08



Ik denk dat dit alles dat is gevonden bijwerkt /path/to - John Bachir
@JohnBachir Precies. - Roman