← Back to issue list

pkg: error: --add-architecture takes exactly one argument

View original Github issue

Metadata

Project
snapcraft
Number
#4298
Type
issue
State
closed
Author
IsaacJT
Labels
—
Created
Updated
Closed

Current evaluation

Duplicate of #4289; the underlying dpkg architecture regression was fixed in craft-archives 1.1.3 via PR #96 (commit 06b1ca2).

Resolution: closed superseded

Reason: A maintainer explicitly marked this report as a duplicate of #4289. The replacement was resolved in craft-archives 1.1.3 by PR #96/commit 06b1ca2, and the fix reached Snapcraft's candidate channel.

Evaluated by: mr-cal-bot

No scores available.

Issue body

### Bug Description Snapcraft fails to add a dpkg architecture to the system when a custom package repository is added and prints the following error: ``` pkg: error: --add-architecture takes exactly one argument Type dpkg --help for help about installing and deinstalling packages [*]; Use 'apt' or 'aptitude' for user-friendly package management; Type dpkg -Dhelp for a list of dpkg debug flag values; Type dpkg --force-help for a list of forcing options; Type dpkg-deb --help for help about manipulating *.deb files; ``` ### To Reproduce Build the attached snapcraft.yaml using Snapcraft 7.5.0: ``` $ sudo snapcraft -v --destructive-mode Starting Snapcraft 7.5.0 Logging execution to '/root/.local/state/snapcraft/log/snapcraft-20230731-095242.281432.log' Running on amd64 for amd64 Initializing parts lifecycle Installing package repositories... d pkg: error: --add-architecture takes exactly one argument Type dpkg --help for help about installing and deinstalling packages [*]; Use 'apt' or 'aptitude' for user-friendly package management; Type dpkg -Dhelp for a list of dpkg debug flag values; Type dpkg --force-help for a list of forcing options; Type dpkg-deb --help for help about manipulating *.deb files; Options marked [*] produce a lot of output - pipe it through 'less' or 'more' ! Command '['dpkg', '--add-architecture', 'arm64', '--root', '/']' returned non-zero exit status 2. Full execution log: '/root/.local/state/snapcraft/log/snapcraft-20230731-095242.281432.log' ``` ### Environment Running in a newly created LXD container. ``` $ snapcraft --version snapcraft 7.5.0 $ cat /etc/os-release PRETTY_NAME="Ubuntu 22.04.2 LTS" NAME="Ubuntu" VERSION_ID="22.04" VERSION="22.04.2 LTS (Jammy Jellyfish)" VERSION_CODENAME=jammy ID=ubuntu ID_LIKE=debian HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" UBUNTU_CODENAME=jammy ``` ### snapcraft.yaml ```shell name: my-snap-name # you probably want to 'snapcraft register <name>' base: core22 # the base snap is the execution environment for this snap version: '0.1' # just for humans, typically '1.2+git' or '1.3.2' summary: Single-line elevator pitch for your amazing snap # 79 char long summary description: | This is my-snap's description. You have a paragraph or two to tell the most important story about your snap. Keep it under 100 words though, we live in tweetspace and your description wants to look good in the snap store. grade: devel # must be 'stable' to release into candidate/stable channels confinement: devmode # use 'strict' once you have the right plugs and slots package-repositories: - type: apt architectures: [ arm64 ] components: [ main ] suites: [ jammy, jammy-security, jammy-updates ] key-id: F6ECB3762474EDA9D21B7022871920D1991BC93C url: http://ports.ubuntu.com/ubuntu-ports parts: my-part: # See 'snapcraft plugins' plugin: nil ``` ### Relevant log output ```shell 2023-07-31 09:52:42.282 Starting Snapcraft 7.5.0 2023-07-31 09:52:42.283 lifecycle command: 'pack', arguments: Namespace(bind_ssh=False, build_for=None, debug=False, destructive_mode=True, directory=None, enable_developer_debug=False, enable_experimental_extensions=False, enable_experimental_plugins=False, enable_experimental_target_arch=False, enable_experimental_ua_services=False, enable_manifest=False, http_proxy=None, https_proxy=None, manifest_image_information=None, output=None, provider=None, target_arch=None, ua_token=None, use_lxd=False) 2023-07-31 09:52:42.283 command: pack, arguments: Namespace(bind_ssh=False, build_for=None, debug=False, destructive_mode=True, directory=None, enable_developer_debug=False, enable_experimental_extensions=False, enable_experimental_plugins=False, enable_experimental_target_arch=False, enable_experimental_ua_services=False, enable_manifest=False, http_proxy=None, https_proxy=None, manifest_image_information=None, output=None, provider=None, target_arch=None, ua_token=None, use_lxd=False) 2023-07-31 09:52:42.293 CPU count (from process affinity): 8 2023-07-31 09:52:42.293 Invalid SNAPCRAFT_MAX_PARALLEL_BUILD_COUNT '' 2023-07-31 09:52:42.293 Running on amd64 for amd64 2023-07-31 09:52:42.297 Initializing parts lifecycle 2023-07-31 09:52:42.298 is_snap: True, SNAP_NAME set to snapcraft 2023-07-31 09:52:42.298 load state file: /home/ubuntu/test/parts/my-part/state/pull 2023-07-31 09:52:42.303 load state file: /home/ubuntu/test/parts/my-part/state/build 2023-07-31 09:52:42.332 load state file: /home/ubuntu/test/parts/my-part/state/stage 2023-07-31 09:52:42.335 load state file: /home/ubuntu/test/parts/my-part/state/prime 2023-07-31 09:52:42.338 process my-part:Step.PULL 2023-07-31 09:52:42.338 check if Part('my-part'):Step.PULL is dirty 2023-07-31 09:52:42.338 check if Part('my-part'):Step.PULL is outdated 2023-07-31 09:52:42.338 add action my-part:Step.PULL(ActionType.SKIP) 2023-07-31 09:52:42.338 process my-part:Step.BUILD 2023-07-31 09:52:42.338 check if Part('my-part'):Step.BUILD is dirty 2023-07-31 09:52:42.339 check if Part('my-part'):Step.BUILD is outdated 2023-07-31 09:52:42.339 add action my-part:Step.BUILD(ActionType.SKIP) 2023-07-31 09:52:42.339 process my-part:Step.STAGE 2023-07-31 09:52:42.339 check if Part('my-part'):Step.STAGE is dirty 2023-07-31 09:52:42.339 check if Part('my-part'):Step.STAGE is outdated 2023-07-31 09:52:42.339 add action my-part:Step.STAGE(ActionType.SKIP) 2023-07-31 09:52:42.339 process my-part:Step.PRIME 2023-07-31 09:52:42.339 check if Part('my-part'):Step.PRIME is dirty 2023-07-31 09:52:42.339 check if Part('my-part'):Step.PRIME is outdated 2023-07-31 09:52:42.339 add action my-part:Step.PRIME(ActionType.SKIP) 2023-07-31 09:52:43.503 Installing package repositories... 2023-07-31 09:52:43.516 Command '['dpkg', '--add-architecture', 'arm64', '--root', '/']' returned non-zero exit status 2. 2023-07-31 09:52:43.518 Traceback (most recent call last): 2023-07-31 09:52:43.518 File "/snap/snapcraft/9510/lib/python3.8/site-packages/snapcraft/parts/parts.py", line 168, in run 2023-07-31 09:52:43.518 self._install_package_repositories() 2023-07-31 09:52:43.518 File "/snap/snapcraft/9510/lib/python3.8/site-packages/snapcraft/parts/parts.py", line 204, in _install_package_repositories 2023-07-31 09:52:43.518 refresh_required = repo.install( 2023-07-31 09:52:43.518 File "/snap/snapcraft/9510/lib/python3.8/site-packages/craft_archives/repo/installer.py", line 44, in install 2023-07-31 09:52:43.518 return _install_repos( 2023-07-31 09:52:43.518 File "/snap/snapcraft/9510/lib/python3.8/site-packages/craft_archives/repo/installer.py", line 94, in _install_repos 2023-07-31 09:52:43.518 refresh_required |= sources_manager.install_package_repository_sources( 2023-07-31 09:52:43.518 File "/snap/snapcraft/9510/lib/python3.8/site-packages/craft_archives/repo/apt_sources_manager.py", line 294, in install_package_repository_sources 2023-07-31 09:52:43.518 _add_architecture(architectures, root=self._signed_by_root) 2023-07-31 09:52:43.518 File "/snap/snapcraft/9510/lib/python3.8/site-packages/craft_archives/repo/apt_sources_manager.py", line 304, in _add_architecture 2023-07-31 09:52:43.518 subprocess.run( 2023-07-31 09:52:43.518 File "/snap/snapcraft/9510/usr/lib/python3.8/subprocess.py", line 516, in run 2023-07-31 09:52:43.518 raise CalledProcessError(retcode, process.args, 2023-07-31 09:52:43.518 subprocess.CalledProcessError: Command '['dpkg', '--add-architecture', 'arm64', '--root', '/']' returned non-zero exit status 2. 2023-07-31 09:52:43.518 2023-07-31 09:52:43.518 The above exception was the direct cause of the following exception: 2023-07-31 09:52:43.518 Traceback (most recent call last): 2023-07-31 09:52:43.518 File "/snap/snapcraft/9510/lib/python3.8/site-packages/snapcraft/parts/lifecycle.py", line 302, in _run_command 2023-07-31 09:52:43.518 _run_lifecycle_and_pack( 2023-07-31 09:52:43.518 File "/snap/snapcraft/9510/lib/python3.8/site-packages/snapcraft/parts/lifecycle.py", line 345, in _run_lifecycle_and_pack 2023-07-31 09:52:43.518 lifecycle.run( 2023-07-31 09:52:43.518 File "/snap/snapcraft/9510/lib/python3.8/site-packages/snapcraft/parts/parts.py", line 192, in run 2023-07-31 09:52:43.518 raise errors.PartsLifecycleError(str(err)) from err 2023-07-31 09:52:43.518 snapcraft.errors.PartsLifecycleError: Command '['dpkg', '--add-architecture', 'arm64', '--root', '/']' returned non-zero exit status 2. 2023-07-31 09:52:43.518 Full execution log: '/root/.local/state/snapcraft/log/snapcraft-20230731-095242.281432.log ``` ### Additional context _No response_

