An extension of this issue also exists, take the below example snapcraft.yaml: name: my-snap-name # you probably want to 'snapcraft register ' 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 architectures: - build-on: amd64 build-for: arm64 parts: my-part: # See 'snapcraft plugins' plugin: nil stage-packages: - libgtk-3-0:${CRAFT_TARGET_ARCH} After using my proposed solution in comment #1 of modifying the /etc/apt/sources.list file to identify all of the correct packages, we notice that even though libgtk-3-0 is specifically for arm64, we end up with several amd64 debs in our final snap: ls ../parts/my-part/stage_packages/*amd64*.deb ../parts/my-part/stage_packages/dconf-gsettings-backend_0.40.0-3_amd64.deb ../parts/my-part/stage_packages/dconf-service_0.40.0-3_amd64.deb ../parts/my-part/stage_packages/fontconfig_2.13.1-4.2ubuntu5_amd64.deb ../parts/my-part/stage_packages/gtk-update-icon-cache_3.24.33-1ubuntu2_amd64.deb ../parts/my-part/stage_packages/libdconf1_0.40.0-3_amd64.deb ../parts/my-part/stage_packages/libdeflate0_1.10-2_amd64.deb ../parts/my-part/stage_packages/libfontconfig1_2.13.1-4.2ubuntu5_amd64.deb ../parts/my-part/stage_packages/libgdk-pixbuf-2.0-0_2.42.8+dfsg-1ubuntu0.2_amd64.deb ../parts/my-part/stage_packages/libicu70_70.1-2_amd64.deb ../parts/my-part/stage_packages/libjbig0_2.1-3.1ubuntu0.22.04.1_amd64.deb ../parts/my-part/stage_packages/libjpeg-turbo8_2.1.2-0ubuntu1_amd64.deb ../parts/my-part/stage_packages/libjpeg8_8c-2ubuntu10_amd64.deb ../parts/my-part/stage_packages/libtiff5_4.3.0-6ubuntu0.4_amd64.deb ../parts/my-part/stage_packages/libwebp7_1.2.2-2ubuntu0.22.04.1_amd64.deb ../parts/my-part/stage_packages/libxml2_2.9.13+dfsg-1ubuntu0.3_amd64.deb ../parts/my-part/stage_packages/shared-mime-info_2.1-2_amd64.deb Listing all of these debs explicitly in our stage-packages list trims the list a bit, but we still end up with some amd64 debs: ls -1 ../parts/my-part/stage_packages/*amd64*.deb ../parts/my-part/stage_packages/dconf-gsettings-backend_0.40.0-3_amd64.deb ../parts/my-part/stage_packages/dconf-service_0.40.0-3_amd64.deb ../parts/my-part/stage_packages/libdconf1_0.40.0-3_amd64.deb ../parts/my-part/stage_packages/libicu70_70.1-2_amd64.deb ../parts/my-part/stage_packages/libxml2_2.9.13+dfsg-1ubuntu0.3_amd64.deb ../parts/my-part/stage_packages/shared-mime-info_2.1-2_amd64.deb What's interesting is that sometimes I end up with a greater of fewer number of staged amd64 debs. It doesn't seem deterministic, and there's some odd behavior with stage-package cleanup (packages won't be cleaned if a new arch is specified for them, for instance. It's probably also the case that removing a package from the stage-package list doesn't remove the fetched deb at all, but I didn't check that). snapcraft also doesn't appear to run `dpkg --add-architecture arm64` with this example, with rev 9201, 9222, nor 9121. Seems like this is either a feature of using 'package-repositories' or a particular plugin (probably package-repositories though...).