You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何从Launchpad.net下载PPA的所有文件以备份废弃项目?

如何从Launchpad.net下载PPA的所有文件以备份废弃项目?

嘿,我完全懂你想备份废弃PPA的需求——毕竟这些没人维护的项目包丢了就难找了!之前你用wget --recursive --no-parent直接爬PPA的归档页面没得到预期结果,其实是因为Launchpad的网页展示层和实际包存储的路径是分开的,直接爬网页只会抓到一堆页面文件,拿不到真正的deb包和源码文件。给你两个实用的解决方案:

方法一:修正wget命令直接抓取包存储目录

Launchpad的所有PPA包都存在ppa.launchpad.net/<用户名>/<PPA名称>/ubuntu/pool/这个路径下,你只需要把wget的目标换成这个实际的存储地址就行。比如你的PPA是~myproject/+archive/ubuntu/ppa,对应的pool路径就是http://ppa.launchpad.net/myproject/ppa/ubuntu/pool/

运行这个命令就能精准下载所有相关文件:

wget --recursive --no-parent --no-clobber --accept deb,dsc,tar.gz,tar.xz http://ppa.launchpad.net/myproject/ppa/ubuntu/pool/

参数解释:

  • --recursive:递归下载目录下的所有层级文件
  • --no-parent:不会向上爬取父目录,避免下载无关内容
  • --no-clobber:不会覆盖已经下载好的文件,适合中断后继续下载
  • --accept:指定只下载PPA中常见的包文件类型(deb安装包、dsc源码描述文件、源码压缩包等),过滤掉网页文件

方法二:用apt-mirror做系统的完整同步(适合长期备份)

如果你用的是Ubuntu/Debian系系统,apt-mirror工具能更系统地同步整个PPA的内容,包括不同架构的包、源码包,还能保持源的目录结构和Launchpad一致,方便后续如果需要本地搭建源也能用。

  1. 先安装apt-mirror:
sudo apt update && sudo apt install apt-mirror
  1. 编辑配置文件/etc/apt/mirror.list,添加你的PPA源(记得把jammy换成你PPA对应的Ubuntu版本代号,比如focalbionic):
set base_path /path/to/your/backup/folder  # 替换成你想存储备份的本地目录
deb http://ppa.launchpad.net/myproject/ppa/ubuntu/ jammy main restricted universe multiverse
deb-src http://ppa.launchpad.net/myproject/ppa/ubuntu/ jammy main restricted universe multiverse
  1. 运行同步命令:
apt-mirror

它会自动处理所有依赖和文件同步,完成后你的指定目录里就有完整的PPA备份了。

最后再提一句:之前的wget命令失效是因为你访问的是PPA的web展示页面,那里的包链接是动态加载的,wget爬不到实际的包文件地址,直接指向pool目录就能解决这个问题啦。

备注:内容来源于stack exchange,提问作者acgbox

火山引擎 最新活动