CMake rpm 在 /etc/init.d 中安装文件

Posted

技术标签:

【中文标题】CMake rpm 在 /etc/init.d 中安装文件【英文标题】:CMake rpm installing a file in /etc/init.d 【发布时间】:2011-12-09 08:21:58 【问题描述】:

我想安装一个文件 /etc/init.d 目录

我写过代码

INSTALL(FILES  $CMAKE_SOURCE_DIR/app/script/appd  DESTINATION /etc/init.d/appd)

但是当我使用 cmake 运行打包代码时出现错误

CMake Error at /home/vivek/workspace/app/build/standalone/cmake_install.cmake:54 (FILE):
  file cannot create directory: /etc/init.d/appd.  Maybe need
  administrative privileges.

如何设置 cmake 在 /etc/init.d 目录中安装文件?

【问题讨论】:

【参考方案1】:

你可以这样做,但你可能需要明确设置:

set(CPACK_SET_DESTDIR ON)

之前:

include(CPack)

在您的 CMakeLists.txt 文件中。 (您只需要对 2.8.3 之前的 CMake/CPack 上的旧版本执行此操作)

您需要这样做的原因是您将完整路径名指定为已安装文件之一的 DESTINATION。为了在打包阶段正确执行此操作,CPack 需要在其“make install”调用中使用 DESTDIR 环境变量。

出于向后兼容性的原因,默认情况下我们没有自动执行此操作。

但是,这个错误在 2.8.3 版本中得到了修复,因此它可以通过使用完整路径名的安装规则透明地自动完成:

http://public.kitware.com/Bug/view.php?id=7000

希望您可以将 CPACK_SET_DESTDIR 设置为 ON 用于您的 rpm 包,或者使用包含自动修复的更新版本的 CMake/CPack。

【讨论】:

【参考方案2】:

你不能。您唯一能做的就是要求用户以管理权限为您的应用运行 make install

另外,您可以尝试检测 sudo 命令和 add_custom_command() 的存在,这将使用 sudo 安装您的文件。

【讨论】:

以上是关于CMake rpm 在 /etc/init.d 中安装文件的主要内容,如果未能解决你的问题,请参考以下文章

命令行怎么重启ssh,用/etc/init.d/ssh restart不行

PostgreSQL installations

Linux独立服务管理(RPM包的启动与自启动)

Linux 独立服务管理

Linux 独立服务管理

NFS安装1.0版本