Seafile server on arm64 (aarch64). - WORKING

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.

2 Likes

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.

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 Releases · haiwen/seafile-rpi · GitHub

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 Releases · haiwen/seafile-rpi · GitHub

  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.

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:

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.

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

2 Likes

Thank you, your compiled version is good, working on Rockpro64 with Ubuntu 18.04

1 Like

what about update seafile ?

Hello,

Curious … doesn’t seem to be much movement on ARM64. But, I’m wondering if it is possible to slap this together in, or as, a Docker container?