Подтвердить что ты не робот

Как вручную установить java-библиотеки и сохранить /tmp как noexec?

Я пытаюсь запустить android sdk на поле, которое должно иметь noexec на /tmp.

Я мог бы указать java tmp в другое место, где я могу выполнить exec, но это победит цель полиции, которая требует noexec в tmp. Так что я пока не хочу этого делать.

Я хотел правильно установить libs, который требуется sdk, но моя java ржавая.

Когда я пытаюсь запустить его, я получаю:

$ Android/Sdk/tools/android 
Exception in thread "main" java.lang.UnsatisfiedLinkError: no swt-gtk-3550 or swt-gtk in swt.library.path, java.library.path or the jar file
    at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
    at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
    at org.eclipse.swt.internal.C.<clinit>(Unknown Source)
    at org.eclipse.swt.internal.Converter.wcsToMbcs(Unknown Source)
    at org.eclipse.swt.internal.Converter.wcsToMbcs(Unknown Source)
    at org.eclipse.swt.widgets.Display.<clinit>(Unknown Source)
    at com.android.sdkmanager.Main.showSdkManagerWindow(Main.java:403)
    at com.android.sdkmanager.Main.doAction(Main.java:391)
    at com.android.sdkmanager.Main.run(Main.java:151)
    at com.android.sdkmanager.Main.main(Main.java:117)

Моя первая попытка обойти это:

$ sudo aptitude install libswt-gtk-3-java...
Selecting previously unselected package libswt-gtk-3-jni.
(Reading database ... 199270 files and directories currently installed.)
Preparing to unpack .../libswt-gtk-3-jni_3.8.2-3_amd64.deb ...
Unpacking libswt-gtk-3-jni (3.8.2-3) ...
Selecting previously unselected package libswt-gtk-3-java.
Preparing to unpack .../libswt-gtk-3-java_3.8.2-3_amd64.deb ...
Unpacking libswt-gtk-3-java (3.8.2-3) ...
Setting up libswt-gtk-3-jni (3.8.2-3) ...
Setting up libswt-gtk-3-java (3.8.2-3) ...

Но я все равно получаю ту же ошибку. Означает ли это, что программа не ищет библиотеки по умолчанию, но намеренно пытается использовать что-то, что она распаковывает на /tmp? Или java распакует банку всегда в /tmp и попытается запустить ее оттуда, и я ничего не могу сделать?

EDIT: Очистить, что причина noexec. Если я запустил приложение с -Djava.io.tmpdir=Android/tmp, тогда все будет работать. И у меня есть следующий контент в новом каталоге tmp:

Android/tmp/
└── swtlib-64
    ├── libswt-gtk-3550.so
    └── libswt-pi-gtk-3550.so

Изменить 2:

$ ANDROID_SWT=/usr/lib/java/
$ ls $ANDROID_SWT/
    swt-gtk-3.8.2.jar
$ Android/Sdk/tools/android 
Exception in thread "main" java.lang.UnsatisfiedLinkError: no swt-gtk-3550 or swt-gtk in swt.library.path, java.library.path or the jar file
...same...
4b9b3361

Ответ 1

Я полагаю, что если вы измените папку инструментов sdk для android (в/opt) для записи с помощью chown, то распаковка произойдет в папке sdk. Вы можете сделать это, создав группу "androidsdk".