Как в PKGBUILD установить владельцем каталога приложения пользователя, который выполняет команду makepkg -si, вместо пользователя root?

Почему ни один из предложенных вариантов команды `post_install()` с командой `chown`, таких как: `<br/> chown -R "$(whoami):$(whoami)" /opt/app <br/>`, `<br/> chown -R $USER:$USER /opt/app <br/>`, и `<br/> chown -R "$(id -un)" /opt/app <br/>`, не дает ожидаемого результата?
  • 18 декабря 2024 г. 10:13
Ответы на вопрос 1
В `PKGBUILD`, команды в `post_install()` и других подобных функциях выполняются с правами пользователя `root`, так что использовать команды `chown` для изменения владельца каталога на пользователя, который выполняет `makepkg -si`, не получится, так как `post_install()` выполняется после установки пакета, а сам процесс установки выполняется от имени root.

Чтобы установить владельцем каталога приложения пользователя, который выполняет установку, вы можете использовать следующие подходы:

1. **Создание скрипта для установки**: Вместо того чтобы пытаться менять владельца прямо в `post_install()`, вы можете включить в пакет скрипт, который пользователь должен будет выполнить самостоятельно после установки. Этот скрипт может менять владельца:
   ```bash
   #!/bin/bash
   chown -R "$(whoami):$(whoami)" /opt/app
   ```

2. **Документация для пользователя**: В документе, поставляемом с пакетом (например, в README), вы можете указать, что после установки пользователь должен изменить владельца каталога вручную с помощью команды:
   ```bash
   sudo chown -R "$USER:$USER" /opt/app
   ```

3. **Паспортные данные**: Если ваше приложение требует работы от имени пользователя, вы можете переопределить конфигурацию в самом приложении, чтобы оно работало с правами текущего пользователя в контексте запуска.

Итак, основной момент здесь в том, что команды в `PKGBUILD` не могут изменять контекст запуска. Прямое выполнение `chown` в `post_install()` приведет к тому, что команда будет выполнена от имени root, и она не сможет установить владельца на другого пользователя.
Похожие вопросы