diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b1428e24b512393d1f3988c9cd5eb52dc2cbd49d..aa44235194fe12257f8176024b88cd81e4a9d19d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -75,11 +75,7 @@ cache:
         - dpdk-*
         - netmap-$NETMAP_VERSION
 before_script:
-    - if ( command -v apt-get &> /dev/null ) ; then
-        echo "Installing dependencies..." ;
-        apt-get update -yqq && apt-get install -yqq build-essential sudo wget libelf-dev pkg-config zlib1g-dev libnuma-dev python3-pyelftools ninja-build meson linux-headers-$(uname -r) python3-pip ;
-
-      fi;
+    - sh deps.sh
     - gcc -v
     - if [ ! -e "netmap-$NETMAP_VERSION/sys/net/netmap.h" ] ; then wget https://github.com/luigirizzo/netmap/archive/v$NETMAP_VERSION.tar.gz && tar -xvf v$NETMAP_VERSION.tar.gz && ( cd netmap-$NETMAP_VERSION && cd LINUX && ./configure --no-drivers ; cd .. && cd .. ) ; fi
     - ls -al
diff --git a/deps.sh b/deps.sh
new file mode 100644
index 0000000000000000000000000000000000000000..fb5870df5487b1df57168eb77d91e4be88dc4289
--- /dev/null
+++ b/deps.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+echo "Installing dependencies..." ;
+if ( command -v apt-get &> /dev/null ) ; then
+    echo "Using apt-get"        
+    apt-get update -yqq && apt-get install -yqq build-essential sudo wget libelf-dev pkg-config zlib1g-dev libnuma-dev python3-pyelftools ninja-build meson linux-headers-$(uname -r) python3-pip
+elif ( command -v apk &> /dev/null ) ; then
+    echo "Using apk"
+    apk add --no-cache  wget gcc libelf numactl python3 pkgconf zlib-dev py3-pip g++ py3-elftools autoconf build-base bsd-compat-headers linux-headers gcompat libstdc++
+fi
+
diff --git a/elements/userlevel/fromdevice.cc b/elements/userlevel/fromdevice.cc
index 709306bc0ad96d11177fbbfd492ed0ac9c060900..b5d2c99fc970dbf3f95a9ea362842cec331cc01a 100644
--- a/elements/userlevel/fromdevice.cc
+++ b/elements/userlevel/fromdevice.cc
@@ -43,6 +43,8 @@
 #include <click/packet_anno.hh>
 #include <click/standard/scheduleinfo.hh>
 #include <click/userutils.hh>
+#include <netinet/if_ether.h>
+#define _LINUX_IF_ETHER_H 1
 #include <linux/ethtool.h>
 #include <linux/netlink.h>
 #include <unistd.h>
diff --git a/include/click/llrpc.h b/include/click/llrpc.h
index 601757ce015bf243bd612bd28043e5e2c0cac2c4..0c6a112b84532fc60146359547c5559d64a3f06c 100644
--- a/include/click/llrpc.h
+++ b/include/click/llrpc.h
@@ -14,6 +14,7 @@ CLICK_CXX_UNPROTECT
 #else
 # include <errno.h>
 # include <sys/ioctl.h>
+# include <asm/ioctl.h>
 #endif
 
 /* Click low-level RPC interface */
diff --git a/lib/flow.cc b/lib/flow.cc
index 69596ee1c736690e66d7634488114ba077112ce2..73c7cc29e4ea424fe6543c3cf377e5c61ea8cf62 100644
--- a/lib/flow.cc
+++ b/lib/flow.cc
@@ -21,6 +21,7 @@
 #include <click/config.h>
 #include <click/glue.hh>
 #include <stdlib.h>
+#include <byteswap.h>
 #include <regex>
 #include <click/flow/flow.hh>
 #include <click/flow/flowelement.hh>