构建 debian 软件包时如何忽略文件/目录?

Thi*_*uda 7 linux debian svn dpkg

我制作了一些 debian 包来简化在新服务器上的配置部署,并希望将它们放在 SVN 源代码控制中。问题是 SVN 为源树中的每个子目录创建了一个 .svn 目录,所以我无法在源树 'dpkg-deb --build' 上构建包,因为 '.svn' 目录将包含在结果中包裹。到目前为止,当我想构建一个包时,我必须将目录导出到不同的地方并从那里构建。

有没有一种快速的方法可以让 'dpkg-deb --build' 忽略 .svn 目录?

小智 8

要排除要放入源 Debian 软件包中的文件,您应该创建该文件:

debian/source/options
Run Code Online (Sandbox Code Playgroud)

并输入要传递给 dpkg-source 的选项,在您的情况下:

tar-ignore = ".svn/"
Run Code Online (Sandbox Code Playgroud)

请参阅 dpkg-source 的手册页。


chr*_*and 5

我的理解是,您不应该首先构建 debian 包dpkg-deb --build。如果您dpkg-buildpackage改为使用,您将不必担心 .svn 目录包含在您的包中。

参见:http : //raphaelhertzog.com/2010/12/17/do-not-build-a-debian-package-with-dpkg-b/

可能有更好的方法,但这是我尚未彻底测试的方法:

使用dh_make创建骨架Debian软件包。将您的文件放在目录上方的debian目录中。

编辑生成的dirs文件,并放置您要将文件移动到的路径,例如:

/opt/mypackage
/usr/local/bin
Run Code Online (Sandbox Code Playgroud)

然后在您的rules文件中,删除 $(MAKE) 代码并将您的 install: build 部分设置为如下所示:

install: build
  dh_testdir
  dh_testroot
  dh_clean -k 
  dh_installdirs

  # Copy files into staging area
  rsync --exclude .svn -a mypackage/ debian/tmp/opt/mypackage/
Run Code Online (Sandbox Code Playgroud)

  • 你链接的那篇博文基本上是说,“不要使用`dpkg -b`,而是花接下来的4个小时学习https://www.debian.org/doc/manuals/maint-guide/”helloworld版本在哪里? (4认同)
  • 注意:这是“老派”debhelper。由于 debhelper 已经迁移到 `dh $@` 和像 `override_dh_auto_build-indep` 这样的新目标 (3认同)

小智 5

这里值得记录一下,如果你打算使用dpkg-buildpackage它,它有一个-i忽略事物的开关。即,用于-i .svn忽略 .svn 目录。