我如何备份我的 PPA?

我如何备份我的 PPA?

相关这个问题。但我担心的是,在过去的一年里,我大多数更有趣(或使用过)的应用程序都来自 PPA,而仅仅备份我的源列表并不能像那样添加相关的启动板键add-apt-repository

因此,我正在寻找一种方法来列出所有 PPA URL(如ppa:chromium-daily/stable),以便我可以轻松地编写一系列 add-apt-repository 命令,将它们优雅地添加到新安装中。

当然,除了转储我的 bash 历史记录之外。这可能是可行的,具体取决于该文件可以追溯到多久以前?

答案1

因为我喜欢摆弄命令行脚本,所以我写了下面的代码。它会生成一个 PPA 字符串列表,您可以备份这些字符串,然后将其编写成脚本add-apt-repository

grep -RoPish '(?<=ppa.launchpad.net/)[^/]+/[^/ ]+' /etc/apt | sort -u | sed 's/^/ppa:/'

这将生成类似以下内容的内容:

ppa:ubuntu-wine/ppa
ppa:am-monkeyd/nautilus-elementary-ppa
ppa:nilarimogard/webupd8
ppa:ubuntu-x-swat/x-updates
ppa:tualatrix/ppa
ppa:banshee-team/banshee-unstable
ppa:chromium-daily/beta
ppa:libreoffice/ppa
ppa:banshee-team/ppa

如果您想要全面恢复这些内容,您可以像这样将它们重新导入系统(假设我们将 PPA 保存为~/ppa-backup.txt

<~/ppa-backup.txt xargs -I % sudo add-apt-repository %

我可能会建议你不要全部恢复。查看备份并确保你知道每个 PPA 包含什么。

答案2

我的做法是将整个 /etc/apt 目录复制到一个安全的地方。如果您必须重新安装或克隆您的安装,只需复制回该目录即可。它甚至会保存 gpg 信任密钥。

答案3

如果您需要导入所有 GPG 密钥,您可以使用我的脚本(以 .deb 格式)一次性导入所有缺失的 GPG 密钥。下载

要使用,只需运行:

sudo launchpad-getkeys

如果您愿意,可以查看 .deb 内部,脚本非常小且易于理解(以防您不信任我的 deb)。

然后备份所有 PPA,您要做的就是复制新计算机/新安装上的所有 .list 文件,复制完成后,运行上述命令来导入所有密钥。

答案4

我的答案如何从命令行获取所有存储库和 PPA 的列表并放入安装脚本?

按以下格式列出 PPA ppa:USER/REPO

list_ppas () {
  grep -E '^deb\s' /etc/apt/sources.list /etc/apt/sources.list.d/*.list |\
    cut -f2- -d: |\
    cut -f2 -d' ' |\
    sed -re 's#http://ppa\.launchpad\.net/([^/]+)/([^/]+)(.*?)$#ppa:\1/\2#g' |\
    grep '^ppa:'
}

生成安装脚本:

list_ppas | xargs printf 'add-apt-repository -y %s\n' > install_ppas.sh

-y(如果不想进行非交互式安装,请删除)

运行脚本:

sudo sh install_ppas.sh

请参阅我对另一个问题的回答,了解完整脚本以及一些您可以保存和使用的额外功能。

相关内容