我制作了一些 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 目录。