![apt-get 仅针对特定存储库进行更新](https://linux22.com/image/825755/apt-get%20%E4%BB%85%E9%92%88%E5%AF%B9%E7%89%B9%E5%AE%9A%E5%AD%98%E5%82%A8%E5%BA%93%E8%BF%9B%E8%A1%8C%E6%9B%B4%E6%96%B0.png)
当我添加一个 PPA 并且想要安装它的一些内容时,使用 重新更新我的所有 apt 列表是相当烦人的apt-get update
。
是否可以仅同步给定存储库的内容?
答案1
是的,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 <tab> <tab>
您可以使用 bash-completion 来更新单个 ppa 存储库,而无需更新整个 apt 源。
答案2
如果存储库配置在目录中的特定文件中/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
答案3
Y PPA Manager 带有一个名为的命令行工具update-ppa
,可让您更新单个 PPA。
例如:
sudo update-ppa ppa:nilarimogard/webupd8
此外,通过 Y PPA 管理器添加 PPA 时,PPA 源会自动更新(仅适用于该 PPA)。在未来版本中,还将有一个 GUI 来手动更新单个 PPA。
有关 Y PPA 经理的更多信息,这里。
答案4
该-u
选项是在 15.10 中添加的。从 15.10 到 17.10,您可以使用-u
仅自动更新您正在添加的特定 repo:
add-apt-repository -u my-ppa
愚蠢的是,直到 18.04 版才添加了此选项man
(但是,它已在 中记录add-apt-repository --help
)。但在 18.04 版中,此功能被删除了!(再次说明,不是在 中man
,但您可以在 中看到add-apt-repository --help
)。
在 18.04 版中,更新功能已改变总是apt-get update
在 之后执行完整的操作。add-apt-repository
该-u
选项实际上已被删除。它保留在那里用于旧语法,但始终设置为options.update = False
。在 18.04 中,您确实可以选择-n, --no-update
,这就像旧行为一样。但要么全部,要么全无,自 18.04 以来您无法更新单个存储库。