Sadece belirli bir havuz için apt-get update


108

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

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


1
Kurtuluştan başlayarak, sadece kullanabilirsinizadd-apt-repository -u
Treviño

Hiçbir yoktur -ubildiğim kadarıyla söyleyebilirim Ubuntu Canlı (15.x) üzerine.
kenorb

@ Treviño Wily man sayfasında bahsedilmedi: manpages.ubuntu.com/manpages/wily/tr/man1/… Başka bir yerde belgeleniyor mu?
muru

@muru Bunun düzeltilmesi gerektiğini düşünüyorum, sadece üzerinde bahsedilir add-apt-repository --help. Lütfen manpage'i düzeltmek isteyen bir hata açın.
Treviño

@ Treviño @muru FYI, -uişlevselliği 18.04 tarihinden beri kaldırıldı. Bkz askubuntu.com/questions/65245/...
wisbucky

Yanıtlar:


82

evet, apt-get bunu yapabilir ve hoş bir şekilde yapabilir.

  1. Şuna ekle: ~/.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. Şuna ekle: ~/.bashrc

    if [ -f $HOME/.bash_funcs ]; then
    .  $HOME/.bash_funcs
    fi
    
  3. Şuna ekle: ~/.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. Sonra dosyaları kaynak

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

    update-repo <tab> <tab>

Tek bir ppa deposunu, bütün apt kaynağını güncellemek zorunda kalmadan, bash tamamlama işlemi uygulayarak güncelleyebilirsiniz.


14
Bunu paketlemelisin.
PyRulez

3
Otomatik tamamlama komut dosyasının çalıştığından emin misiniz?
qed

1
Ben vurduğunda Tab gösterirupdate-repo _init_completion: command not found
kevy

2
Bilginize: Bu yazıdan edindiğim bilgileri, bunu otomatik olarak yapmak için apt-apt-repository seçeneği önermek için kullandım. code.launchpad.net/~evarlast/software-properties/support-update/…
Jay _silly_evarlast_ Wren

2
@CiprianTomoiaga Birleştirildi, ancak kaynak burada: bazaar.launchpad.net/~evarlast/software-properties/… Bence vahşice olacağını umuyorum.
Jay _silly_evarlast_ Wren

41

Depo, dizindeki belirli bir dosyada yapılandırılmışsa /etc/apt/sources.list.d/, söz myrepo.listkonusu 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"

Bununla birlikte, bu çok uygun değildir.
Bu bir bash işlevi tanımlayarak basitleştirilebilir

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

Böylece sadece koşabilirsin

update_repo myrepo

Yine bu kontrol ettik, ama (aynı zamanda ana arşivde) Başka bir depo bazı çözülmemiş bağımlılığı var bir paket yüklemek istediğiniz ardından eğer çalışmıyor
Treviño

1
sourceparts config'de '-' ne anlama geldiğini açıklayabilir misiniz?
Sajuuk

Bence '-' sadece sahte bir yöntem sourcepartskullanılmamalı. Bakınız github.com/Debian/apt/blob/master/apt-pkg/sourcelist.cc#L313 . Yine de yanlış olabilirdim, '-' ifadesini izah eden uygun bir doktor bulamadım.
rastgelelık

12

Y PPA Manager, update-ppatek bir PPA'yı güncellemenizi sağlayan bir komut satırı aracıyla birlikte 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ı elle de güncellemek için bir GUI olacak.

Y PPA Manager, HERE hakkında daha fazla bilgi edinin .


5
sudo add-apt-repository ppa:webupd8team/y-ppa-managero zaman sudo apt-get updateve sonundasudo apt-get install y-ppa-manager
mchid

8

Belirli bir havuzu güncellemek için -o, örneğin:

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

İşte son zamanlarda eklenen apt deposunu güncelleyen tek linerli güncelleme

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

Tüm depoları güncellemekten çok daha hızlı, özellikle de yeni ekledikten sonra VM hazırlama sırasında.


3
Sanırım bu, her şeyi buldu/path/to
John Bachir,

@JohnBachir Kesinlikle.
Roman

1

-uOpsiyon 15.10 de eklendi . 15.10 ile 17.10 arasında, -uyalnızca eklediğiniz belirli depoyu otomatik olarak güncellemek için kullanabilirsiniz :

add-apt-repository -u my-ppa

Aptalca şey, bu seçeneğin man18.04'e kadar eklenmemesidir ( add-apt-repository --helpancak belgelenmiştir ). Ancak 18.04'te bu işlev kaldırıldı! (Yine, içeride değil manama içeride görebilirsiniz add-apt-repository --help).

18.04 yılında güncelleme işlevselliği değiştirildi her zaman tam yapmak apt-get updateSONRA add-apt-repository. -uSeçeneği etkin bir şekilde çıkarıldı. Eski sözdizimi için orada kalır, ancak her zaman ayarlanır options.update = False. 18.04'te -n, --no-updateeski davranışa benzer bir seçeneğiniz var . Ama hepsi ya da hiçbiri, 18.04'ten beri tek bir depoyu güncelleyemezsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.