Стартовый Eclipse от средства запуска Единицы не работает правильно

Когда я запускаю Eclipse со средства запуска Единицы, я получаю это сообщение:

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

спасибо Eliah Kagan

Есть ли какая-либо причина этого?

1
задан 12 August 2012 в 02:51

2 ответа

Может быть две вещи, продолжающиеся здесь:

  • Владение: Файлы, расположенные в корневом каталоге пользователя, могут принадлежать root, когда они должны принадлежать пользователю.

  • Местоположение: Файлы могут быть расположены в rootкорневой каталог (/root) когда они должны быть расположены в корневом каталоге пользователя. (OP понял это, но принял этот ответ, таким образом, я увеличил его для включения этого в пользу других, испытывающих эту проблему.)

Фиксация владения

sudo eclipse выполнения Eclipse как root, но это все еще использует Ваш (то есть, нет root) корневой каталог, чтобы сохранить его файлы. Так как это работает как root, файлы, которые это создает, принадлежат root, и пользователи кроме root не может получить доступ к ним. Результат - это, если Вы работали sudo eclipse однажды, Eclipse может только быть выполнен через sudo eclipse впоследствии, пока проблема не решена.

Это не на самом деле проблема полномочий, это - проблема владения, и решение состоит в том, чтобы взять обратно владение на затронутых файлах и папках. Обычно безопасно быть владельцем всех файлов в Вашей домашней папке. Так, с Eclipse, не работающим, выполняет эту команду:

sudo chown -R $USER:$USER ~

$USER будет расширен оболочкой до Вашего имени пользователя, таким образом, можно выполнить ту команду точно как есть. С другой стороны, если Вы хотите заменить $USER с Вашим фактическим именем пользователя (в этом случае, engine), это работает также.

Как та команда работает:

  • chown команда для изменения владения на файлах и каталогах.
  • ~ сокращение оболочки от Вашего корневого каталога.
  • -R средства это только изменяет владение Вашего корневого каталога, но что операция должна применяться рекурсивно во все файлы, содержавшие где угодно в рамках Вашего корневого каталога.
  • Первое $USER средства Вы будете владельцем файлов. Второе $USER (после того, как :) означает, что группа Вашего пользователя (группа, созданная с Вашей учетной записью пользователя, чтобы быть владельцем группы по умолчанию Ваших файлов), будет владельцем группы.

Для дальнейшего использования:

  • Если необходимо запустить графическое приложение как root, необходимо использовать графическое sudo frontend как gksu/gksudo или kdesudo. Это устанавливает $HOME переменная среды к /root--rootкорневой каталог. (Это также делает копию ~/.Xauthority.)
  • Однако лучше не запустить сложные приложения как Eclipse или Firefox как root вообще, из соображений безопасности. Некоторые графические утилиты должны работать как root работать, но Eclipse не административное средство, и Вы никогда не должны должны быть выполнять его как root. Если Вы делаете, что-то неправильно.

Фиксация местоположения

Поскольку @Engine записал:

Проблемой не был целый каталог, но только папка /tools в android-sdks. Я скопировал его с корневой папки, и затем я дал моему пользователю права владений с:

chown -R $USER:USER ~

То есть это, когда eclipse был выполнен как root, это (по крайней мере в какой-то момент) использовало rootкорневой каталог (не корневой каталог пользователя), и SDK Android был сохранен внутри rootкорневой каталог.

  • Или это или SDK Android, возможно, было вручную установлено как root заранее.

В пользу других с этой проблемой:

  • 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
ответ дан 12 August 2012 в 02:51

Да, я знаю эту проблему.

Проверьте / измените разрешения для папки. (Используйте 755.)

0
ответ дан 12 August 2012 в 02:51

Другие вопросы по тегам:

Похожие вопросы: