Zrok-share failes to install on raspberry pi 4

Hi there,

I was reading another thread that would help me do exactly what i need to do:

The problem i'm running into is when i attempt to install zrok-share on my raspberry pi 4 i get an error that says:

Skipping acquire of configured file 'main/binaryy-armhf/Packages' as repository 'https://packages.openziti.org/zitipax-openziti-deb-stable debian InRelease' doesnt support architecture 'armhf'

I tried also manually downloading and running the script but to no avail.

I didn't have any issues at all installing zrok on my raspberry pi, so if there is not a way to install zrok-share or a work around, could it be possible to manually run zrok as a sysytemd service?

thanks!

1 Like

Welcome, @Sath!

The Linux package is available for 64-bit ARM architecture, but your RasPi 4 is running the 32-bit version of Raspbian, I presume.

You have two options:

  1. install the 64-bit version of Raspbian on your device: (https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-64-bit), then re-do the steps that led you to the error about unsupported architecture armhf. It will work this time.
  2. manually configure the 32-bit version of zrok. This might work just fine for you! Here's an overview:
    1. Download the 32-bit zrok executable from https://github.com/openziti/zrok/releases/download/v0.4.25/zrok_0.4.25_linux_armv7.tar.gz and un-zip it, then follow the getting started doc to enable zrok.
    2. You can use a simple approach like a terminal multiplexer (screen, tmux) to keep a zrok share running after you log out. You can also create a system service for each share like that other forum post you linked.

Just let me know if you want a more specific example for one or the other approach.

2 Likes

thanks qrkourier!

I was able to create multiple services with systemd last night that run the zrok share commands, so I'm good to go! Also you're 100% right, i am running the 32bit raspberry pi OS. Thanks for the fast response, loving zrok!

3 Likes

Could you help me? I am facing almost the same problem mentioned above when I try to follow the steps for installing the 'Script to set up DEB or RPM repository' on a BeagleBone Black. I tried to follow the step mentioned in the response, but after downloading the latest armv7 package and extracting it, I got lost on how to proceed with the installation. I tried to give permission to the 'zrok' file and execute it with ./zrok, but I always get the error that there is no such file (I checked a thousand times if I was in the correct directory haha). I am still learning more about Linux in general, so if you could be very detailed, I would greatly appreciate it! (I cannot attach images because I am new to the forum)

debian@beaglebone:~$ curl -sSLfo ./zrok-install.bash https://get.openziti.io/install.bash
debian@beaglebone:~$ less ./zrok-install.bash
debian@beaglebone:~$
debian@beaglebone:~$ sudo bash ./zrok-install.bash zrok
[sudo] password for debian:
Get:1 http://security.debian.org/debian-security buster/updates InRelease [34.8 kB]
Hit:2 http://deb.debian.org/debian buster InRelease
Hit:3 http://deb.debian.org/debian buster-updates InRelease
Hit:5 http://ppa.launchpad.net/linuxuprising/java/ubuntu focal InRelease
Get:7 https://ngrok-agent.s3.amazonaws.com buster InRelease [20.3 kB]
Get:8 https://packages.openziti.org/zitipax-openziti-deb-stable debian InRelease [4,269 B]
Get:4 https://repos.rcn-ee.com/debian buster InRelease [3,078 B]
Get:6 https://adoptopenjdk.jfrog.io/adoptopenjdk/deb buster InRelease [11.5 kB]
Err:6 https://adoptopenjdk.jfrog.io/adoptopenjdk/deb buster InRelease
  Clearsigned file isn't valid, got 'NOSPLIT' (does the network require authentication?)
Get:9 http://security.debian.org/debian-security buster/updates/main armhf Packages [591 kB]
Get:10 https://ngrok-agent.s3.amazonaws.com buster/main armhf Packages [3,760 B]
Get:11 https://repos.rcn-ee.com/debian buster/main armhf Packages [2,405 kB]
Reading package lists... Done
E: Failed to fetch https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/dists/buster/InRelease  Clearsigned file isn't valid, got 'NOSPLIT' (does the network require authentication?)
E: The repository 'https://adoptopenjdk.jfrog.io/adoptopenjdk/deb buster InRelease' is no longer signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
N: Skipping acquire of configured file 'main/binary-armhf/Packages' as repository 'https://packages.openziti.org/zitipax-openziti-deb-stable debian InRelease' doesn't support architecture 'armhf'
debian@beaglebone:~$ zrok version
-bash: zrok: command not found
debian@beaglebone:~$ uname -m
armv7l
debian@beaglebone:~$ uname -a
Linux beaglebone 4.19.94-ti-r68 #1buster SMP PREEMPT Thu Sep 16 15:32:31 UTC 2021 armv7l GNU/Linux
debian@beaglebone:~$

Welcome to the ziti and zrok forum, @UlissesZorzan!

I'm unsure why the package installation method failed. The error indicates a CPU architecture mismatch, but we do build the "zrok" package for armhf.

Will you help me to diagnose this problem?

Please try to install this DEB file directly.

