diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d27630cb06195b8cf495774f6010e7aea46a15ee..01093e1363ad4aef29ffda525d0858a1b3fcab8e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -29,11 +29,8 @@ test:linux:amd64:
 
 deckard:linux:amd64:
   stage: test
-  before_script:
-    - git submodule update --init --recursive
   script:
-    - mkdir -p tests/deckard/contrib/libswrap/obj
-    - MAKEFLAGS="-j $(nproc)" LD_LIBRARY_PATH=$(pwd)/.local/lib TESTS=sets/resolver DAEMON=$(pwd)/.local/sbin/kresd tests/deckard/kresd_run.sh
+    - PREFIX=$(pwd)/.local MAKEFLAGS="--jobs $(nproc) --keep-going" make check-integration
   dependencies:
     - build:linux:amd64
   tags:
diff --git a/tests/tests.mk b/tests/tests.mk
index f7e174e65f96017373a0ed7c1b795c0403c1c710..95244401357c8e0f45ced27731598c01919e3a8f 100644
--- a/tests/tests.mk
+++ b/tests/tests.mk
@@ -9,11 +9,18 @@ endif
 deckard_DIR := tests/deckard
 TESTS := sets/resolver
 TEMPLATE := template/kresd.j2
+
+REAL_PREFIX=$(realpath $(PREFIX))
+REAL_CURDIR=$(realpath $(CURDIR))
+
 $(deckard_DIR)/Makefile:
 	@git submodule update --init --recursive
+
 check-integration: $(deckard_DIR)/Makefile
+	$(if $(findstring $(REAL_CURDIR),$(REAL_PREFIX)),, $(warning Warning: PREFIX does not point into source directory; testing the installed version!))
 	@mkdir -p $(deckard_DIR)/contrib/libswrap/obj
-	@$(MAKE) -s -C $(deckard_DIR) TESTS=$(TESTS) DAEMON=$(abspath daemon/kresd) TEMPLATE=$(TEMPLATE) DYLD_LIBRARY_PATH=$(DYLD_LIBRARY_PATH)
+	+TESTS=$(TESTS) DAEMON=$(abspath $(SBINDIR)/kresd) TEMPLATE=$(TEMPLATE) $(preload_syms) $(deckard_DIR)/kresd_run.sh
+
 deckard: check-integration
 
 # Targets