diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # cpkg
 
+## 0.2.3.4
+
+  * Use `libarchive` 2.0.0.0
+
 ## 0.2.3.3
 
   * Add `find` subcommand
diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -4,6 +4,7 @@
 import           Data.Semigroup
 import qualified Data.Text           as T
 import qualified Data.Version        as V
+import           Dhall.Version       (dhallVersionString)
 import           Options.Applicative hiding (auto)
 import           Package.C           hiding (Command, name)
 import qualified Paths_cpkg          as P
@@ -12,9 +13,6 @@
 cpkgVersion :: V.Version
 cpkgVersion = P.version
 
--- dhallStandardVersion
--- dhallVersion
-
 data DumpTarget = Linker { _pkgGet :: String }
                 | Compiler { _pkgGet :: String }
                 | PkgConfig { _pkgGets :: [String] }
@@ -55,7 +53,7 @@
     <> header "cpkg - a build tool for C")
 
 versionInfo :: Parser (a -> a)
-versionInfo = infoOption ("cpkg version: " ++ V.showVersion cpkgVersion) (short 'V' <> long "version" <> help "Show version")
+versionInfo = infoOption ("cpkg version: " ++ V.showVersion cpkgVersion ++ "\n" ++ "dhall version: " ++ dhallVersionString) (short 'V' <> long "version" <> help "Show version")
 
 dumpTarget :: Parser DumpTarget
 dumpTarget = hsubparser
diff --git a/cpkg.cabal b/cpkg.cabal
--- a/cpkg.cabal
+++ b/cpkg.cabal
@@ -1,6 +1,6 @@
 cabal-version:      1.18
 name:               cpkg
-version:            0.2.3.3
+version:            0.2.3.4
 license:            BSD3
 license-file:       LICENSE
 copyright:          Copyright: (c) 2018-2019 Vanessa McHale
@@ -98,7 +98,7 @@
         filemanip -any,
         network-uri -any,
         megaparsec -any,
-        libarchive >=1.0.4.0,
+        libarchive >=2.0.0.0,
         dir-traverse >=0.2.1.0,
         composition-prelude >=1.5.2.0,
         lzlib >=0.2.0.0
@@ -131,7 +131,8 @@
         cpkg -any,
         optparse-applicative -any,
         directory -any,
-        text -any
+        text -any,
+        dhall >=1.26.1
 
     if (flag(development) && impl(ghc <=8.2))
         ghc-options: -Werror
diff --git a/dhall/cpkg-prelude.dhall b/dhall/cpkg-prelude.dhall
--- a/dhall/cpkg-prelude.dhall
+++ b/dhall/cpkg-prelude.dhall
@@ -301,7 +301,7 @@
     in
     let arch = x.cfg.buildArch
     in
-    let flag = concatMapSep ":" Text (λ(dir : Text) → dir ++ "/site_perl/${showVersion x.perlVersion}/${printArch arch}-${printOS os}/") x.libDirs
+    let flag = concatMapSep ":" Text (λ(dir : Text) → "${dir}/site_perl/${showVersion x.perlVersion}/${printArch arch}-${printOS os}/") x.libDirs
     in
     let major = Optional/fold Natural (List/head Natural x.perlVersion) Text (Natural/show) ""
     in
@@ -580,7 +580,7 @@
 let makeGnuExe =
   λ(pkg : { name : Text, version : List Natural}) →
     simplePackage pkg ⫽
