![Umake-在主目录之外安装时权限被拒绝(即使以 root 身份)](https://linux22.com/image/1143279/Umake-%E5%9C%A8%E4%B8%BB%E7%9B%AE%E5%BD%95%E4%B9%8B%E5%A4%96%E5%AE%89%E8%A3%85%E6%97%B6%E6%9D%83%E9%99%90%E8%A2%AB%E6%8B%92%E7%BB%9D%EF%BC%88%E5%8D%B3%E4%BD%BF%E4%BB%A5%20root%20%E8%BA%AB%E4%BB%BD%EF%BC%89.png)
我正在尝试使用 umake 安装 firefox-dev。默认情况下,umake 安装路径是~/.local/share/
;我更希望它在/usr/local/
或中/opt/
。
问题似乎是 umake(或者更确切地说,它运行的 os.py 脚本)没有创建文件/目录的权限 - 即使我以提升的管理员用户身份运行sudo
,或者使用 切换到根用户,也会发生这种情况sudo -i
。
以下是相关错误的示例:
os.makedirs(self.install_path, exist_ok=True)
File "/usr/lib/python3.5/os.py", line 231, in makedirs
makedirs(head, mode, exist_ok)
File "/usr/lib/python3.5/os.py", line 241, in makedirs
mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/opt/umake'
有没有办法使用 umake 在 /home/ 目录之外安装二进制文件?
编辑:命令 run - 中没有什么异常sudo umake web firefox-dev
。无论我在哪里运行它。
至于安装路径(在安装尝试期间输入提示符),我再次尝试了所有选项,从明确声明的绝对路径(包括自己创建目录树,最终并且不出所料,只是将错误消息推回到文件创建)到目标目录并使用'./'。
我自己以 root 身份执行任何操作绝对没有任何问题,但这些权限似乎没有被 python 安装脚本继承。
答案1
好吧,事实证明这是一个(相当长期的)问题使用 Ubuntu Make。
上面的链接中,一位开发人员建议了几种解决方法。
第一个(首选)解决方案:
sudo -s
unset SUDO_UID
unset SUDO_GID
然后正常运行umake
以安装您的应用程序 - 您现在可以将其安装到您想要的任何目录。运行完美。
第二种选择是预先创建所需的安装文件夹并设置安装目录的权限,以便非 root 用户可以写入,但我在某些应用程序中使用此方法时遇到了问题,即使以递归方式应用权限并umake
使用 执行也是如此sudo
。我坚持使用第一种方法。