我该如何备份我的PPA?

与此问题相关。 但我担心的是,在过去一年中,我的大部分更有趣(或使用过的)应用程序来自PPA,只备份我的源列表就不会像add-apt-repository那样添加相关的启动板键。

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

当然,没有倾销我的bash历史。 这可能是可行的,具体取决于该文件返回的距离?

好吧,因为我喜欢用命令行脚本编写,我写了以下内容。 它会生成一个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包含的内容。

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

如果导入所有GPG密钥是您正在寻找的,您可以使用我的脚本(以.deb格式)一次导入所有丢失的GPG密钥。 下载

要使用,只需运行:

 sudo launchpad-getkeys 

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

然后,要备份所有PPA,您只需要复制新计算机/新安装上的所有.list文件,并在复制它们之后,运行上面的命令导入所有密钥。

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

ppa:USER/REPO列出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 

有关完整脚本的详细信息,请参阅我对其他问题的回答,其中包含一些可以保存和使用的额外function。