1

我正在尝试构建一个 Debian 软件包。当我尝试再次构建它时,它失败了。

我有:

  1. /home/debpackage/debianpackage_1.0.orig.tar.gz
  2. 上面的 tar 包含一个名为debianpackage-1.0/(其中包含各种包)的文件夹
  3. 我提取了 tar,现在我有了 /home/alon/debpackage/debianpackage_1.0.orig.tar.gz /home/alon/debpackage/debianpackage-1.0/(提取的所有文件)

  4. 在中/home/alon/debpackage/debianpackage-1.0/,我创建了一个名为“debian”的文件夹

  5. /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

有任何想法吗?

4

3 回答 3

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成为目录的灾难不会影响其他任何事情。

于 2012-08-22T20:36:14.177 回答
1

似乎您的上游源(“debianpackage-1.0”)的makefile没有install目标,但在您明确调用的override_dh_auto_install目标中debian/rulesmake install

可能的解决方案:

  • install目标添加到 debianpackage-1./Makefile

    如果您不在上游,则应通过 debian/patches 中的路径执行此操作

  • 使用override_dh_auto_install目标手动将文件安装到适当的位置

顺便说一句,你为什么dh_auto_install首先要覆盖?似乎您没有添加任何内容,这不是自动调用的。

于 2012-08-21T14:08:41.040 回答
0

如果我cmake之前在源代码中运行,我通常会遇到此错误debuilddebuild/dpkg-buildpackage非常特别,因为它需要在干净的源上运行。我建议您尝试通过使用dh_make --createorig干净的源而不是手动创建它来生成 debian 文件夹及其内容。debuild除非源存档的创建者在其中包含已编译的代码或自动生成的文件,否则之后应该可以正常工作。

于 2016-08-30T16:48:34.177 回答