Cmake Debian包:用户和组
最近,我使用cmake/cpack制作了一个debian包。我成功了。但是我在计算机上安装了它(sudo dpkg-I mypcakge.deb),我发现了一个问题:安装程序的用户和组是root:root。由于某种原因,我的问题应该在特定的用户/组中运行。我不知道怎么做,你能帮我吗Cmake Debian包:用户和组,cmake,debian,cpack,Cmake,Debian,Cpack,最近,我使用cmake/cpack制作了一个debian包。我成功了。但是我在计算机上安装了它(sudo dpkg-I mypcakge.deb),我发现了一个问题:安装程序的用户和组是root:root。由于某种原因,我的问题应该在特定的用户/组中运行。我不知道怎么做,你能帮我吗 另外,我不想在安装软件包后用chown(..)修改用户和组。有没有办法在CmakeList中添加一些东西来实现这一点?它不仅与CMake有关,而且通常与使用debhelper和/或非标准用户名有关 dh(1)通常在d
另外,我不想在安装软件包后用chown(..)修改用户和组。有没有办法在CmakeList中添加一些东西来实现这一点?它不仅与CMake有关,而且通常与使用debhelper和/或非标准用户名有关
dh(1)
通常在debian/rules
中使用,默认情况下会调用dh\u fixperms(1)
,默认情况下会重置所有者和权限
基本上有三种方法可以保留您想要的所有者/权限:
dh_fixperms(1)
,您可以指定要覆盖所有者/组的文件。确保您的包pre依赖于包含所需用户/组的base passwd
包的正确版本
您可以在debian/rules
中重写如下内容(请参见dh_fixperms(1)
手册页):
有更多信息postinst
script。在它里面,你首先需要,然后做一些类似的事情
chown myuser:mygroup /var/log/mydir
chmod 0750 /var/log/mydir
for i in /usr/bin/foo /usr/sbin/bar; do
# only do something when no setting exists
if ! dpkg-statoverride --list $i >/dev/null 2>&1; then
#include: debconf processing, question about foo and bar
if [ "$RET" = "true" ] ; then
dpkg-statoverride --update --add sysuser root 4755 $i
fi
fi
done
for i in /usr/bin/foo /usr/sbin/bar; do
if dpkg-statoverride --list $i >/dev/null 2>&1; then
dpkg-statoverride --remove $i
fi
done
您还应该处理删除,如下所示:
for i in /usr/bin/foo /usr/sbin/bar; do
# only do something when no setting exists
if ! dpkg-statoverride --list $i >/dev/null 2>&1; then
#include: debconf processing, question about foo and bar
if [ "$RET" = "true" ] ; then
dpkg-statoverride --update --add sysuser root 4755 $i
fi
fi
done
for i in /usr/bin/foo /usr/sbin/bar; do
if dpkg-statoverride --list $i >/dev/null 2>&1; then
dpkg-statoverride --remove $i
fi
done
我不认为许多Debian软件包开发者都熟悉Cmake来创建Debian软件包。你可以发布一个链接到一些背景资源,或者只是一个片段,显示你是如何做的?