LINUX.ORG.RU

Как добавить файл в .config при сборке бинарных пакетов?


0

1

Мне нужно для пакетов DEB, ZST, RPM. (Или хотя бы для DEB, чтобы не было свалки в одной теме)
Как в файле сборки указать копирование файла, если неизвестно имя пользователя в папке home. Типа так ~/.config, но где он должен находится в папке проекта, где есть папка /usr и файлы копируются относительно текущего корня.

На данный момент я добавляю в /usr/azjio/nameprog/config.cfg, а потом копирую уже самой программой в ~/.config. Но хотелось бы иметь возможность на этапе установки сразу копировать config.cfg в ~/.config/nameprog/config.cfg с вопросом заменить ли существующий (с собственным текстом для случая если формат конфига изменился).

Перемещено CrX из talks


Ненужно так делать.

Клади конфиг либо в /usr/share/твояпрога/твойконфиг, либо в /etc/xdg/твояпрога/твойконфиг.

Далее при запуске проги два пути:

  • Можно целиком копировать файл в ~/.config/твояпрога/твойконфиг.
  • Можно использовать настройки из дефолтного файла, а новый файл в ~/.config/твояпрога/твойконфиг писать только если юзер явным образом поменял настройки.

P.S.

Все пути выше - упрощенно даны. По факту нужно следовать конкретным правилам разрешения имён. Например, /usr/share/ должен задаваться на этапе сборки проги (DATAROOTDIR).

А как резолвить ~/.config - написано в https://specifications.freedesktop.org/basedir/latest/

И т.п.

wandrien ★★★
()

Не нужно так делать. Вот у меня на терминальном сервере 5000 пользователей, и?

При первом запуске программа создаёт ~/.config/program/config.cfg, всё.

Aceler ★★★★★
()
Ответ на: комментарий от wandrien

Ненужно так делать.

Клади конфиг либо в/usr/share/твояпрога/твойконфиг

Ну вообще то я так и делал, просто забыл про «share». Я ранее нашёл там конфиги Geany и других прог, поэтому решил, что так проще, если конфиг состоит не из одного файла. С одним мелким файлом можно и в саму прогу засунуть, а при старте при отсутствии файла в ~/.config копируем его туда. Был проект с 500 файлов, и тут я применил архив, всё тоже самое но в /usr/share/твояпрога/архив_500_файлов извлекается при первом старте по отсутствию в ~/.config.

Я надеюсь с сборщике пакетов есть для этого стандартные способы, чтобы не хранить эти файлы в исполняемом или не использовать temp-папки.

У меня штук 50 прог, поэтому конечно же имя фирмы или имя автора должно предшествовать имени проги иначе там бы развелось куча мусора. Мне попадались проги которые свой контент хранят под своим именем, а не в общей «share».

AZJIO
() автор топика
Последнее исправление: AZJIO (всего исправлений: 2)
Ответ на: комментарий от Dorif

оттуда уже юзается системой при создании домашних директорий

Логично, значит попытка генерировать файл при установки провальна. Если пользователь установил прогу, потом создал нового пользователя и проги ему доступны, а вот конфиг уже не сгенерируется. Поэтому да, он должен быть создан либо первым запуском проги из себя или из копии.

AZJIO
() автор топика

В арче в namcap написано

        valid_paths = [
            "etc/",
            "opt/",
            "lib/modules",
            "usr/bin/",
            "usr/include/",
            "usr/lib/",
            "usr/lib32/",
            "usr/sbin/",
            "usr/share/",
            "usr/src/",
            "var/cache/",
            "var/lib/",
            "var/log/",
            "var/opt/",
            "var/spool/",
            "var/state/",

и это правильно. Вот сюда всё и ставь.

sergej ★★★★★
()
Ответ на: комментарий от AZJIO

Если пользователь установил прогу, потом создал нового пользователя и проги ему доступны,

Пользователь не устанавливает прогу. Прогу устанавливает системный администратор (root). И ни в коем случае никакие административные действия не должны лезть в /home, не должны анализировать списки юзеров и что-то вообще по отношению к юзерам предпринимать, за исключением случая когда root запускает что-то типа adduser/deluser итд. Конфиг в уже существующем /home/xxx/ должен создаваться ТОЛЬКО по какому-то действию юзера xxx. Конфиг в ещё не существующем /home/xxx (когда рут создаёт этого юзера) в редких случаях может создаваться автоматически (например конфиг баша), но произвольный софт в эту процедуру лезть тоже не должен.

firkax ★★★★★
()