apt-get обновление только для определенного репозитория

92

Когда я добавляю PPA, и я хочу установить часть его содержимого, довольно сложно повторно обновить весь мой список apt, используя apt-get update .

Возможно ли только синхронизировать содержимое данного репозитория?

    
задан Treviño 11.10.2011 в 11:42
источник

4 ответа

76

да, apt-get может это сделать и может сделать это красиво.

  1. Добавить в ~/.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. Добавить в ~/.bashrc

    if [ -f $HOME/.bash_funcs ]; then
    .  $HOME/.bash_funcs
    fi
    
  3. Добавить в ~/.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. Затем укажите файлы

    . ~/.bashrc
    . ~/.bash_completion
    
  5. Готово и начать его стрелять

    update-repo <tab> <tab>
    

Вы можете обновить один ppa-репозиторий без необходимости обновлять весь источник apt с помощью реализации bash-завершения.

    
ответ дан funicorn 07.10.2012 в 22:03
источник
38

Если репозиторий настроен в определенном файле в каталоге /etc/apt/sources.list.d/ , скажем, myrepo.list , вы можете обновить этот единственный репозиторий с помощью команды:

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

Тем не менее это не очень удобно.
Это можно упростить, определяя функцию 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"
}

, чтобы вы могли просто запустить

update_repo myrepo
    
ответ дан enzotib 11.10.2011 в 12:24
11

Y PPA Manager поставляется с инструментом командной строки, называемым update-ppa , который позволяет вам обновлять один PPA.

Например:

sudo update-ppa ppa:nilarimogard/webupd8

Кроме того, при добавлении PPA через Y PPA Manager, источник PPA автоматически обновляется (только для этого PPA). В будущей версии появится графический интерфейс для ручного обновления отдельных PPA.

Дополнительная информация о Y PPA Manager, ЗДЕСЬ .     

ответ дан Alin Andrei 05.10.2012 в 13:48
6

Чтобы обновить определенный репозиторий, используйте -o , например:

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

Ниже приведено однострочное обновление только недавно добавленного репозитория apt

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

Это намного быстрее, чем обновление всех репозиториев, особенно во время предоставления VM после добавления новых.

    
ответ дан kenorb 14.11.2015 в 21:08