如何在 Debian 软件包中包含上游文件?

如何在 Debian 软件包中包含上游文件?

我的包很复杂,但我已经构建了一个最小的示例,以便您可以轻松理解:

.
├── 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

相关内容