当我添加PPA并想要安装其一些内容时,使用来重新更新我的所有apt列表是很烦人的apt-get update
。
而是只能同步给定存储库的内容吗?
-u
据我所知,在Ubuntu(15.x)Vivid上没有。
add-apt-repository --help
。请打开一个错误,要求修复手册页。
-u
功能自18.04起已删除。见askubuntu.com/questions/65245/...
当我添加PPA并想要安装其一些内容时,使用来重新更新我的所有apt列表是很烦人的apt-get update
。
而是只能同步给定存储库的内容吗?
-u
据我所知,在Ubuntu(15.x)Vivid上没有。
add-apt-repository --help
。请打开一个错误,要求修复手册页。
-u
功能自18.04起已删除。见askubuntu.com/questions/65245/...
Answers:
是的,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源。
update-repo _init_completion: command not found
如果存储库是在目录的特定文件中配置的/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
sourceparts
不应使用“-”只是一种虚假的方式来告诉。参见github.com/Debian/apt/blob/master/apt-pkg/sourcelist.cc#L313。我可能是错的,找不到合适的文档来解释'-'。
Y PPA Manager带有一个称为的命令行工具update-ppa
,可让您更新单个PPA。
例如:
sudo update-ppa ppa:nilarimogard/webupd8
另外,通过Y PPA Manager添加PPA时,PPA源会自动更新(仅适用于该PPA)。在将来的版本中,还将有一个GUI来手动更新单个PPA。
有关Y PPA Manager的更多信息,请点击这里。
sudo add-apt-repository ppa:webupd8team/y-ppa-manager
然后sudo apt-get update
最后sudo apt-get install y-ppa-manager
要更新特定的存储库,请使用-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配给期间。
/path/to
该-u
选项已在15.10中添加。从15.10到17.10,您可以用来-u
仅自动更新要添加的特定存储库:
add-apt-repository -u my-ppa
愚蠢的是,man
直到18.04 才添加了此选项(但已在中进行了记录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起您就无法更新单个存储库。
add-apt-repository -u