我正在尝试建立棒冰在 Launchpad 中(我从 GitHub 克隆了存储库,并尝试使用这软件包配方 (package recipe) 也会出现这种情况,并且构建会失败。
以下是 buildlog 的相关部分
dpkg-buildpackage: info: source package popsicle
dpkg-buildpackage: info: source version 1.1.0-0~202008031810~ubuntu20.04.1
dpkg-buildpackage: info: source distribution focal
dpkg-source --before-build .
dpkg-buildpackage: info: host architecture amd64
fakeroot debian/rules clean
dh clean
debian/rules override_dh_auto_clean
make[1]: Entering directory '/<<PKGBUILDDIR>>'
make clean
make[2]: Entering directory '/<<PKGBUILDDIR>>'
cargo clean
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
if ! ischroot; then \
make vendor; \
fi
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
dh_clean
debian/rules build
dh build
dh_update_autotools_config
dh_auto_configure
debian/rules override_dh_auto_build
make[1]: Entering directory '/<<PKGBUILDDIR>>'
env CARGO_HOME="$(pwd)/target/cargo" \
dh_auto_build
make -j1
make[2]: Entering directory '/<<PKGBUILDDIR>>'
tar pxf vendor.tar
tar: vendor.tar: Cannot open: No such file or directory
这是完整的构建日志。
然而,当我尝试在我的 Kubuntu 18.04 机器上构建它时,我得到了
name@pc:~/popsicle$ debuild -us -uc
dpkg-buildpackage -rfakeroot -us -uc -ui
dpkg-buildpackage: info: source package popsicle
dpkg-buildpackage: info: source version 1.1.0
dpkg-buildpackage: info: source distribution focal
dpkg-buildpackage: info: source changed by Ian Douglas Scott <[email protected]>
dpkg-source --before-build popsicle
fakeroot debian/rules clean
dh clean
debian/rules override_dh_auto_clean
make[1]: Entering directory '/home/archisman/popsicle'
make clean
make[2]: Entering directory '/home/archisman/popsicle'
cargo clean
make[2]: Leaving directory '/home/archisman/popsicle'
if ! ischroot; then \
make vendor; \
fi
make[2]: Entering directory '/home/archisman/popsicle'
mkdir -p .cargo
cargo vendor | head -n -1 > .cargo/config
Updating crates.io index
Downloading crates ...
Downloaded bitflags v1.2.1
并且构建继续。
如何在 Launchpad 中构建它?
答案1
正如在评论在 OMG!Ubuntu! 中,Pop!OS PPA 的源包比 GitHub 中的代码大得多。开发人员很可能在将源代码上传到 Launchpad 之前使用 Cargo 打包了源代码中的所有依赖项。
如果你看看构建日志您可以看到构建服务器尝试解压丢失的 vendor.tar,但失败了。该文件包含编译大型 popsicle 二进制文件所需的所有依赖项(这就是我不是 Rust 软件的忠实粉丝的原因),由于 Debian/Ubuntu 有一个不允许网络访问的正确构建系统,因此无法通过 Cargo 在线获取该文件。如果您将您的构建与来自 Pop 的构建进行比较,您的压缩源为 269.3 KiB,而来自 Pop 的构建为 12.4 MiB:大小差异正是丢失的文件。