Описание тега denver
Я пишу помощником Аур в Python.
Он должен скачать аур пакет и установить его через makepkg
и Pacman в -у <пакет>
.
Я столкнулся с проблемой, что мешает мне использовать makepkg
:
==> Ошибка: запуск makepkg в корне не допускается, поскольку это может вызвать permant, катастрофический ущерб вашей системе
Проблема в том, что мне нужно запустить makepkg
как root, так как я скачал пакет с помощью моего скрипта Python через судо
. Я не мог поступить иначе, поскольку Пакман
может быть запущена только с правами root на моей машине.
Я ищу способ, чтобы загрузить в репозиторий, а не корень и использовать Пакман в корень - так, по крайней мере, в скачанной папке не заблокирована получить корневой доступ.
Пока я не выяснил как выбрать между помощью Python подпроцесс
инстанции в качестве корневых и некорневых поскольку все это делается с помощью вызова скрипта через команду sudo
извне.
Пожалуйста, см. мой скрипт:
#!/usr/Бен/ОКР питон3
импорт подпроцесса
импорт argparse
парсер = argparse.ArgumentParser(прог='помощником аур', описание='скачать пакеты Aur')
парсер.add_argument('пакет', помогите='имя пакета, который будет загружен из ОЗМ')
параметр args = парсер.parse_args()
aur_clone_command = "ГИТ https://aur.archlinux.org клон/" + аргументы.пакет + ".ГИТ"
aur_install_command = "Пакман -у" + аргументы.пакет
попробуйте:
завершено = подпроцесса.запустить(aur_clone_command.сплит(), поток stdout=подпроцесса.Трубы)
кроме SubprocessError как подстраховаться:
Print("ошибка: произошла ошибка при загрузке пакета")
печати("исключение: {0}", формат(подстраховались))
выход()
если завершен.код_возврата == 0:
подпроцесс.запустить(aur_install_command.сплит(), поток stdout=подпроцесса.Трубы)
другое:
Print("ошибка: произошла ошибка при загрузке пакета")