Evaluation history

Date Model Scores Action Summary
stealth/space-bunny-alpha — closed superseded Duplicate of #4289; the underlying dpkg architecture regression was fixed in craft-archives 1.1.3 via PR #96 (commit 06b1ca2).
stealth/space-bunny-alpha — closed resolved Fixed in Snapcraft’s candidate channel. An invalid dpkg argument order caused --add-architecture to treat --root as an extra argument; snapcraft#4289 tracks the fix.
qwen/qwen3.6-35b-a3b — — Closed as a duplicate of #4289. The failure stemmed from incorrect dpkg argument ordering, requiring --add-architecture before --root. Resolved by correcting the command sequence in the installer.
qwen/qwen3.6-35b-a3b — — Closed as duplicate of #4289. The bug stems from dpkg receiving --root after --add-architecture. The fix reorders the flags so --root comes first. Resolved in the referenced issue.
qwen/qwen3.6-35b-a3b — — Marked as a duplicate of #4289. The error occurs because dpkg requires the architecture argument before the --root flag. Fixed in the referenced PR by correcting the command argument order.
qwen3.6-35b-a3b-mtp-q6 — — Closed as a duplicate of #4289. The error occurs because dpkg requires --add-architecture to precede other flags like --root. The fix is tracked in the referenced issue.

