【问题标题】:creating a Debian package fails创建 Debian 软件包失败
【发布时间】:2016-08-31 00:48:34
【问题描述】:

我正在尝试构建一个 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

有什么想法吗?

【问题讨论】:

    标签: ubuntu debian packages


    【解决方案1】:

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

    可能的解决方案:

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

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

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

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

    【讨论】:

      【解决方案2】:

      为什么你的debian/changelog 是一个目录?你不应该有debian/changelog/rulesdebian/changelog/changelog等。它应该是debian/changelog(常规文件),debian/rulesdebian/control......你的目录结构发生了一些不好的事情。

      你应该cd debian; mv changelog oopsdir; mv -i oopsdir/* .;rmdir oopsdir

      或者干脆杀死整个事情并重新开始,因为你不知道导致changelog成为目录的灾难不会影响其他任何东西。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-21
          • 2013-03-07
          • 2014-10-08
          相关资源
          最近更新 更多