创建了以下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.
答案 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
手动安装软件包一样,这样构建就可以了。 (对于可能运行脚本的其他人来说,在脚本中添加检查此目录是否有用。)