Update history

No update history recorded yet.

Related work

  • Duplicate Of: canonical/snapcraft#4289 (confidence 100%)

    A maintainer commented “Dup of #4289.”

  • Likely Fixed By: canonical/craft-archives#96 (confidence 96%)

    Commit 06b1ca2 addressed declared repository architectures and was released in craft-archives 1.1.3.

Related issues

Issue Project State Summary Similarity
#4289 dpkg --add-architecture fails when using package-repositories snapcraft closed Fixed in craft-archives 1.1.3 via canonical/craft-archives#96 (06b1ca2), reordering dpkg options so --root precedes --add-architecture; rolled out via Snapcraft candidate.
81%
#96 sources: only add "compatible" architectures craft-archives merged Merged as craft-archives commit 06b1ca2: fixes dpkg --add-architecture argument order and only adds host-compatible archs (amd64→i386, arm64→armhf). Shipped in 1.1.3, whose changelog was added in #97.
76%
#4303 requirements: bump craft-archives snapcraft merged Merged #4303, bumping craft-archives to 1.1.3 to correct dpkg argument ordering and enable only compatible repository architectures; fixes #4289 and #4298.
74%
#3083 repo: revert logic to get deb_arch snapcraft merged Merged #3083 as 5d20937cb, reverting host-side deb_arch lookup to avoid requiring dpkg-architecture before entering the build environment (SNAPCRAFT-1K1).
71%