wget https://packages.openziti.org/zitipax-openziti-deb-stable/pool/zrok/armv7/zrok_0.4.30-1_armhf.deb
sudo apt install ./zrok_0.4.30-1_armhf.deb

I'm curious to learn if this works on your Beaglebone SBC. I assume it has the ARM Cortex-A8 based CPU, which is an ARM 32bit processor implementing ARM-v7A. This should work with zrok's ARM (32bit) binary.

If installing that DEB directly doesn't yield an executable zrok, please paste here the verbatim terminal messages from trying to run zrok.

Then, if that has failed to execute, please try running this binary build instead of the using the binary from the Linux package.

sudo apt remove zrok
wget https://github.com/openziti/zrok/releases/download/v0.4.30/zrok_0.4.30_linux_armv7.tar.gz
tar -xzf ./zrok_0.4.30_linux_armv7.tar.gz
sudo install ./zrok /usr/local/bin/zrok
zrok version

Thank you for you help!

I followed the procedures as described earlier, but neither of the proposed solutions worked. Below are the terminal results, and I am available to help in any way I can because I really need this solution haha.

Solution 1)

debian@beaglebone:~$ sudo apt install ./zrok_0.4.30-1_armhf.deb
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'zrok' instead of './zrok_0.4.30-1_armhf.deb'
The following NEW packages will be installed:
  zrok
0 upgraded, 1 newly installed, 0 to remove and 5 not upgraded.
Need to get 0 B/24.4 MB of archives.
After this operation, 76.7 MB of additional disk space will be used.
Get:1 /home/debian/zrok_0.4.30-1_armhf.deb zrok armhf 0.4.30-1 [24.4 MB]
Selecting previously unselected package zrok.
(Reading database ... 31743 files and directories currently installed.)
Preparing to unpack .../debian/zrok_0.4.30-1_armhf.deb ...
Unpacking zrok (0.4.30-1) ...
Setting up zrok (0.4.30-1) ...
debian@beaglebone:~$ zrok status
-bash: /usr/bin/zrok: No such file or directory
debian@beaglebone:~$

Solution 2)

debian@beaglebone:~$ sudo apt remove zrok
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
  zrok
0 upgraded, 0 newly installed, 1 to remove and 5 not upgraded.
After this operation, 76.7 MB disk space will be freed.
Do you want to continue? [Y/n] Y
(Reading database ... 31747 files and directories currently installed.)
Removing zrok (0.4.30-1) ...
debian@beaglebone:~$ wget https://github.com/openziti/zrok/releases/download/v0.4.30/zrok_0.4.30_linux_armv7.tar.gz
--2024-06-10 12:50:23--  https://github.com/openziti/zrok/releases/download/v0.4.30/zrok_0.4.30_linux_armv7.tar.gz
Resolving github.com (github.com)... 20.201.28.151
Connecting to github.com (github.com)|20.201.28.151|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/515311500/c2cccf51-c651-4b06-b47a-4a15de21748b?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releaseassetproduction%2F20240610%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240610T155024Z&X-Amz-Expires=300&X-Amz-Signature=64440e02c183d55534759a2fcea0ea297b161d63e4c0de8544e5c0be3b7d0116&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=515311500&response-content-disposition=attachment%3B%20filename%3Dzrok_0.4.30_linux_armv7.tar.gz&response-content-type=application%2Foctet-stream [following]
--2024-06-10 12:50:24--  https://objects.githubusercontent.com/github-production-release-asset-2e65be/515311500/c2cccf51-c651-4b06-b47a-4a15de21748b?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releaseassetproduction%2F20240610%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240610T155024Z&X-Amz-Expires=300&X-Amz-Signature=64440e02c183d55534759a2fcea0ea297b161d63e4c0de8544e5c0be3b7d0116&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=515311500&response-content-disposition=attachment%3B%20filename%3Dzrok_0.4.30_linux_armv7.tar.gz&response-content-type=application%2Foctet-stream
Resolving objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.110.133, 185.199.108.133, 185.199.111.133, ...
Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.110.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 24330233 (23M) [application/octet-stream]
Saving to: ‘zrok_0.4.30_linux_armv7.tar.gz’

zrok_0.4.30_linux_armv7. 100%[==================================>]  23.20M  3.60MB/s    in 6.6s

2024-06-10 12:50:31 (3.50 MB/s) - ‘zrok_0.4.30_linux_armv7.tar.gz’ saved [24330233/24330233]
debian@beaglebone:~$ tar -xzf ./zrok_0.4.30_linux_armv7.tar.gz
debian@beaglebone:~$ sudo install ./zrok /usr/local/bin/zrok
-bash: /usr/bin/zrok: No such file or directory

Great, thank you. Now let's analyze the binary you installed with the install command. Will you please provide the verbatim output from this script?

for BIN in $(which zrok) {/opt/openziti,/usr{,/local}}/bin/zrok
do
  if [[ -f ${BIN} ]]
  then
    echo -e "\nINFO: ${BIN} exists"
    ls -lnh ${BIN}
    file ${BIN}
    if ! [[ -L ${BIN} ]]
    then
      ldd ${BIN}
    fi
  else
    echo -e "\nINFO: ${BIN} does not exist"
  fi
done

I executed the requested script after having performed the second installation attempt mentioned earlier, is that correct?

debian@beaglebone:~$ for BIN in $(which zrok) {/opt/openziti,/usr{,/local}}/bin/zrok
> do
>   if [[ -f ${BIN} ]]
>   then
>     echo -e "\nINFO: ${BIN} exists"
>     ls -lnh ${BIN}
>     file ${BIN}
>     if ! [[ -L ${BIN} ]]
>     then
>       ldd ${BIN}
>     fi
>   else
>     echo -e "\nINFO: ${BIN} does not exist"
>   fi
> done

INFO: /usr/local/bin/zrok exists
-rwxr-xr-x 1 0 0 74M Jun 10 12:51 /usr/local/bin/zrok
/usr/local/bin/zrok: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, BuildID[sha1]=e98708afab31c09faca67916d1960d3b9522bcac, for GNU/Linux 3.2.0, stripped
        not a dynamic executable

INFO: /opt/openziti/bin/zrok does not exist

INFO: /usr/bin/zrok does not exist

INFO: /usr/local/bin/zrok exists
-rwxr-xr-x 1 0 0 74M Jun 10 12:51 /usr/local/bin/zrok
/usr/local/bin/zrok: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, BuildID[sha1]=e98708afab31c09faca67916d1960d3b9522bcac, for GNU/Linux 3.2.0, stripped
        not a dynamic executable

Thanks, the ldd command didn't run for some reason. Will you report this one too?

ldd /usr/local/bin/zrok

Now I see "not a dynamic executable," confirming that ldd reports it's not dynamically linked. This rules out the concern I had that it may be using CGO and missing a link or have a GLIBC version mismatch.

The output from file and ldd is contradictory, indicating binary corruption or an incompatible format with ldd.

Let's see what this reveals. If readelf reveals a different interpreter, please show its file properties too.

type zrok
readelf -a /usr/local/bin/zrok | grep "Requesting program interpreter"
ls -l /lib/ld-linux.so.3 $(realpath /lib/ld-linux.so.3)

Please confirm that executing zrok version results in error "command not found."

I checked that there is no ld-linux-armhf.so.3 but there is ld-linux-armhf.so.3.

debian@beaglebone:~$ type zrok
zrok is /usr/local/bin/zrok
debian@beaglebone:~$ readelf -a /usr/local/bin/zrok | grep "Requesting program interpreter"
      [Requesting program interpreter: /lib/ld-linux.so.3]
debian@beaglebone:~$ ls -l /lib/ld-linux.so.3 $(realpath /lib/ld-linux.so.3)
ls: cannot access '/lib/ld-linux.so.3': No such file or directory
ls: cannot access '/lib/ld-linux.so.3': No such file or directory
debian@beaglebone:~$ sudo ls -l /lib/ld-linux.so.3 $(realpath /lib/ld-linux.so.3)
[sudo] password for debian:
ls: cannot access '/lib/ld-linux.so.3': No such file or directory
ls: cannot access '/lib/ld-linux.so.3': No such file or directory
debian@beaglebone:~$ zrok version
-bash: /usr/local/bin/zrok: No such file or directory
debian@beaglebone:~$ cd /usr/local/bin/
debian@beaglebone:/usr/local/bin$ ls
zrok
debian@beaglebone:/usr/local/bin$ ls -lha
total 74M
drwxr-xr-x  2 root root 4.0K Jun 10 12:51 .
drwxr-xr-x 10 root root 4.0K Oct  1  2021 ..
-rwxr-xr-x  1 root root  74M Jun 10 12:51 zrok
debian@beaglebone:/usr/local/bin$ cd /lib/
debian@beaglebone:/lib$ ls
arm-linux-gnueabihf  cryptsetup  klibc-PupSAGgtpafMlSLXOLgje1kXFo8.so  modules
console-setup        firmware    ld-linux-armhf.so.3                   systemd

Does adding this link enable you to exec zrok?

sudo ln -s /lib/ld-linux-armhf.so.3 /lib/ld-linux.so.3
debian@beaglebone:/lib$ sudo ln -s /lib/ld-linux-armhf.so.3 /lib/ld-linux.so.3
[sudo] password for debian:
debian@beaglebone:/lib$ zrok version
               _
 _____ __ ___ | | __
|_  / '__/ _ \| |/ /
 / /| | | (_) |   <
/___|_|  \___/|_|\_\

v0.4.30 [96bfe62c]

debian@beaglebone:/lib$
1 Like

Excellent. I'll see about tailoring our build to either include that missing link or change the path of the interpreter. Thanks so much for lending your Beaglebone to testing to get this working for everyone.

1 Like

Thank you! So for now, what is the most correct step-by-step process you recommend for me to follow to replicate this?

The problem is that the binary's interpreter, a hard-coded file path (/lib/ld-linux.so.3), doesn't exist.

The workaround is to install the arm Linux package and create the symlink.

Issue tracking: wrong interpreter path on some armv7 ABI's · Issue #642 · openziti/zrok · GitHub

1 Like