

Snapcraft offline mode – Build snaps while saving data
source link: https://snapcraft.io//blog/snapcraft-offline-mode-build-snaps-while-saving-data
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Snapcraft offline mode – Build snaps while saving data
by Igor Ljubuncic on 12 November 2021
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.
The basics
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.
- Snapcraft cannot magically spawn the necessary data out of nothing. It needs the initial pull of the relevant sources, including the build images (say Ubuntu 18.04 or Ubuntu 20.04 container images), the sources for your software, any additional build or stage packages that will be used, and other assets that your application relies on.
- To get the necessary data for subsequent offline runs, run snapcraft pull. This will download the assets once and cache them for later use.
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).
Example
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.
Summary
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.
Recommend
-
29
Linux 一直在发展。过去,开发人员必须分别为不同的 Linux 发行版构建应用。由于存在多种 Linux 变体,因此为所有发行版构建应用变得很繁琐,...
-
31
GNU Emacs ...
-
12
Official snaps from major publishers “The auto-updating feature is huge” Due to the nature of our...
-
5
Official snaps from major publishers “The auto-updating feature is huge” Due to the nature of our platform, we release updates more than daily which adm...
-
12
5 Time-Saving Apps to Have Better Meetings Both Online and Offline By Mihir Patkar Published 1 day ago Whether virtual or in-person, you...
-
3
解决Snapcraft的方框字问题 从snap安装的软件经常会出现文字显示为方框的情况,目前发现一个比较有效...
-
12
Ubuntu Frame – A picture is worth a thousand snaps by Igor Ljubuncic on 3 December 2021 The development of graphical applications intended for use on IoT devices isn’t trivial. The complexity goes beyond the usual...
-
6
Snapcraft experimental login – new, secure Web-based authentication method by Igor Ljubuncic on 20 October 2021 Some Snapcraft operations mandate that users identify themselves. For example, if you want to push yo...
-
8
Let’s build a snap together – a complex snapcraft.yaml walkthrough by Igor Ljubuncic on 21 January 2022 It has been a while since we talked about how to build snaps. In the past, we went through a number of detail...
-
2
Craft Parts – Reusable code, Snapcraft style by Igor Ljubuncic on 26 November 2021 Throughout the ages, humans have always used simpler tools and materials to create more complex ones. Wood and stone for smelting...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK