termux / termux-packages

A package build system for Termux.
https://termux.dev
Other
13.38k stars 3.08k forks source link

[Package]: Elasticsearch #9200

Open pmg1991 opened 2 years ago

pmg1991 commented 2 years ago

Package description

Elasticsearch is a distributed, RESTful search and analytics engine capable of addressing a growing number of use cases. As the heart of the Elastic Stack, it centrally stores your data for lightning fast search, fine‑tuned relevancy, and powerful analytics that scale with ease.

Home page URL

https://www.elastic.co/blog/elasticsearch-on-arm

Source code URL

https://www.elastic.co/blog/elasticsearch-on-arm

Packaging policy acknowledgement

Additional information

No response

pmg1991 commented 2 years ago

I'm getting this error : unable to load JNA native support library, native methods will be disabled. java.lang.UnsatisfiedLinkError: /data/data/com.termux/files/home/.cache/JNA/temp /jna10838117941975478408.tmp: dlopen failed: library "libc.so.6" not found at jdk.internal.loader.NativeLibraries.load(Native Method) ~[?:?] at jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibr aries.java:384) ~[?:?] at jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:

xtkoba commented 2 years ago

Yeah, that is because the bundled native libraries are built for GNU/Linux, not for Android. We have to build them ourselves, just like the libjansi case.

kLiHz commented 2 years ago

Sorry to interrupt, but I ran into a similar JNA UnsatisfiedLinkError error when tried running Neo4j on Termux with OpenJDK 11 built by \@Lzhiyong. Things are the same after I tried building Neo4j on Termux with OpenJDK 11 mentioned above.

Does this mean I need to manually patch Neo4j's code and rebuild it? Or would you mind shedding light on what I should probably do?

~ $ export JAVA_HOME=$HOME/jdks/openjdk-11.0.12/
~ $ export PATH=$JAVA_HOME/bin/:$PATH
~ $ cd neo4j/packaging/standalone/target/neo4j-community-4.4.9-SNAPSHOT/
~/.../target/neo4j-community-4.4.9-SNAPSHOT $ bin/neo4j console
Directories in use:
home:         /data/data/com.termux/files/home/neo4j/packaging/standalone/target/neo4j-community-4.4.9-SNAPSHOT
config:       /data/data/com.termux/files/home/neo4j/packaging/standalone/target/neo4j-community-4.4.9-SNAPSHOT/conf
...
Starting Neo4j.
WARNING: Max 32768 open files allowed, minimum of 40000 recommended. See the Neo4j manual.
2022-06-18 04:19:01.855+0000 WARN  Unable to determine total physical memory of machine. JVM is most likely running in a container that do not expose that.
2022-06-18 04:19:01.872+0000 INFO  Starting...
Exception in thread "main" java.lang.UnsatisfiedLinkError: /data/data/com.termux/files/home/.cache/JNA/temp/jna12637054198464966709.tmp: dlopen failed: library "libc.so.6" not found: needed by /data/data/com.termux/files/home/.cache/JNA/temp/jna12637054198464966709.tmp in namespace (default)
        at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
        at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2442)
        at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2498)
        at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2694)
        at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2627)
        at java.base/java.lang.Runtime.load0(Runtime.java:768)
        at java.base/java.lang.System.load(System.java:1837)
        at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:1019)
        at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:989)
        at com.sun.jna.Native.<clinit>(Native.java:195)
        at org.neo4j.internal.unsafe.UnsafeUtil.allocateMemory(UnsafeUtil.java:385)
        at org.neo4j.io.pagecache.impl.muninn.VictimPageReference.getVictimPage(VictimPageReference.java:42)
        at org.neo4j.io.pagecache.impl.muninn.MuninnPageCache.<init>(MuninnPageCache.java:395)
        at org.neo4j.kernel.impl.pagecache.ConfiguringPageCacheFactory.createPageCache(ConfiguringPageCacheFactory.java:117)
        at org.neo4j.kernel.impl.pagecache.ConfiguringPageCacheFactory.getOrCreatePageCache(ConfiguringPageCacheFactory.java:97)
        at org.neo4j.graphdb.factory.module.GlobalModule.createPageCache(GlobalModule.java:392)
        at org.neo4j.graphdb.factory.module.GlobalModule.lambda$new$1(GlobalModule.java:234)
        at org.neo4j.graphdb.factory.module.GlobalModule.tryResolveOrCreate(GlobalModule.java:280)
        at org.neo4j.graphdb.factory.module.GlobalModule.<init>(GlobalModule.java:233)
        at org.neo4j.graphdb.facade.DatabaseManagementServiceFactory.createGlobalModule(DatabaseManagementServiceFactory.java:273)
        at org.neo4j.graphdb.facade.DatabaseManagementServiceFactory.build(DatabaseManagementServiceFactory.java:133)
        at org.neo4j.server.CommunityBootstrapper.createNeo(CommunityBootstrapper.java:36)
        at org.neo4j.server.NeoBootstrapper.start(NeoBootstrapper.java:142)
        at org.neo4j.server.NeoBootstrapper.start(NeoBootstrapper.java:95)
        at org.neo4j.server.CommunityEntryPoint.main(CommunityEntryPoint.java:34)
2022-06-18 04:19:02.333+0000 INFO  Neo4j Server shutdown initiated by request
2022-06-18 04:19:02.334+0000 INFO  Stopped.
Unexpected process failure. See log for info.
Run with '--verbose' for a more detailed error message.
pmg1991 commented 2 years ago

Can this be available ?

TomJo2000 commented 2 years ago

There may be licensing concerns regarding elasticsearch's licensing model. It is unclear from my research into the topic if either:

Or

Are GPL compatible.

pmg1991 commented 2 years ago

In Elastic License 2.0 license , we can't host the Elasticsearch as running service and disable license key functionality . so there is no problem if we don't that.

https://www.elastic.co/pricing/faq/licensing#what-kind-of-use-constitutes-“offering-the-product-as-a-service”-under-sspl

`To be clear, our distributions starting with 7.11 will be provided only under the Elastic License 2.0, which does not have any copyleft aspects and allows free use, modification, and redistribution, with only 3 simple limitations to protect our products and brand, as outlined above.

If you are building Elasticsearch and/or Kibana from source, you may choose between SSPL and the Elastic License to govern your use of the source code. The clause in question only applies if you build from source, choose SSPL as your governing license, and you are providing Elasticsearch and Kibana as a paid service to others. In this case, it applies only if you are “providing Elasticsearch and Kibana as a Managed Service” as the primary offering, or a major part of it.`

aicynide commented 7 months ago

@licy183 is this package possible?

TomJo2000 commented 7 months ago

Due to licensing issues, no not in this repo. Elasticsearch uses a "source available" licensing model under either the SSPL-1.0 or Elastic License 2.0. Neither of which is a free software license under Open Source Initiative (OSI) criteria, and neither is currently accepted for main repo packages on Termux.

Elasticsearch could still be packaged in the Termux User Repository. https://github.com/termux-user-repository/tur

sylirre commented 7 months ago

OpenSearch can be packaged instead: https://github.com/opensearch-project/OpenSearch

SSPL and everything that forbids particular usage type is a no-go.