apt-get仅针对特定存储库进行更新
当我添加PPA并且我想安装它的一些内容时,使用apt-get update
重新更新我的所有apt列表是非常烦人的。
是否可以仅同步给定存储库的内容?
是的,apt-get可以做到这一点,并且可以很好地完成它。
-
在
~/.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 }
-
在
~/.bashrc
后面追加if [ -f $HOME/.bash_funcs ]; then . $HOME/.bash_funcs fi
-
追加
~/.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
-
然后获取文件
. ~/.bashrc . ~/.bash_completion
-
完成并开始解雇它
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配置期间。