apt-get仅针对特定存储库进行更新

当我添加PPA并且我想安装它的一些内容时,使用apt-get update重新更新我的所有apt列表是非常烦人的。

是否可以仅同步给定存储库的内容?

是的,apt-get可以做到这一点,并且可以很好地完成它。

  1. ~/.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. ~/.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   

您可以更新单个ppa存储库,而无需更新整个apt源,并实现bash-completion。

如果存储库配置在目录/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/$1.list" \ -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" } 

这样你就可以简单地跑了

 update_repo myrepo 

Y PPA Manager附带一个名为update-ppa的命令行工具,可让您更新单个PPA。

例如:

 sudo update-ppa ppa:nilarimogard/webupd8 

此外,通过Y PPA Manager添加PPA时,PPA源会自动更新(仅适用于该PPA)。 在未来的版本中,还将有一个GUI来手动更新单个PPA。

有关Y PPA Manager, HERE的更多信息。

要更新特定存储库,请使用-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配置期间。