-      { pkgUrl = "https://ftp.gnu.org/gnu/${pkg.name}/${pkg.name}-${showVersion pkg.version}.tar.xz"
+      { pkgUrl = "https://ftp.wayne.edu/gnu/${pkg.name}/${pkg.name}-${showVersion pkg.version}.tar.xz"
       , installCommand = installWithBinaries [ "bin/${pkg.name}" ]
       }
 in
@@ -627,7 +627,7 @@
     let host =
       Optional/fold types.TargetTriple cfg.targetTriple (List Text)
         (λ(tgt : types.TargetTriple) → ["-DCMAKE_C_COMPILER=${printTargetTriple tgt}-gcc", "-DCMAKE_CXX_COMPILER=${printTargetTriple tgt}-g++"])
-          (["-DCMAKE_C_COMPILER=cc", "-DCMAKE_CXX_COMPILER=c++"])
+          (["-DCMAKE_C_COMPILER=gcc", "-DCMAKE_CXX_COMPILER=g++"])
     in
     let system =
       Optional/fold types.TargetTriple cfg.targetTriple (List Text)
@@ -683,28 +683,17 @@
     [ createDir "build"
     , call { program = "cmake"
            , arguments = [ "../", "-DCMAKE_INSTALL_PREFIX:PATH=${cfg.installDir}", "-G", "Ninja" ] # host # system
-           , environment = defaultEnv
+           , environment = Some (cmakeEnv cfg)
            , procDir = Some "build"
            }
     ]
 in
 
-let perlConfigure =
-  λ(cfg : types.BuildVars) →
-
-  [ call { program = "perl"
-         , arguments = [ "Makefile.PL", "PREFIX=${cfg.installDir}" ]
-         , environment = defaultEnv
-         , procDir = None Text
-         }
-  ]
-in
-
 let cmakeBuild =
   λ(cfg : types.BuildVars) →
     [ call { program = "cmake"
            , arguments = [ "--build", ".", "--config", "Release", "--", "-j", Natural/show cfg.cpus ]
-           , environment = defaultEnv
+           , environment = Some (cmakeEnv cfg)
            , procDir = Some "build"
            }
     ]
@@ -714,7 +703,7 @@
   λ(cfg : types.BuildVars) →
     [ call { program = "cmake"
            , arguments = [ "--build", ".", "--target", "install", "--config", "Release" ]
-           , environment = defaultEnv
+           , environment = Some (cmakeEnv cfg)
            , procDir = Some "build"
            }
     ]
@@ -790,15 +779,14 @@
 
 let mesonEnv =
   λ(cfg : types.BuildVars) →
-    Some [ mkPkgConfigVar (cfg.linkDirs # cfg.shareDirs)
-         , { var = "PATH", value = mkPathVar cfg.binDirs ++ "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" }
-         , mkPy3Path cfg.linkDirs
-         , libPath cfg
-         , mkLDRunPath cfg.linkDirs
-         , mkLDFlags cfg.linkDirs
-         , mkCFlags cfg
-         , mkLDPreload cfg.preloadLibs
-         ]
+    Some ([ mkPkgConfigVar (cfg.linkDirs # cfg.shareDirs)
+          , mkPy3Path cfg.linkDirs
+          , libPath cfg
+          , mkLDRunPath cfg.linkDirs
+          , mkLDFlags cfg.linkDirs
+          , mkCFlags cfg
+          -- , mkLDPreload cfg.preloadLibs
+          ] # defaultPath cfg)
 in
 
 let mesonConfigureGeneral =
@@ -840,13 +828,12 @@
 
     [ call (defaultCall ⫽ { program = "ninja"
                           , environment = Some ([ mkPkgConfigVar cfg.linkDirs
-                                                , { var = "PATH", value = mkPathVar cfg.binDirs ++ "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" }
                                                 , mkPy3Path cfg.linkDirs
                                                 , libPath cfg
                                                 , mkLDRunPath cfg.linkDirs
                                                 , mkLDFlagsGeneral cfg.linkDirs linkLibs
                                                 , mkCFlags cfg
-                                                ] # ldPreload)
+                                                ] # defaultPath cfg) -- # ldPreload)
                           , procDir = Some "build" }) ]
 in
 
@@ -857,14 +844,13 @@
 let ninjaInstall =
   λ(cfg : types.BuildVars) →
     [ call (defaultCall ⫽ { program = "ninja"
-                          , environment = Some [ mkPkgConfigVar cfg.linkDirs
-                                               , { var = "PATH", value = mkPathVar cfg.binDirs ++ "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" }
-                                               , mkPy3Path cfg.linkDirs
-                                               , libPath cfg
-                                               , mkLDRunPath cfg.linkDirs
-                                               , mkLDFlags cfg.linkDirs
-                                               , mkCFlags cfg
-                                               ]
+                          , environment = Some ([ mkPkgConfigVar cfg.linkDirs
+                                                , mkPy3Path cfg.linkDirs
+                                                , libPath cfg
+                                                , mkLDRunPath cfg.linkDirs
+                                                , mkLDFlags cfg.linkDirs
+                                                , mkCFlags cfg
+                                                ] # defaultPath cfg)
                           , arguments = [ "install" ]
                           , procDir = Some "build"
                           })
@@ -1002,6 +988,16 @@
                             , mkLDPreload cfg.preloadLibs
                             , mkPerlLib { libDirs = cfg.linkDirs, perlVersion = [5,30,0], cfg = cfg } -- TODO: take this as a parameter
                             ])
+in
+
+let perlConfigure =
+  λ(cfg : types.BuildVars) →
+    [ call { program = "perl"
+           , arguments = [ "Makefile.PL", "PREFIX=${cfg.installDir}" ]
+           , environment = preloadEnv ([] : List Text) cfg
+           , procDir = None Text
+           }
+    ]
 in
 
 let preloadCfg =
diff --git a/pkgs/pkg-set.dhall b/pkgs/pkg-set.dhall
--- a/pkgs/pkg-set.dhall
+++ b/pkgs/pkg-set.dhall
@@ -1,4 +1,4 @@
- - Dhall prelue imports -}
+{- Dhall prelue imports -}
 let concatMapSep = https://raw.githubusercontent.com/dhall-lang/dhall-lang/9f259cd68870b912fbf2f2a08cd63dc3ccba9dc3/Prelude/Text/concatMapSep
 in
 
@@ -77,7 +77,7 @@
 let binutils =
   λ(v : List Natural) →
     prelude.makeGnuExe { name = "binutils", version = v } ⫽
-      { pkgUrl = "https://ftp.gnu.org/pub/gnu/binutils/binutils-${prelude.showVersion v}.tar.xz"
+      { pkgUrl = "https://ftp.wayne.edu/gnu/binutils/binutils-${prelude.showVersion v}.tar.xz"
       , configureCommand = prelude.configureMkExes [ "mkinstalldirs" ]
       , installCommand =
           prelude.installWithBinaries [ "bin/ar", "bin/as", "bin/ld", "bin/strip", "bin/strings", "bin/readelf", "bin/objdump", "bin/nm", "bin/ranlib" ]
@@ -332,6 +332,7 @@
       , pkgSubdir = "libjpeg-turbo-${prelude.showVersion v}"
       , pkgBuildDeps = [ prelude.unbounded "cmake"
                        , prelude.unbounded "nasm"
+                       , prelude.unbounded "make"
                        ]
       }
 in
@@ -363,7 +364,7 @@
 let ncurses =
   λ(v : List Natural) →
     prelude.simplePackage { name = "ncurses", version = v } ⫽
-      { pkgUrl = "https://ftp.gnu.org/pub/gnu/ncurses/ncurses-${prelude.showVersion v}.tar.gz"
+      { pkgUrl = "https://ftp.wayne.edu/gnu/ncurses/ncurses-${prelude.showVersion v}.tar.gz"
       , configureCommand =
         λ(cfg : types.BuildVars) →
           let crossArgs =
@@ -428,8 +429,7 @@
 let libpng =
   λ(v : List Natural) →
     prelude.simplePackage { name = "libpng", version = v } ⫽
-      { pkgUrl = "https://newcontinuum.dl.sourceforge.net/project/libpng/libpng16/${prelude.showVersion v}/libpng-${prelude.showVersion v}.tar.xz"
-      -- "https://download.sourceforge.net/libpng/libpng-${prelude.showVersion v}.tar.xz"
+      { pkgUrl = "https://download.sourceforge.net/libpng/libpng-${prelude.showVersion v}.tar.xz"
       , pkgDeps = [ prelude.unbounded "zlib" ]
       }
 in
@@ -944,7 +944,7 @@
 let libtool =
   λ(v : List Natural) →
     prelude.makeGnuExe { name = "libtool", version = v } ⫽
-      { pkgUrl = "http://ftpmirror.gnu.org/libtool/libtool-${prelude.showVersion v}.tar.gz"
+      { pkgUrl = "https://ftp.wayne.edu/gnu/libtool/libtool-${prelude.showVersion v}.tar.xz"
       , pkgBuildDeps = [ prelude.lowerBound { name =  "m4", lower = [1,4,16] } ]
       , pkgStream = False
       }
@@ -1403,8 +1403,15 @@
 
     prelude.ninjaPackage { name = "gobject-introspection", version = prelude.fullVersion x } ⫽
       { pkgUrl = "https://download.gnome.org/sources/gobject-introspection/${versionString}/gobject-introspection-${fullVersion}.tar.xz"
-      , pkgBuildDeps = [ prelude.unbounded "meson" ]
-      , pkgDeps = [ prelude.lowerBound { name = "glib", lower = [2,58,0] } ]
+      , pkgBuildDeps = [ prelude.unbounded "meson"
+                       , prelude.unbounded "m4"
+                       , prelude.unbounded "bison"
+                       , prelude.unbounded "flex"
+                       , prelude.unbounded "pkg-config"
+                       , prelude.unbounded "glibc"
+                       ]
+      , pkgDeps = [ prelude.lowerBound { name = "glib", lower = [2,58,0] }
+                  ]
       , installCommand =
           λ(cfg : types.BuildVars) →
             [ prelude.mkExe "build/tools/g-ir-scanner"
@@ -1454,14 +1461,13 @@
         , prelude.writeFile { file = "build/cross.txt", contents = prelude.mesonCfgFile cfg }
         , prelude.call { program = "meson"
                        , arguments = [ "--prefix=${cfg.installDir}", "..", "-Dselinux=disabled" ] # crossArgs
-                       , environment = Some [ prelude.mkPkgConfigVar cfg.linkDirs
-                                            , { var = "PATH", value = prelude.mkPathVar cfg.binDirs ++ "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" }
-                                            , { var = "LDFLAGS", value = (prelude.mkLDFlags cfg.linkDirs).value ++ " -lpcre" }
-                                            , prelude.mkPy3Path cfg.linkDirs
-                                            , prelude.libPath cfg
-                                            , prelude.mkCFlags cfg
-                                            , prelude.mkPkgConfigVar cfg.linkDirs
-                                            ]
+                       , environment = Some ([ prelude.mkPkgConfigVar cfg.linkDirs
+                                             , { var = "LDFLAGS", value = (prelude.mkLDFlags cfg.linkDirs).value }
+                                             , prelude.mkPy3Path cfg.linkDirs
+                                             , prelude.libPath cfg
+                                             , prelude.mkCFlags cfg
+                                             , prelude.mkPkgConfigVar cfg.linkDirs
+                                             ] # prelude.defaultPath cfg)
                        , procDir = Some "build"
                        }
         ]
@@ -1487,7 +1493,6 @@
             # prelude.mkExes [ "build/gobject/glib-mkenums"
                              , "build/gobject/glib-genmarshal"
                              , "build/gio/gdbus-2.0/codegen/gdbus-codegen"
-                             , "build/glib-gettextize"
                              ]
       , installCommand =
           λ(cfg : types.BuildVars) →
@@ -1991,7 +1996,7 @@
 
   λ(v : List Natural) →
     prelude.simplePackage { name = "libsepol", version = v } ⫽
-      { pkgUrl = "https://github.com/SELinuxProject/selinux/releases/download/20180524/libsepol-${prelude.showVersion v}.tar.gz"
+      { pkgUrl = "https://github.com/SELinuxProject/selinux/releases/download/20190315/libsepol-${prelude.showVersion v}.tar.gz"
       , configureCommand = prelude.doNothing
       , buildCommand = prelude.doNothing
       , installCommand = sepolInstall
@@ -2025,7 +2030,7 @@
 
   λ(v : List Natural) →
     prelude.simplePackage { name = "libselinux", version = v } ⫽
-      { pkgUrl = "https://github.com/SELinuxProject/selinux/releases/download/20180524/libselinux-${prelude.showVersion v}.tar.gz"
+      { pkgUrl = "https://github.com/SELinuxProject/selinux/releases/download/20190315/libselinux-${prelude.showVersion v}.tar.gz"
       , configureCommand = prelude.doNothing
       , buildCommand = prelude.doNothing
       , installCommand = selinuxInstall
@@ -2287,9 +2292,7 @@
 let libarchive =
   λ(v : List Natural) →
     prelude.simplePackage { name = "libarchive", version = v } ⫽
-    -- https://github.com/libarchive/libarchive/releases/download/v3.4.0/libarchive-3.4.0.tar.gz
       { pkgUrl = "https://www.libarchive.org/downloads/libarchive-${prelude.showVersion v}.tar.gz"
-      -- , pkgDeps = [ prelude.unbounded "libxml2" ]
       , pkgDeps = [ prelude.unbounded "xz"
                   , prelude.unbounded "bzip2"
                   , prelude.unbounded "zlib"
@@ -2540,6 +2543,9 @@
       { pkgUrl = "https://github.com/uclouvain/openjpeg/archive/v${versionString}.tar.gz"
       , pkgSubdir = "openjpeg-${versionString}"
       , pkgDeps = [ prelude.unbounded "zlib" ]
+      , pkgBuildDeps = [ prelude.unbounded "make"
+                       , prelude.unbounded "cmake"
+                       ]
       , installCommand =
           λ(cfg : types.BuildVars) →
             prelude.cmakeInstall cfg
@@ -2818,7 +2824,9 @@
       { pkgUrl = "https://download.osgeo.org/libtiff/tiff-${versionString}.tar.gz"
       , pkgSubdir = "tiff-${versionString}"
       , configureCommand = prelude.cmakeConfigureNinja
-      , pkgBuildDeps = [ prelude.unbounded "cmake" ]
+      , pkgBuildDeps = [ prelude.unbounded "cmake"
+                       , prelude.unbounded "ninja"
+                       ]
       }
 in
 
@@ -3219,7 +3227,7 @@
   λ(v : List Natural) →
     let versionString = prelude.showVersion v in
     prelude.simplePackage { name = "gcc", version = v } ⫽
-      { pkgUrl = "https://ftp.gnu.org/pub/gnu/gcc/gcc-${versionString}/gcc-${versionString}.tar.xz"
+      { pkgUrl = "https://ftp.wayne.edu/gnu/gcc/gcc-${versionString}/gcc-${versionString}.tar.xz"
       , configureCommand =
           λ(cfg : types.BuildVars) →
             [ prelude.call { program = "contrib/download_prerequisites"
@@ -3328,7 +3336,6 @@
                   , prelude.unbounded "libsamplerate"
                   , prelude.unbounded "mpg123"
                   , prelude.unbounded "libjpeg-turbo"
-                  -- , prelude.unbounded "libjpeg"
                   , prelude.unbounded "libpng"
                   , prelude.unbounded "fftw"
                   ]
@@ -3430,7 +3437,7 @@
 let make =
   λ(v : List Natural) →
     prelude.makeGnuExe { name = "make", version = v } ⫽
-      { pkgUrl = "https://ftp.gnu.org/gnu/make/make-${prelude.showVersion v}.tar.bz2"
+      { pkgUrl = "https://ftp.wayne.edu/gnu/make/make-${prelude.showVersion v}.tar.bz2"
       , configureCommand = prelude.configureWithPatch (./patches/make.patch as Text)
       , buildCommand =
           λ(cfg : types.BuildVars) →
@@ -3741,7 +3748,7 @@
 let libiconv =
   λ(v : List Natural) →
     prelude.simplePackage { name = "libiconv", version = v } ⫽
-      { pkgUrl = "https://ftp.gnu.org/pub/gnu/libiconv/libiconv-${prelude.showVersion v}.tar.gz" }
+      { pkgUrl = "https://ftp.wayne.edu/gnu/libiconv/libiconv-${prelude.showVersion v}.tar.gz" }
 in
 
 let libav =
@@ -3804,7 +3811,7 @@
 let findutils =
   λ(v : List Natural) →
     prelude.simplePackage { name = "findutils", version = v } ⫽
-        { pkgUrl = "https://ftp.gnu.org/pub/gnu/findutils/findutils-${prelude.showVersion v}.tar.gz"
+        { pkgUrl = "https://ftp.gnu.org/pub/gnu/findutils/findutils-${prelude.showVersion v}.tar.xz"
         , pkgStream = False
         }
 in
@@ -3845,15 +3852,23 @@
 let lzip =
   λ(v : List Natural) →
     prelude.simplePackage { name = "lzip", version = v } ⫽
-        { pkgUrl = "http://download.savannah.gnu.org/releases/lzip/lzip-${prelude.showVersion v}.tar.gz"
+        { pkgUrl = "http://gnu.mirrors.pair.com/savannah/savannah/lzip/lzip-${prelude.showVersion v}.tar.lz"
         , installCommand = prelude.installWithBinaries [ "bin/lzip" ]
         }
 in
 
+let lunzip =
+  λ(v : List Natural) →
+    prelude.simplePackage { name = "lunzip", version = v } ⫽
+        { pkgUrl = "http://download.savannah.gnu.org/releases/lzip/lunzip/lunzip-${prelude.showVersion v}.tar.lz"
+        , installCommand = prelude.installWithBinaries [ "bin/lunzip" ]
+        }
+in
+
 let lzlib =
   λ(v : List Natural) →
     prelude.simplePackage { name = "lzlib", version = v } ⫽
-        { pkgUrl = "http://download.savannah.gnu.org/releases/lzip/lzlib/lzlib-${prelude.showVersion v}.tar.gz"
+        { pkgUrl = "http://download.savannah.gnu.org/releases/lzip/lzlib/lzlib-${prelude.showVersion v}.tar.lz"
         , configureCommand = prelude.configureWithFlags [ "--enable-shared" ]
         }
 in
@@ -3861,7 +3876,7 @@
 let lziprecover =
   λ(v : List Natural) →
     prelude.simplePackage { name = "lziprecover", version = v } ⫽
-        { pkgUrl = "http://download.savannah.gnu.org/releases/lzip/lziprecover/lziprecover-1.21.tar.gz"
+        { pkgUrl = "http://download.savannah.gnu.org/releases/lzip/lziprecover/lziprecover-${prelude.showVersion v}.tar.lz"
         , installCommand = prelude.installWithBinaries [ "bin/lziprecover" ]
         }
 in
@@ -3921,6 +3936,49 @@
         { pkgUrl = "https://downloads.sourceforge.net/opencore-amr/fdk-aac-${prelude.showVersion v}.tar.gz" }
 in
 
+-- needs haskal: https://www.informatik.uni-kiel.de/~pakcs/download/pakcs-2.1.2-src.tar.gz
+-- https://ftp.gnu.org/gnu/libcdio/libcdio-2.1.0.tar.bz2
+
+let swi-prolog =
+  λ(v : List Natural) →
+    let versionString = prelude.showVersion v in
+    prelude.ninjaPackage { name = "swi-prolog", version = v } ⫽
+        { pkgUrl = "https://www.swi-prolog.org/download/stable/src/swipl-${versionString}.tar.gz"
+        , configureCommand = prelude.cmakeConfigureNinja
+        , pkgBuildDeps = [ prelude.unbounded "cmake"
+                         , prelude.unbounded "ninja"
+                         , prelude.unbounded "coreutils"
+                         ]
+        , pkgSubdir = "swipl-${versionString}"
+        , pkgStream = False
+        }
+in
+
+let exiftool =
+  λ(v : List Natural) →
+    let versionString = prelude.showVersion v in
+    prelude.simplePackage { name = "exiftool", version = v } ⫽
+        { pkgUrl = "https://sno.phy.queensu.ca/~phil/exiftool/Image-ExifTool-${versionString}.tar.gz"
+        , pkgSubdir = "Image-ExifTool-${versionString}"
+        , configureCommand = prelude.perlConfigure
+        , installCommand =
+            -- TODO make this more general
+            λ(cfg : types.BuildVars) →
+              let perlWrapper = "PERL5LIB=${cfg.installDir}/lib/site_perl/5.30.0/ ${cfg.installDir}/bin/exiftool $@"
+              in
+              let wrapped = "wrapper/exiftool"
+              in
+              prelude.defaultInstall cfg
+                # [ prelude.createDir "wrapper"
+                  , prelude.writeFile { file = wrapped, contents = perlWrapper }
+                  , prelude.mkExe wrapped
+                  , prelude.copyFile wrapped wrapped
+                  , prelude.symlinkBinary wrapped
+                  ]
+        , pkgBuildDeps = [ prelude.unbounded "perl" ]
+        }
+in
+
 [ alsa-lib [1,1,9]
 , at-spi-atk { version = [2,33], patch = 2 }
 , at-spi-core { version = [2,33], patch = 2 }
@@ -3952,13 +4010,14 @@
 , eigen [3,3,7]
 , elfutils [0,176]
 , emacs [26,3]
+, exiftool [11,65]
 , exiv2 [0,27,1]
-, expat [2,2,7]
+, expat [2,2,8]
 , fdk-aac [2,0,0]
 , feh [3,2,1]
 , ffmpeg [4,2,1]
 , fftw [3,3,8]
-, findutils [4,6,0]
+, findutils [4,7,0]
 , fixesproto [5,0]
 , fontconfig [2,13,1]
 , fossil [2,7]
@@ -3975,19 +4034,19 @@
 , gegl { version = [0,4], patch = 16 }
 , gettext [0,20,1]
 , gexiv2 { version = [0,12], patch = 0 }
-, ghc [8,6,5]
+, ghc [8,8,1]
 , gperf [3,1]
 , gperftools [2,7]
 , giflib [5,1,4]
 , git [2,23,0]
-, glib { version = [2,61], patch = 1 }
+, glib { version = [2,62], patch = 0 }
 , glib-networking { version = [2,61], patch = 2 }
 , glproto [1,4,17]
 , glu [9,0,0]
 , json-glib { version = [1,4], patch = 4 }
 , glibc [2,30]
 , gmp [6,1,2]
-, gobject-introspection { version = [1,60], patch = 2 }
+, gobject-introspection { version = [1,62], patch = 0 }
 , gnome-doc-utils { version = [0,20], patch = 10 }
 , gnupg [2,2,17]
 , gnutls { version = [3,6], patch = 9 }
@@ -3997,7 +4056,7 @@
 , gtk2 { version = [2,24], patch = 32 }
 , gtk3 { version = [3,24], patch = 10 }
 , gzip [1,9]
-, harfbuzz [2,5,3]
+, harfbuzz [2,6,1]
 , htop [2,2,0]
 , hugs
 , icu [64,2]
@@ -4051,9 +4110,9 @@
 , libraw [0,19,2]
 , librsvg { version = [2,45], patch = 8 }
 , libsamplerate [0,1,9]
-, libselinux [2,8]
+, libselinux [2,9]
 , libsndfile [1,0,28]
-, libsepol [2,8]
+, libsepol [2,9]
 , libsodium [1,0,17]
 , libsoup { version = [2,67], patch = 3 }
 , libspng [0,5,0]
@@ -4094,6 +4153,7 @@
 , llvm [9,0,0]
 , lmdb [0,9,23]
 , lua [5,3,5]
+, lunzip [1,11]
 , lz4 [1,9,1]
 , lzip [1,21]
 , lziprecover [1,21]
@@ -4106,7 +4166,7 @@
 , memcached [1,5,18]
 , mercury
 , mesa [19,0,5]
-, meson [0,51,1]
+, meson [0,51,2]
 , mpc [1,1,0]
 , mpfr [4,0,2]
 , mpg123 [1,25,12]
@@ -4118,7 +4178,7 @@
 , ncurses [6,1]
 , nginx [1,15,7]
 , ninja [1,9,0]
-, node [10,16,2]
+, node [10,16,3]
 , npth [1,6]
 , nspr [4,20]
 , openblas [0,3,2]
@@ -4137,7 +4197,7 @@
 , pixman [0,38,4]
 , pkg-config [0,29,2]
 , poppler [0,80,0]
-, postgresql [11,1]
+, postgresql [11,5]
 , protobuf [3,8,0]
 , pycairo [1,18,1]
 , pygobject { version = [2,28], patch = 7 }
@@ -4155,7 +4215,7 @@
 , recordproto [1,14,2]
 , renderproto [0,11,1]
 , ruby { version = [2,6], patch = 3 }
-, rustc [1,37,0]
+, rustc [1,38,0]
 , scour [0,37]
 , scrnsaverproto [1,2,2]
 , sdl2 [2,0,10]
@@ -4163,6 +4223,7 @@
 , shared-mime-info [1,10]
 , sqlite { year = 2019, version = [3,29,0] }
 , swig [3,0,12]
+, swi-prolog [8,0,3]
 , tar [1,32]
 , tcc [0,9,27]
 , texinfo [6,6]
diff --git a/src/Package/C/Unpack.hs b/src/Package/C/Unpack.hs
--- a/src/Package/C/Unpack.hs
+++ b/src/Package/C/Unpack.hs
@@ -32,7 +32,9 @@
 
 archiveResponse :: TarCompress -> FilePath -> BSL.ByteString -> IO ()
 archiveResponse compressScheme dirName =
-    Archive.unpackToDirLazy dirName . getCompressor compressScheme
+    fmap (either showError id) . Archive.runArchiveM . Archive.unpackToDirLazy dirName . getCompressor compressScheme
+
+    where showError = error . show
 
 tarResponse :: TarCompress -> FilePath -> BSL.ByteString -> IO ()
 tarResponse compressScheme dirName =
