如何手动安装java库并将/ tmp保持为noexec?

gcb*_*gcb 15 java linux android

我想在一个盒子,需要有运行Android SDK noexec/tmp.

我可以指出java tmp是另一个我可以执行的地方,但那会noexec破坏tmp 中需要警察的目的.所以我不想那样做.

我想正确安装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)
Run Code Online (Sandbox Code Playgroud)

我第一次尝试解决这个问题是:

$ 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) ...
Run Code Online (Sandbox Code Playgroud)

但我仍然得到同样的错误.这是否意味着该程序不是在寻找默认的libs,而是故意尝试使用它在/ tmp上解压缩的东西?或者java会在/ tmp中解压缩一个jar,并尝试从那里运行它,我什么也做不了?

编辑:清除noexec原因.如果我运行应用程序-Djava.io.tmpdir=Android/tmp,那么一切正常.我在新的tmp目录中有以下内容:

Android/tmp/
??? swtlib-64
    ??? libswt-gtk-3550.so
    ??? libswt-pi-gtk-3550.so
Run Code Online (Sandbox Code Playgroud)

编辑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...
Run Code Online (Sandbox Code Playgroud)

Isa*_*son 1

我相信,如果您将 android sdk 工具文件夹(在 /opt 中)更改为可以使用 进行写入chown,那么解包将在 sdk 文件夹中进行。您可以通过创建“androidsdk”组来做到这一点。