在 Ubuntu 的最新版本中,添加 PPA 会立即自动更新包缓存。
有时,我需要添加几个 PPA(例如在全新安装之后),并且希望apt update
在添加所有 PPA 后一次性手动运行。
怎么做?
我发现这问题,建议使用add-apt-repository -n ppa:user/repo
。
如何改变默认行为,以便即使-n
没有提供标志,包缓存也不会被更新?
例如,在 Linux Mint 中,添加 PPA 后包缓存永远不会自动更新。如何使其成为 Ubuntu 中的默认行为?
答案1
对于特定用户,您可以为其添加别名add-apt-repository
。
将以下行添加到文件末尾~/.bashrc
:
alias sudo='sudo '
alias add-apt-repository='add-apt-repository -n'
alias apt-add-repository='add-apt-repository -n'
保存更改后,请不要忘记获取文件~/.bashrc
:
. ~/.bashrc
请记住,第一行是使用别名所必需的sudo
。如果您有想要排除sudo
使用的别名,这可能不是最好的方法。
答案2
对于系统范围的方法,我将创建本地包装脚本,/usr/local/bin
如下所示
cat <<\EOF | sudo tee /usr/local/bin/add-apt-repository
#!/bin/bash
/usr/bin/add-apt-repository -n $@
EOF
sudo chmod +x /usr/local/bin/add-apt-repository
并且不要忘记apt-add-repository
同义词命令 - 运行
sudo ln -s /usr/local/bin/add-apt-repository /usr/local/bin/apt-add-repository
-n
然后使用任意带有自动添加选项的命令。
答案3
高级用户
您可以修改源代码来删除该apt update
命令。
这是您需要从/usr/bin/add-apt-repository
文件中删除的代码块:
if update and not options.remove:
os.execvp("apt-get", ["apt-get", "update"])
sys.exit(0)
这将删除更新命令。
笔记:此代码在文件中出现两次,您必须删除最后一段。大多数文件中的此代码位于靠近198号线。
您可以使用文本编辑器打开该文件nano
并删除这段代码。
您还可以稍微修改代码,例如:
if update and not options.remove:
os.execvp("apt-get", ["apt-get", "moo"])
sys.exit(0)
笔记:使用终端文本编辑器来编辑此文件,nano
而不是使用 GUI 编辑器gedit
。
初学者
Ctrl使用+ Alt+打开终端T
首先,安装 nano:
sudo apt update sudo apt install nano
编辑文件:
sudo nano /usr/bin/add-apt-repository
反复按向下箭头键,除非到达文件末尾。
你会发现一个
if
与此完全相同的语句:if update and not options.remove: os.execvp("apt-get", ["apt-get", "update"]) sys.exit(0)
删除上面提到的整个
if
代码块。按Ctrl+ X,然后选择Y并按ENTER。
测试
恢复文件
弄乱?
不用担心!如果我们运行dpkg -S
该文件,我们可以看到:
$ dpkg -S /usr/bin/add-apt-repository
software-properties-common: /usr/bin/add-apt-repository
因此只需运行:
sudo apt update
sudo cp -r /usr/bin/add-apt-repository /tmp
sudo rm -rf /usr/bin/add-apt-repository
sudo apt install software-properties-common --reinstall