如何在构建 Debian 包时忽略文件/目录?

如何在构建 Debian 包时忽略文件/目录?

我制作了一些 debian 软件包以简化在新服务器上的配置部署,并希望将它们放入 SVN 源代码控制中。问题是 SVN 为源树中的每个子目录创建一个 .svn 目录,因此我无法在源树“dpkg-deb --build”上构建软件包,因为“.svn”目录将包含在生成的软件包中。到目前为止,当我想构建软件包时,我必须将目录导出到其他位置并从那里构建。

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

答案1

dpkg-deb --build我的理解是,你首先不应该使用 来构建 debian 软件包。如果你使用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

然后在您的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/

答案2

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

debian/source/options

并输入您想要传递给 dpkg-source 的选项,以您的情况为例:

tar-ignore = ".svn/"

请参阅 dpkg-source 的手册页。

答案3

这里值得记录的是,如果您要使用dpkg-buildpackage它,它有一个-i可以忽略事物的开关。即用来-i .svn忽略.svn 目录。

相关内容