在用户目录中安装新配置文件的官方 Debian/Ubuntu 方法是什么?

在用户目录中安装新配置文件的官方 Debian/Ubuntu 方法是什么?

我正在创建一个包含一些用户默认设置的包。这些设置通常出现在~/.<some-name>~/.config/<app>/<some>.conf和类似文件下。

在大多数情况下,这些文件安装在框架目录 ( /etc/skel) 中,但这些文件将仅安装在新用户主目录中。我希望现有用户在安装软件包时也能获得这些文件。

Debian 标准对此有何规定?


举一个具体的例子,我有一个.lessfilter我想添加到我的个人包裹这样它就安装在我所有的机器上了。

所以在我的alex-tools.install文件中我有:

scripts/.lessfilter   /etc/skel

我知道我可以创建alex-tools.postinst这样的脚本(尚未测试,请谨慎使用):

#!/bin/sh -e
#
# Finish up the installation

#DEBHELPER#

# Source debconf library.
. /usr/share/debconf/confmodule

if [ "$1" = "configure" ]
then
    # Install files in user folders
    #
    for u in /root /home/*
    do
        if ! test -f "${u}/.lessfilter"
        then
            cp /etc/skel/.lessfilter "${u}/.lessfilter"
            chmod 700 "${u}/.lessfilter"
            chown "${u}" "${u}/.lessfilter"
        fi
    done
fi

但我认为这在 Debian 中可能不被视为“合法”,并且可能有更干净的方法来实现这一点?

Debian 参考资料中是否有关于此的内容?

答案1

我不确定官方是否建议在安装软件包时创建每个用户的配置,但我找到的链接肯定不鼓励这样做。但是,如果我正在安装你的软件包,那么这就是我的观点我希望它如何设计。

安装配置文件

/etc/my_program许多程序在检查每个用户的配置(例如)之前会先检查全局配置位置(例如~/.my_program)。如果可能,应将配置放在全局位置。

您安装每个用户配置文件的具体示例很~/.lessfilter有趣,因为没有全局配置文件选项。在这种情况下,如果您提供包,my_package那么它可以

  • 创建全局配置/usr/share/my_package/lessfilter
  • /etc/profile.d/my_package添加如下内容的脚本
[ -f "${HOME}/.lessfilter" ] || cp /usr/share/my_package/lessfilter "${HOME}/.lessfilter"

这将提供很大的灵活性。一个明显的缺点是,这/etc/profile可能只会影响交互式 Bash 会话,你可能需要支持其他场景。

链接

相关内容