我的包很复杂,但我已经构建了一个最小的示例,以便您可以轻松理解:
.
├── test-package
│ └── debian
│ ├── changelog
│ ├── compat
│ ├── control
│ ├── rules
│ └── source
│ └── format
├── test-package_0.1.0.orig
│ └── test_file
└── test-package_0.1.0.orig.tar.gz
该debian/source/format
文件包含3.0 (quilt)
,这就是上游 tarball 的原因test-package_0.1.0.orig.tar.gz
。该 tarball 包含test_file
。
该debian/rules
文件包含:
#!/usr/bin/make -f
%:
dh $@
如果我更改到test-package
目录并运行dpkg-buildpackage -us -uc
,我会收到以下警告,并且我的包将不包含来自上游的文件:
dpkg-source: warning: ignoring deletion of file test_file, use --include-removal to override
我阅读dh_install
并添加了一个debian/test-package.install
包含以下内容的文件:
test_file opt/test-package/test_file
但后来我收到一个错误:
dh_install: Cannot find (any matches for) "test_file" (tried in "." and "debian/tmp")
dh_install: test-package missing files: test_file
dh_install: missing files, aborting
在哪里可以test_file
找到?也许这是错误的方法。在这种情况下我应该尝试什么?我可以避免修改没有 makefile 或类似内容的上游包吗?
答案1
上游 tarballtest-package_0.1.0.orig.tar.gz
确实需要它。但是,dpkg-buildpackage
它还期望此上游 tarball 被解压到目录test-package
之外debian
。然后它可以构建二进制包并将 Debian 覆盖与上游内容区分开来。
正确的布局:
.
├── test-package
│ ├── debian
│ │ ├── changelog
│ │ ├── compat
│ │ ├── control
│ │ ├── rules
│ │ ├── source
│ │ │ └── format
│ │ └── test-package.install
│ └── test_file
└── test-package_0.1.0.orig.tar.gz