我一直在做一些研究:无法从 Node.js 应用程序构建 PPA。
显然,这不是一个规则,因为有一些项目已经成功实现了这一点。WebUDP8就是一个例子;他们为 Atom IDE(使用 Electron)和 Popcorn Time(使用 Node-Webkit)构建了 PPA
我做了任何人都会做的事:打扰这些家伙,因为没有文档(或者至少我找不到)。
他们的回答是:
Launchpad PPA 尚不支持 nodejs,因为它们不允许获取外部资源。因此,Popcorn TIme PPA 曾经是一个简单的安装程序,可自动从其服务器下载 Popcorn Time。
但是,据我所知,我没有使用外部资源。我并没有从 package.json 下载依赖项。它们都--save
在要构建的文件夹中。
我如何制作 Electron App 的 PPA?软件中心是否也支持 PPA,还是只支持 .deb?
答案1
我认为你是对的。如果 Atom 有自己的 PPA,那么任何 Electron 应用都可以。
这应该有帮助: 如何创建 PPA?
答案2
WebUPD8 的 Atom PPA 仅提供预构建的二进制文件。它的工作原理如下:
- WebUPD8 像往常一样在其基础设施上构建 Atom(可以访问互联网)。
- 一旦他们有了包含所有必需文件的 x86 和 amd64 二进制文件,他们就会将它们打包成
atom-linux32.tar
或atom-linux64.tar
添加图标、桌面文件等,并将其打包为原件tarball(上游提供来源就 Launchpad 而言)。 - 然后他们添加
debian/
包装部分来源它应该构建软件包 - 但实际上它什么也没构建,它只是检查它在哪种架构上运行,并根据该架构解压相应的atom-linux(32|64).tar
档案,以便它“查找”已构建的 DPKG 构建系统二进制文件 - 从那里开始一切都相同,
install
目标中的文件debian/rules
将被打包为二进制适合该架构的包。
这对于用户来说既不好也不安全,因为这样的二进制文件可能包含由 WEBUPD8 或有权访问他们构建二进制文件的基础架构的人添加的恶意代码。我还认为将二进制文件打包为源包是规避和滥用Launchpad PPA 政策引用:
注意:我们不允许上传预先构建的二进制包。
也提到这个答案。
你可以通过下载来查看他们是如何做到的原始资料库以及他们的Debian 补丁从此页面:https://launchpad.net/~webupd8team/+archive/ubuntu/atom/+packages(包装详情)。
正确的方法是将所有必需的文件(整个node_modules/
,所有电子源文件等)预取到来源在 Launchpad 构建服务器上打包并构建您的应用程序debian/rules
。即使您在node_modules/
Electron 中拥有所有文件,在构建过程中也会从互联网下载某些部分,而这在 Launchpad 中是行不通的。
Electron 有一个选项,允许将构建工件源缓存在您的机器上(因此理论上您可以将它们包含在源包中),然后在 Launchpad 构建期间重复使用。所有这些都非常复杂,容易出错,并且需要具有与构建环境相同的环境等,可能不值得付出努力。替代解决方案可能是将您的应用程序作为快照映像分发。