我正在尝试构建一个Debian软件包。当我再次尝试构建它时,它失败了。
我有:
/home/debpackage/debianpackage_1.0.orig.tar.gz
debianpackage-1.0/
的文件夹(其中包含各种包)我提取了焦油,现在我已经
/home/alon/debpackage/debianpackage_1.0.orig.tar.gz
/home/alon/debpackage/debianpackage-1.0/
(提取的所有文件)
在/home/alon/debpackage/debianpackage-1.0/
中,我创建了一个名为“debian”的文件夹
/home/alon/debpackage/debianpackage-1.0/
中的./debian/changelog/copyright
(空)
./debian/changelog/rules
./debian/changelog/changelog
./debian/changelog/compact
(包含“8”)
./debian/changelog/control
./debian/changelog/source/format
(包含3.0(被子)) rules
包含:
#!/usr/bin/make -f
%:
dh $@
override_dh_auto_install:
$(MAKE) DESTDIR=$$(pwd)/debian/debianpackage prefix=/usr install
当我尝试运行./debian/debuild -us -uc
时,我得到:
dpkg-buildpackage -rfakeroot -D -us -uc
dpkg-buildpackage: warning: using a gain-root-command while being root
dpkg-buildpackage: export CFLAGS from dpkg-buildflags (origin: vendor): -g -O2
dpkg-buildpackage: export CPPFLAGS from dpkg-buildflags (origin: vendor):
dpkg-buildpackage: export CXXFLAGS from dpkg-buildflags (origin: vendor): -g -O2
dpkg-buildpackage: export FFLAGS from dpkg-buildflags (origin: vendor): -g -O2
dpkg-buildpackage: export LDFLAGS from dpkg-buildflags (origin: vendor): -Wl,-Bsymbolic-functions
dpkg-buildpackage: source package debianpackage
dpkg-buildpackage: source version 1.0-1
dpkg-buildpackage: source changed by root <alon.zeiri@gmail.com>
dpkg-source --before-build debianpackage-1.0
dpkg-buildpackage: host architecture amd64
fakeroot debian/rules clean
dh clean
dh: Compatibility levels before 5 are deprecated.
dh_testdir
dh_auto_clean
dh_auto_clean: Compatibility levels before 5 are deprecated.
dh_clean
dh_clean: Compatibility levels before 5 are deprecated.
dpkg-source -b debianpackage-1.0
dpkg-source: info: using source format `3.0 (quilt)'
dpkg-source: info: building debianpackage using existing ./debianpackage_1.0.orig.tar.gz
dpkg-source: info: building debianpackage in debianpackage_1.0-1.debian.tar.gz
dpkg-source: info: building debianpackage in debianpackage_1.0-1.dsc
debian/rules build
dh build
dh: Compatibility levels before 5 are deprecated.
dh_testdir
dh_auto_configure
dh_auto_configure: Compatibility levels before 5 are deprecated.
dh_auto_build
dh_auto_build: Compatibility levels before 5 are deprecated.
dh_auto_test
dh_auto_test: Compatibility levels before 5 are deprecated.
fakeroot debian/rules binary
dh binary
dh: Compatibility levels before 5 are deprecated.
dh_testroot
dh_prep
dh_prep: Compatibility levels before 5 are deprecated.
dh_installdirs
dh_installdirs: Compatibility levels before 5 are deprecated.
debian/rules override_dh_auto_install
make[1]: Entering directory `/home/alon/debpackage/debianpackage-1.0'
/usr/bin/make DESTDIR=$(pwd)/debian/debianpackage prefix=/usr install
make[2]: Entering directory `/home/alon/debpackage/debianpackage-1.0'
make[2]: *** No rule to make target `install'. Stop.
make[2]: Leaving directory `/home/alon/debpackage/debianpackage-1.0'
make[1]: *** [override_dh_auto_install] Error 2
make[1]: Leaving directory `/home/alon/debpackage/debianpackage-1.0'
make: *** [binary] Error 2
dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2
debuild: fatal error at line 1335:
dpkg-buildpackage -rfakeroot -D -us -uc failed
有什么想法吗?
答案 0 :(得分:1)
似乎上游源代码的makefile(“debianpackage-1.0”)没有install
目标,但在override_dh_auto_install
目标debian/rules
中,您明确地调用make install
}
可能的解决方案:
将一个install
目标添加到debianpackage-1./Makefile
如果您不在上游,则应通过debian / patches
使用override_dh_auto_install
目标手动将文件安装到适当的位置
dh_auto_install
?似乎你没有添加任何东西,而不是自动调用。
答案 1 :(得分:1)
为什么您的debian/changelog
是一个目录?您不应该有debian/changelog/rules
和debian/changelog/changelog
等。它应该是debian/changelog
(常规文件),debian/rules
,debian/control
...你的目录结构发生了糟糕的事情。
你应该cd debian; mv changelog oopsdir; mv -i oopsdir/* .;rmdir oopsdir
或者只是杀死整个事情并重新开始,因为你无法知道导致changelog
成为目录的灾难不会影响其他任何事情。
答案 2 :(得分:0)
如果我在cmake
之前在源代码中运行debuild
,我通常会遇到此错误。 debuild/dpkg-buildpackage
非常特别,因为它需要在干净的源上运行。我建议您尝试使用干净源上的dh_make --createorig
生成debian文件夹及其内容,而不是手动创建它。在debuild
之后应该没有任何问题,除非源存档的创建者包含编译代码或自动生成的文件。