我如何 运行 只有一些 makefile 命令作为 root?
How do I run only some makefile commands as root?
我的 Makefile 中有一个安装目标,并希望 运行 一些安装共享库的命令(需要 root 权限)和一些将配置文件安装到 $HOME/.config
中的命令
通常我只是告诉用户 运行 sudo make install,但是这会导致配置文件被安装到 /root/.config
而不是实际的用户配置目录。
我该如何解决这个问题?
非常感谢。
您可以只更改配置文件的所有者和权限,尽管按用户配置文件安装的 Makefile
不是一个好主意,因为理想情况下它需要找出有多少用户存在于系统为每个用户安装文件。
如果你使用install
命令,你甚至可以做到
install -v -m644 -o$(USERNAME) -g$(USERGROUP) $(FILE) $(USERHOME)/.config/$(FILE)
更好的方法是让程序在找不到默认配置文件时从系统目录安装它们,例如
/usr/share/my-application/default-config/config.conf
然后程序会在适当的目录中搜索文件并将它们复制到当前 运行 程序用户的 $HOME
目录中,如果文件可以修改用户,否则您只需从其系统范围的位置访问它们。
我的 Makefile 中有一个安装目标,并希望 运行 一些安装共享库的命令(需要 root 权限)和一些将配置文件安装到 $HOME/.config
通常我只是告诉用户 运行 sudo make install,但是这会导致配置文件被安装到 /root/.config
而不是实际的用户配置目录。
我该如何解决这个问题? 非常感谢。
您可以只更改配置文件的所有者和权限,尽管按用户配置文件安装的 Makefile
不是一个好主意,因为理想情况下它需要找出有多少用户存在于系统为每个用户安装文件。
如果你使用install
命令,你甚至可以做到
install -v -m644 -o$(USERNAME) -g$(USERGROUP) $(FILE) $(USERHOME)/.config/$(FILE)
更好的方法是让程序在找不到默认配置文件时从系统目录安装它们,例如
/usr/share/my-application/default-config/config.conf
然后程序会在适当的目录中搜索文件并将它们复制到当前 运行 程序用户的 $HOME
目录中,如果文件可以修改用户,否则您只需从其系统范围的位置访问它们。