Seafile server on arm64 (aarch64). - WORKING


#1

Hey!

I just landed into seafile, and found out that you have a wonderful RPi server! Thanks for that!

On the other side, my RPi is busy with some video content, so I wanted to try the server on my Pine64, which is arm64 (aarch64) linux powered… But, it failed miserably.
It’s something I can do to help development on the aarch architecture? I’d be happy to use one of my boxes to compile seafile in aarch64…


Now, the workaround/how-to to make it work on a aarch64, but I warn you: It’s very ugly.

> Generating ccnet configuration in /home/seafile/ccnet...
> ./setup-seafile.sh: line 483: /home/seafile/seafile-server-6.0.6/seafile/bin/ccnet-init: No such file or directory

and doing a fast “file”, it looks for the ld.linux.armhf, which I don’t have on my box…

> seafile@pine64:~/seafile-server-6.0.6$ file /home/seafile/seafile-server-6.0.6/seafile/bin/ccnet-init
> /home/seafile/seafile-server-6.0.6/seafile/bin/ccnet-init: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.26, BuildID[sha1]=3202b5db82317ff70cbfc50e050c436d8919f72c, stripped

The thing is, it doesn’t find it because is libc6-aarch64, not libc6-armhf (Although aarch64 is still architecture compatible). So… installing cross libraries and some armhf libs by hand, ccnet-init executed and the installer resulted ok:

created symlink to the ld.linux-armhf.so.3 and also libselinux1 on a common place and updated LD_LIBRARY_PATH:
export LD_LIBRARY_PATH=/usr/arm-linux-gnueabihf/lib/:/home/seafile/lib/arm-linux-gnueabihf/

And voilá, setup finished, seafile started and seahub working also.

> seafile@pine64:~/seafile-server-6.0.6$ LD_LIBRARY_PATH=/usr/arm-linux-gnueabihf/lib/:/home/seafile/lib/arm-linux-gnueabihf/ ./seafile.sh start

> [12/07/16 16:44:52] ../common/session.c(132): using config file /home/seafile/conf/ccnet.conf
> Starting seafile server, please wait ...
> Seafile server started

> Done.

Please contact me if willing to compile on aarch64 and need anything…
Draakuns.


Seafile installation issue on Raspberry PI, aarch64
#2

When you say

“So… installing cross libraries and some armhf libs by hand”

created symlink to the ld.linux-armhf.so.3 and also libselinux1 on a common place and updated LD_LIBRARY_PATH:
export LD_LIBRARY_PATH=/usr/arm-linux-gnueabihf/lib/:/home/seafile/lib/arm-linux-gnueabihf/

can you please provide the details? I am struggling to make it work on my arm64 (odroid-c2) device.


#3

Wow! So I finally figured it out and managed to run Seafile on Odroid-C2.

It is much easier than I expected. I am running the raspberry server version of Seafile (v 6.6), available at https://github.com/haiwen/seafile-rpi/releases

On my Odroid-C2, I am running diet-pi, but I am sure it will also work with most other debian-based distributions.

Here goes the step-by-step, after booting up diet-pi, and connecting it to the internet:

  1. Add armhf as a supported architecture:

dpkg --add-architecture armhf

  1. Update your packages:

apt-get update

  1. Install aptitude

apt-get install aptitude

  1. Install libc6:armhf using aptitude*

aptitude install libc6:armhf

  1. Download and untar Seafile from https://github.com/haiwen/seafile-rpi/releases

  2. Install seafile`s dependencies

sudo aptitude -y install python2.7 python-setuptools python-simplejson python-imaging sqlite3

  1. Install seafile!

./setup-seafile.sh

  1. Profit!

*The reason I am using aptitude to install libc6 is that diet-pi main aarch64 repository contains a newer libc6 than the one available at the armhf repository. However, aptitude detects this problem an offers you the possibility of downgrading automatically.

I find it awesome that armhf is compatible with aarch64! This approach can be used to run many other apps that are still not compiled especifically for aarch64.


#4

Thanks relima, this was useful!
I just setup my seafile server on odroid-c2 running hardkernel ubuntu image.

After

dpkg --add-architecture armhf
apt-get update

I needed to install

apt install libselinux1:armhf
apt install libssl1.0.0:armhf
apt install sqlite3:armhf

to let the installer execute properly. After that all went well :slight_smile:


#5

So I was trying to get this working in a NanoPi NEO2, a 64 bit ARM SBC:

Operating System: Debian GNU/Linux 9 (stretch)
Kernel: Linux 4.14.18-sunxi64
Architecture: arm64

Just following the instructions on the manual I got:
OSError: [Errno 2] No such file or directory

After installing libc6:armhf via apt-get install libc6:armhf I get:

Generating ccnet configuration ...

/mnt/SU1/apps/seafile/seafile-server-6.2.5/seafile/bin/ccnet-init: error while loading shared libraries: libselinux.so.1: cannot open shared object file: No such file or directory

So as suggested by @gitbock I tried apt-get install libselinux1:armhf libssl1.0.0:armhf however:

Package 'libssl1.0.0:armhf' has no installation candidate

And then I tried to run the setup again and I get:

Generating ccnet configuration ...


Error: Failed to generate ccnet configuration

Any tips on how to debug / fix this? Thank you.


#6

Here is my *very detailed guide on how to compile seahub in ARM64: Compilation ARM64: hitting wall after wall.

Or… you can grab my ARM64 compiled version from here https://cdn.iklive.eu/tcb13/2018/seafile-server_6.3.0_arm64.tar.gz