apt-get update solo para un repositorio específico

97

Cuando agrego un PPA y quiero instalar parte de su contenido, es bastante molesto volver a actualizar toda mi lista de apt usando apt-get update .

¿Es posible sincronizar solo el contenido de un repositorio determinado?

    
pregunta Treviño 11.10.2011 - 11:42

4 respuestas

78

sí, apt-get puede hacer eso, y puede hacerlo de una manera agradable.

  1. Añadir siguiente a ~/.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. Añadir siguiente a ~/.bashrc

    if [ -f $HOME/.bash_funcs ]; then
    .  $HOME/.bash_funcs
    fi
    
  3. Añadir siguiente 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. Luego, fuente los archivos

    . ~/.bashrc
    . ~/.bash_completion
    
  5. Hecho y comienza a dispararlo

    update-repo <tab> <tab>
    

Puede actualizar un solo repositorio de ppa sin tener que actualizar todo el código fuente de apt, con la implementación de bash-completion.

    
respondido por el funicorn 07.10.2012 - 22:03
38

Si el repositorio está configurado en un archivo específico en el directorio /etc/apt/sources.list.d/ , digamos myrepo.list , puede actualizar ese único repositorio con el comando:

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

Sin embargo, esto no es muy conveniente.
Esto se puede simplificar definiendo una función 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"
}

para que simplemente pueda ejecutar

update_repo myrepo
    
respondido por el enzotib 11.10.2011 - 12:24
12

Y PPA Manager viene con una herramienta de línea de comando llamada update-ppa que le permite actualizar un solo PPA.

Por ejemplo:

sudo update-ppa ppa:nilarimogard/webupd8

Además, al agregar un PPA a través de Y PPA Manager, la fuente de PPA se actualiza automáticamente (solo para ese PPA). En una versión futura, también habrá una GUI para actualizar manualmente los PPA individuales.

Más información sobre Y PPA Manager, AQUÍ .

    
respondido por el Alin Andrei 05.10.2012 - 13:48
8

Para actualizar un repositorio específico, use -o , por ejemplo:

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

Aquí hay una línea única que actualiza solo el repositorio de apt agregado recientemente

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

Es mucho más rápido que actualizar todos los repositorios, especialmente durante el aprovisionamiento de VM después de agregar nuevo.

    
respondido por el kenorb 14.11.2015 - 21:08

Lea otras preguntas en las etiquetas