我正在使用apt-get来开发一个稍微修改过的debian openjdk-11:
apt-get source openjdk-11-jre-headless:amd64
在修改了一些Java类之后,我使用以下命令构建了软件包:
dpkg-source --commit #create a patch file from the modifiactions
dch #increase build number to make sure my own build is not replaced by the default package
dpkg-buildpackage -us -uc #based on https://www.debian.org/doc/manuals/maint-guide/build.en.html#completebuild
这将为jre和jdk生成所有java .deb软件包。构建和测试过程需要相当长的时间。
第一个问题:如何高效地对.deb软件包进行少量修改(在构建项目一次之后)?
我尝试了以下操作:
1)https://www.debian.org/doc/manuals/maint-guide/build.en.html#quickrebuild 这表明要运行
fakeroot debian/rules build
但是,未构建修改后的代码。相反,我只会看到以下输出
jtreg_version="$(dpkg-query -f '${Version}\n' -W jtreg)"; \
if ! dpkg --compare-versions 4.2-b13-0~ le $jtreg_version; then \
echo "Error: testsuite requires jtreg 4.2-b13-0~ but $jtreg_version is installed"; \
echo "Please update the jtreg dependency and regenerate debian/control"; \
false; \
fi
if [ -f buildwatch.pid ]; then \
pid=$(cat buildwatch.pid); \
kill -1 $pid || :; sleep 1; kill -9 $pid || :; \
fi
rm -f buildwatch.pid
2)项目内部的doc / building.html建议:
构建单个模块
使用细粒度make目标的安全方法是使用模块 具体的目标。 JDK中的所有源代码都是经过整理的,因此 属于一个模块,例如java.base或jdk.jdwp.agent。你可以建立 通过将其指定为make目标,仅提供一个特定模块: jdk.jdwp.agent。如果指定的模块依赖于其他模块(例如 java.base),将首先构建这些模块。
但是,debian构建过程似乎删除了配置信息,但出现以下错误:
Error: No configurations found
Please run 'bash configure' to create a configuration.
当前唯一可行的方法是清理并完全重建软件包。
第二个问题:在构建.deb文件时是否可能跳过所有测试,因为大多数时间都需要测试?