dpkg --info
не требует разрешения root, в то время как dpkg -i
.Поскольку вы запускаете скрипт в браузере, это означает, что он запускается пользователем php / apache.Я полагаю, что при большинстве установок у этого пользователя нет прав root.
Чтобы преодолеть это, вы можете создать какой-нибудь процессор, который будет иметь следующий шаг:
createqueue
таблица :
- queue_id
- отметка времени
- deb_file
- is_processed
браузерный скрипт :
- после нажатия кнопки установить, вставить запись в таблицу очередей.
процессорный скрипт (скажем queue_processor.php
) :
- при запуске, проверьте, есть ли записи в таблице очередей, чья is_processed = 0
- , если есть:
- update is_processed = 1
- обработать этот файл
- после завершения обработки (установка файла deb), установить is_processed = 2
Последний шаг заключается вустановите queue_processor.php
в crontab и укажите его владельца как root:
* * * * * root /path/to/php/binary/php /path/to/your/queue_processor.php