如何更正CPackDeb目录的权限?

时间:2017-12-20 08:54:48

标签: cmake file-permissions packaging deb cpack

给出CMakeLists.txt之类:

PROJECT(asdf NONE)
CMAKE_MINIMUM_REQUIRED(VERSION 3.0)

INSTALL(FILES CMakeLists.txt DESTINATION share/doc/asdf/whatever)

SET(CPACK_GENERATOR "DEB")
SET(CPACK_PACKAGE_CONTACT "asdf@example.com")
INCLUDE(CPack)

make package生成的包具有以下内容:

$ dpkg-deb --contents asdf-0.1.1-Linux.deb 
drwx------ root/root         0 2017-12-20 10:50 ./usr/
drwx------ root/root         0 2017-12-20 10:50 ./usr/share/
drwx------ root/root         0 2017-12-20 10:50 ./usr/share/doc/
drwx------ root/root         0 2017-12-20 10:50 ./usr/share/doc/asdf/
drwx------ root/root         0 2017-12-20 10:50 ./usr/share/doc/asdf/whatever/
-rw-r--r-- root/root       235 2017-12-20 10:50 ./usr/share/doc/asdf/whatever/CMakeLists.txt

父目录只有所有者的权限位。如何更正这些以便世界可以读取我安装的文件,例如这些是drwxr-xr-x而不是?{/ p>

1 个答案:

答案 0 :(得分:1)

在与CMake开发人员Nils Gladitz的讨论中,我们能够在影响此问题的环境中跟踪此问题。如果环境中的umask设置为0022而不是0077,则make package会生成具有不同权限的包:

$ dpkg-deb --contents asdf-0.1.1-Linux.deb 
drwxr-xr-x root/root         0 2017-12-20 11:17 ./usr/
drwxr-xr-x root/root         0 2017-12-20 11:17 ./usr/share/
drwxr-xr-x root/root         0 2017-12-20 11:17 ./usr/share/doc/
drwxr-xr-x root/root         0 2017-12-20 11:17 ./usr/share/doc/asdf/
drwxr-xr-x root/root         0 2017-12-20 11:17 ./usr/share/doc/asdf/whatever/
-rw-r--r-- root/root       235 2017-12-20 10:50 ./usr/share/doc/asdf/whatever/CMakeLists.txt

Nils指出,这显然是一个陈旧的未解决的问题 [1] [2]

谢谢你,Nils! =)