diff --git a/build-relocatable-install.py b/build-relocatable-install.py
index e3a788f60d0ed730594d56924854e519018416ff..a1188b1887623ce47bac7010b5f846d081009ed0 100755
--- a/build-relocatable-install.py
+++ b/build-relocatable-install.py
@@ -156,6 +156,9 @@ def main():
         args.prefix = args.destdir + args.prefix
         args.srcdir = args.destdir + args.srcdir
 
+    if args.archive is None and args.output is None:
+        parser.error('Either --archive or --output is required')
+
     if args.version is None:
         with open(os.path.join(args.srcdir, '.tarball-version')) as reader:
             args.version = reader.read().strip()
@@ -207,16 +210,17 @@ def main():
                 v_check_call([
                     'apt-get',
                     'download',
-                    package,
+                    package + ':' + arch.name,
                 ], cwd=tmpdir)
                 v_check_call(
-                    'dpkg-deb -x {}_*.deb build-relocatable'.format(
+                    'dpkg-deb -X {}_*_{}.deb build-relocatable'.format(
                         quote(package),
+                        quote(arch.name),
                     ),
                     cwd=tmpdir,
                     shell=True,
                 )
-                path = '{}/build-relocatable/usr/bin/TOOL'.format(tmpdir)
+                path = '{}/build-relocatable/{}'.format(tmpdir, path)
 
             for tool in LIBCAPSULE_TOOLS:
                 install_exe(
@@ -463,39 +467,40 @@ def main():
             ) as writer:
                 writer.write('{}\n'.format(args.version))
 
-        bin_tar = os.path.join(
-            args.archive,
-            'pressure-vessel-{}-bin.tar.gz'.format(args.version),
-        )
-        src_tar = os.path.join(
-            args.archive,
-            'pressure-vessel-{}-bin+src.tar.gz'.format(args.version),
-        )
+        if args.archive:
+            bin_tar = os.path.join(
+                args.archive,
+                'pressure-vessel-{}-bin.tar.gz'.format(args.version),
+            )
+            src_tar = os.path.join(
+                args.archive,
+                'pressure-vessel-{}-bin+src.tar.gz'.format(args.version),
+            )
 
-        subprocess.check_call([
-            'tar',
-            r'--transform=s,^\(\.\(/\|$\)\)\?,pressure-vessel-{}/,'.format(
-                args.version,
-            ),
-            '--exclude=metadata',       # this is all duplicated in sources/
-            '-zcvf', src_tar + '.tmp',
-            '-C', installation,
-            '.',
-        ])
-        subprocess.check_call([
-            'tar',
-            r'--transform=s,^\(\.\(/\|$\)\)\?,pressure-vessel-{}/,'.format(
-                args.version,
-            ),
-            '--exclude=sources',
-            '-zcvf', bin_tar + '.tmp',
-            '-C', installation,
-            '.',
-        ])
-        os.rename(bin_tar + '.tmp', bin_tar)
-        os.rename(src_tar + '.tmp', src_tar)
-        print('Generated {}'.format(os.path.abspath(bin_tar)))
-        print('Generated {}'.format(os.path.abspath(src_tar)))
+            subprocess.check_call([
+                'tar',
+                r'--transform=s,^\(\.\(/\|$\)\)\?,pressure-vessel-{}/,'.format(
+                    args.version,
+                ),
+                '--exclude=metadata',   # this is all duplicated in sources/
+                '-zcvf', src_tar + '.tmp',
+                '-C', installation,
+                '.',
+            ])
+            subprocess.check_call([
+                'tar',
+                r'--transform=s,^\(\.\(/\|$\)\)\?,pressure-vessel-{}/,'.format(
+                    args.version,
+                ),
+                '--exclude=sources',
+                '-zcvf', bin_tar + '.tmp',
+                '-C', installation,
+                '.',
+            ])
+            os.rename(bin_tar + '.tmp', bin_tar)
+            os.rename(src_tar + '.tmp', src_tar)
+            print('Generated {}'.format(os.path.abspath(bin_tar)))
+            print('Generated {}'.format(os.path.abspath(src_tar)))
 
 
 if __name__ == '__main__':