从修订标记为git url创建.deb包

时间:2013-11-21 19:08:14

标签: git bash permissions deb

创建了以下bash脚本,以便从git url&创建一个.deb包。修订标签:https://github.com/GlassGhost/GitDeb

我测试了它:

  

bash /path/to/GitDeb.sh git://repo.or.cz/tinycc.git tcc 0.9.26   release_0_9_26

但是在调用https://github.com/GlassGhost/GitDeb/blob/d0c24db46244cc34c0cffded57903fddb290d790/GitDeb.sh

的第36行
fakeroot checkinstall --install=no --pkgname="$PkgName" --pkgversion="$PkgVersion" -y -D make install

它失败并带有以下内容:

Installing with make install...

========================= Installation results ===========================
make -C lib native
make[1]: Entering directory `/home/owner/Documents/GitDeb/tcc/lib'
make[1]: Nothing to be done for `native'.
make[1]: Leaving directory `/home/owner/Documents/GitDeb/tcc/lib'
mkdir -p "/usr/local/bin"
install -m755 tcc "/usr/local/bin"
install: cannot create regular file ‘/usr/local/bin/tcc’: Permission denied
make: *** [install] Error 1

****  Installation failed. Aborting package creation.

1 个答案:

答案 0 :(得分:3)

checkinstall documentation建议使用--fstrans。所以使用这个标志。

更新:我已下载您的repo并在lxc容器中运行您的代码。只需添加--fstrans,我就可以通过运行命令来创建完整的deb。

fakeroot伪造了一些文件操作,但它允许它启动的命令安装需要权限的东西。这就是为什么需要--fstrans

ETA:命令mkdir -p "/usr/local/share/doc/tcc"可能会失败。这是因为启动/usr/local/share/doc时,目录checkinstall不存在。是的,-p表示创建所有父母,因此它应该有效但由于某种原因--fstrans无法处理它。解决方案是在运行/usr/local/share/doc/

之前预先创建checkinstall
sudo mkdir /usr/local/share/doc

在尝试构建之前,我会手动手动。就像我必须使用apt-get手动安装软件包一样,这样构建就可以了。 (对于可能运行脚本的其他人来说,在脚本中添加检查此目录是否有用。)