当我开始蚀从 Unity 启动器我收到此消息:
Could not find the folder 'tools' inside SDK '/home/engine/android-sdks/'
但是当我在终端中输入
sudo eclipse
它工作正常,运行后
sudo chown -R $USER:$USER ~
我懂了:
/home/engine/.gvfs : Permission denied
之后我尝试过:
engine@Engine:~$ ls -al /home/engine/android-sdks/
我得到了这个:
total 36
drwxrwxr-x 5 engine engine 4096 Jul 31 22:17 .
drwx------ 57 engine engine 20480 Aug 11 10:26 ..
drwxrwxr-x 2 engine engine 4096 Jul 31 22:17 add-ons
drwxrwxr-x 2 engine engine 4096 Jul 31 22:17 platforms
drwxrwxr-x 2 engine engine 4096 Jul 31 22:17 temp
谢谢 伊莱亚·卡根
这有什么原因吗?
答案1
这里可能发生了两件事:
所有权:位于用户主目录中的文件可能归所有
root
,但实际上它们应该归用户所有。地点:文件可能位于
root
的主目录 (/root
) 中,但它们应该位于用户的主目录中。(OP 已经弄清楚了这一点,但接受了这个答案,因此我对其进行了扩充,以包括此内容,以便其他遇到此问题的人受益。)
修复所有权
sudo eclipse
以 Eclipse 形式运行root
,但仍使用你的(即不是root
的)主目录来保存其文件。由于它以 的身份运行root
,因此它创建的文件是拥有,而root
除 之外的用户则root
无法访问它们。结果是,如果您运行sudo eclipse
一次,Eclipse 可以仅有的sudo eclipse
之后通过直到问题解决。
这实际上并不是权限问题,这是一个所有权问题,解决方案是重新获得受影响文件和文件夹的所有权。通常情况下,成为全部主文件夹中的文件。因此,使用 Eclipse不是正在运行,运行此命令:
sudo chown -R $USER:$USER ~
$USER
shell 会将 扩展为您的用户名,因此您可以按原样运行该命令。或者,如果您想$USER
用实际用户名(在本例中为engine
)替换 ,也可以这样做。
该命令的工作原理:
chown
是更改文件和目录所有权的命令。~
是 shell 对你的主目录的简写。-R
意味着它不仅仅是改变你的主目录的所有权,而且该操作是应用递归地,包含于您的主目录中任何位置的所有文件。- 第一个
$USER
表示您将成为文件的所有者。第二个$USER
(在 之后:
)表示您的用户组(使用您的用户帐户创建的组,将成为您文件的默认组所有者)将成为组所有者。
备查:
- 如果你必须运行图形应用程序
root
,你应该使用图形sudo
前端喜欢gksu
/gksudo
或者kdesudo
。这会将$HOME
环境变量设置为/root
--root
的主目录。(它还会复制~/.Xauthority
。 - 但是,出于安全原因,最好不要以 身份运行复杂的应用程序,例如 Eclipse 或 Firefox。
root
某些图形实用程序必须以 身份运行才能root
工作,但 Eclipse 不是管理工具,您永远不需要以 身份运行它root
。如果您这样做,那就出问题了。
固定位置
正如@Engine所写:
问题不在于整个目录,而只是文件夹
/tools
中android-sdks
。我从根文件夹复制了它,然后我使用以下命令授予我的用户所有权:chown -R $USER:USER ~
也就是说,当eclipse
作为运行时root
,它(至少在某个时候)使用了root
的主目录(而不是用户的主目录),并且 Android SDK 存储在的root
主目录中。
- 要么这样,要么可以像
root
之前一样手动安装 Android SDK。
为了其他有同样问题的人的利益:
tools
可以使用以下命令从内部复制该文件夹/root
:sudo cp -R /root/android-sdks/tools ~/android-sdks/
或者你可以移动文件
tools
夹(而不是复制):sudo mv /root/android-sdks/tools ~/android-sdks/
然后如上所述修复所有权。或者,仅针对重新定位的tools
文件夹,使用:
sudo chown -R $USER:$USER ~/android-sdks/tools
答案2
是的,我知道这个问题。
检查/更改文件夹的权限。(使用 755。)