As part of the snap creation cycle, the Snapcraft tool creates isolated build instances inside which all of the necessary work – download of sources, compilation, packaging, etc. – is done in a safe manner, without touching the host system. While there are many advantages to the use of the virtual machines (via Multipass) or containers (via LXD) for these tasks, the downside is a fairly liberal use of the network bandwidth to setup and configure the Snapcraft work environment.
In some scenarios, you may be constrained in your available network throughput or data. To help with that, the latest build of Snapcraft comes with a new, experimental offline mode, designed to minimize the reliance on online sources, and allow you to continue working and building snaps even if you have no access to the network.
To run Snapcraft in the offline mode, simply pass the –offline flag to the Snapcraft command-line tool. However, there are a few important things to take into consideration first.
Now, with or without the network connection, you can run Snapcraft in the offline mode. It will rely on the downloaded data for the build, and will not try to contact the online archives and grab any new packages. The final objective is to allow users to be able to iterate on their builds without consuming additional data.
On the other hand, if you discover you rely on new components that do not exist in your cache, you may have to re-run Snapcraft in its standard (online) mode again at some point. You will also not receive any updates or patches to libraries (depending on how long you stay in the offline mode).
I tried to build a snap that uses the core20 base. The initial download weighed 143 MB. After that, Snapcraft did not use or download any new sources. I was then able to make modifications to the snapcraft.yaml file and build the snap. Of course, these changes did not rely on additional data from the Internet.
snapcraft pull
Launching a VM.
2021-11-10T12:30:13Z INFO Waiting for automatic snapd restart…
snapd 2.52.1 from Canonical✓ installed
core20 20210928 from Canonical✓ installed
"core20" switched to the "latest/stable" channel
snapcraft 6.0 from Canonical✓ installed
"snapcraft" switched to the "latest/edge" channel
snapd is not logged in, snap install commands will use sudo
snap "core20" has no updates available
Pulling segfexample
+ snapcraftctl pull
snapcraft --use-lxd --offline
*EXPERIMENTAL* --offline enabled.
Launching a container.
Waiting for container to be ready
...
...
*EXPERIMENTAL* --offline enabled.
Offline mode, not installing build packages.
...
You can also always try to use the –offline mode while connected to the network. In the current experimental implementation, Snapcraft may make some assumptions for you, and may perform an initial download & cache of relevant data on first run even if you do not manually specify the pull command.
The offline mode is a handy addition to the arsenal of capabilities available in Snapcraft, and it should help with scenarios where data usage should be as low as possible. The functionality is still in experimental mode, so if you’d like to test it, or have any ideas or suggestions, or if you find any bugs, please tell us in the forum. For instance, you might want to know if cached data can be reused across systems, how to perform partial updates of online sources, or similar. We welcome feedback, and we’re interested in learning more about how we can further simplify and enhance the developer experience with Snapcraft.
Photo by Markus Spiske on Unsplash.
Welcome to the Ubuntu Weekly Newsletter, Issue 866 for the week of November 10 –…
Debian and Ubuntu are two popular Linux distributions. In this deep dive we will guide…
In this article, we will see how to Install Google Cloud BigQuery Python client library…
Nov 15,2024 Wallpaper Contest for Xfce 4.20 open for voting The submission phase for the…
MicroCloud 2.1.0 LTS is now available, expanding the number of Canonical infrastructure solutions with a…
Canonical is thrilled to be joining forces with Dell Technologies at the upcoming Dell Technologies…