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