Рейтинг:2

Каков официальный способ Debian/Ubuntu для установки новых файлов конфигурации в пользовательские каталоги?

флаг ph

Я создаю пакет, который включает некоторые настройки по умолчанию для пользователей. Вещи, которые обычно появляются под ~/.<какое-то имя> или же ~/.config/<приложение>/<некоторые>.conf и подобные файлы.

В большинстве случаев эти файлы устанавливаются в каталог каркаса (/etc/skel), но они будут установлены только в домашних каталогах новых пользователей. Я бы хотел, чтобы существующие пользователи также получали файлы во время установки пакета.

Что говорит об этом стандарт Debian?


Для конкретного примера у меня есть .lessfilter сценарий, который я хотел бы добавить в свой персональный пакет таким образом, он устанавливается на все мои машины.

Так что в моем Алекс-tools.install файл у меня есть:

скрипты/.lessfilter /etc/skel

Я знаю, что могу создать alex-tools.postinst вот такой скрипт (еще не тестировался, используйте с осторожностью):

#!/бин/ш -е
#
# Завершить установку

#ДЕБПОМОЩНИК#

# Исходная библиотека debconf.
. /usr/доля/debconf/confmodule

если [ "$1" = "настроить" ]
тогда
    # Устанавливаем файлы в пользовательские папки
    #
    для вас в /root/home/*
    делать
        если ! тест -f "${u}/.lessfilter"
        тогда
            cp /etc/skel/.lessfilter "${u}/.lessfilter"
            chmod 700 "${u}/.lessfilter"
            chown "${u}" "${u}/.lessfilter"
        фи
    сделано
фи

Но я думаю, что это не может считаться «законным» в Debian, и может ли быть более чистый способ реализовать это?

Есть ли что-то об этом в справочниках по Debian?

Рейтинг:1
флаг jp

Я не уверен в официальных рекомендациях по созданию конфигурации для каждого пользователя во время установки пакета, но ссылки, которые я нашел, определенно препятствуют этому. Однако, если я устанавливал ваш пакет, то это мой мнение о том, как я хотел бы, чтобы это было разработано.

Установка файлов конфигурации

Многие программы сначала проверяют местоположение глобальной конфигурации (например, /etc/моя_программа) перед проверкой конфигурации для каждого пользователя (например, ~/.моя_программа). По возможности конфигурация должна быть размещена в глобальном расположении.

Ваш конкретный пример установки файла конфигурации для каждого пользователя для ~/.lessfilter интересно потому что не имеет глобального конфигурационного файла вариант. В этом случае, если вы предоставляете пакет мой_пакет тогда это могло

  • создать глобальную конфигурацию в /usr/доля/мой_пакет/lessfilter
  • добавить скрипт /etc/profile.d/мой_пакет с таким содержанием
[ -f "${HOME}/.lessfilter" ] || cp /usr/share/my_package/lessfilter "${HOME}/.lessfilter"

Это дало бы большую гибкость. Очевидный минус в том, что /etc/профиль может повлиять только на интерактивные сеансы Bash, и вам может потребоваться поддержка других сценариев.

Ссылки

флаг ph
Итак, каждый раз, когда кто-то входит в систему, запускаются сценарии из `/etc/profile.d`. Это хорошо. В этом случае `cp` также может быть `ln -s ...`. Таким образом, я мог бы предложить «нейтральный» скрипт, который вообще ничего не делает. Затем пользователь может переключаться между полноценной версией или скриптом, который ничего не делает.
флаг ph
В качестве примечания я создал проект под названием [advgetopt](https://github.com/m2osw/advgetopt), который имеет возможность поддерживать глобальное (`/usr/share/...`) административное (`/ etc/...`) и определенные пользователем (`~/.config/...`) файлы конфигурации в режиме чтения и записи и в несколько различных форматах. Так что я понимаю нормальный способ иметь настройки. К сожалению, `less` еще не настолько продвинут, как вы обнаружили. Кроме того, мой личный пакет частично предназначен для того, чтобы мне не приходилось выполнять всю эту настройку вручную каждый раз, когда я устанавливаю новый сервер Ubuntu...

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.