apt-get yalnızca belirli bir havuz için güncellenir

97

Bir PPA eklediğimde ve içeriğinin bir kısmını yüklemek istediğimde, apt-get update kullanarak tüm apt listemizi yeniden güncellemek oldukça can sıkıcı bir durumdur.

Bunun yerine, yalnızca belirli bir havuzun içeriğini senkronize etmek mümkün mü?

    
sordu Treviño 11.10.2011 11:42

4 cevap

78

Evet, apt-get bunu yapabilir ve güzel bir şekilde yapabilir.

  1. Aşağıdakileri ~/.bash_funcs

    öğesine ekleyin
    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. Aşağıdakileri ~/.bashrc

    öğesine ekleyin
    if [ -f $HOME/.bash_funcs ]; then
    .  $HOME/.bash_funcs
    fi
    
  3. Aşağıdakileri ~/.bash_completion

    öğesine ekleyin
    # 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. Ardından dosyaları kaydedin

    . ~/.bashrc
    . ~/.bash_completion
    
  5. Bitti ve ateş etmeye başla

    update-repo <tab> <tab>
    

Tüm apt kaynağını güncellemeye gerek kalmadan, tek bir ppa deposunu, bash-completion uygulamasıyla güncelleyebilirsiniz.

    
verilen cevap funicorn 07.10.2012 22:03
38

Depo, /etc/apt/sources.list.d/ dizinindeki belirli bir dosyada yapılandırılırsa, myrepo.list diyelim, tek depoyu şu komutla güncelleyebilirsiniz:

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

Yine de bu pek uygun değil.
Bu bir bash fonksiyonunu tanımlamakta basitleştirilebilir

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

böylece kolayca çalıştırabilirsiniz

update_repo myrepo
    
verilen cevap enzotib 11.10.2011 12:24
12

Y PPA Yöneticisi, tek bir PPA'yı güncellemenizi sağlayan update-ppa adlı bir komut satırı aracıyla gelir.

Örneğin:

sudo update-ppa ppa:nilarimogard/webupd8

Ayrıca, Y PPA Yöneticisi aracılığıyla bir PPA eklerken, PPA kaynağı otomatik olarak güncellenir (yalnızca bu PPA için). Gelecekteki bir sürümde, tek PPA'ları da manuel olarak güncellemek için bir GUI olacak.

Y PPA Yöneticisi hakkında daha fazla bilgi, BURADA .

    
verilen cevap Alin Andrei 05.10.2012 13:48
8

Belirli bir depoyu güncellemek için -o kullanın, ör.:

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

İşte, yalnızca son eklenen apt deposu olan bir tek liner güncellemesi var

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

Tüm depoları güncellemekten, özellikle yeni ekledikten sonra sanal makine sağlama sırasında çok daha hızlı.

    
verilen cevap kenorb 14.11.2015 21:08

Etiketlerdeki diğer soruları oku