mirror of
https://git.launchpad.net/livecd-rootfs
synced 2025-02-23 03:11:12 +00:00
Forward-port the ubuntu-core-desktop changes to noble.
This commit is contained in:
parent
f89c096cbf
commit
e575146fae
@ -20,19 +20,17 @@ fi
|
||||
# Link output files somewhere launchpad-buildd will be able to find them.
|
||||
PREFIX="livecd.$PROJECT${SUBARCH:+-$SUBARCH}"
|
||||
|
||||
if [ "${IMAGEFORMAT:-}" = "ubuntu-image" ]; then
|
||||
# Use ubuntu-image instead of live-build
|
||||
if [ "${IMAGEFORMAT:-}" = "ubuntu-image" ] \
|
||||
|| [ "$PROJECT" = "ubuntu-core-desktop" ]; then
|
||||
# Use ubuntu-image instead (or as part) of live-build
|
||||
|
||||
export SNAPPY_STORE_NO_CDN=1
|
||||
LB_UBUNTU_IMAGE_CHANNEL="${LB_UBUNTU_IMAGE_CHANNEL:-candidate}"
|
||||
LB_UBUNTU_IMAGE_CHANNEL="${LB_UBUNTU_IMAGE_CHANNEL:-stable}"
|
||||
snap install \
|
||||
--classic --channel="$LB_UBUNTU_IMAGE_CHANNEL" ubuntu-image
|
||||
|
||||
# TODO: eventually, this should be handled by a single ubuntu-image
|
||||
# call without having to do a conditional on ubuntu-core/classic.
|
||||
# We could already do that, but then we'd still have to do the
|
||||
# compressing for the core images.
|
||||
if [ "$PROJECT" = "ubuntu-core" ]; then
|
||||
# Ubuntu Core images
|
||||
/snap/bin/ubuntu-image snap $UBUNTU_IMAGE_ARGS \
|
||||
-O output "$PREFIX".model-assertion
|
||||
# XXX: currently we only have one image generated, but really
|
||||
@ -41,8 +39,43 @@ if [ "${IMAGEFORMAT:-}" = "ubuntu-image" ]; then
|
||||
mv output/*.img "$PREFIX".img
|
||||
xz -0 -T4 "$PREFIX".img
|
||||
mv output/seed.manifest "$PREFIX".manifest
|
||||
|
||||
# All the builds are finished now, exit
|
||||
exit 0
|
||||
elif [ "$PROJECT" = "ubuntu-core-desktop" ]; then
|
||||
# Ubuntu Core Desktop payload image
|
||||
# Special case for ubuntu-core-desktop - we need to call
|
||||
# ubuntu-image twice, once for the core image payload and
|
||||
# then for the actual image.
|
||||
echo "Building the core image payload"
|
||||
cd config/
|
||||
/snap/bin/ubuntu-image snap $UBUNTU_IMAGE_PAYLOAD_ARGS \
|
||||
-O output ubuntu-core-desktop*.model-assertion
|
||||
mv output/*.img pc.img
|
||||
xz -0 -T4 pc.img
|
||||
rm -rf output/
|
||||
|
||||
# Prepare the source catalogue
|
||||
cat install-sources-in.yaml | sed "s/@SIZE@/$(stat -c%s pc.img.xz)/g" > ../"$PREFIX".install-sources.yaml
|
||||
|
||||
# We need to rename the image file so that it can be pulled
|
||||
# by the builder.
|
||||
mv pc.img.xz ../"$PREFIX".img.xz
|
||||
|
||||
# We need to make sure the autoinstall file is also exported.
|
||||
mv autoinstall.yaml ../"$PREFIX".autoinstall.yaml
|
||||
|
||||
# Useful to have the model-assertion exported as well.
|
||||
mv ubuntu-core-desktop*.model-assertion ../"$PREFIX".model-assertion
|
||||
|
||||
# Important: return to the previous directory
|
||||
cd ../
|
||||
|
||||
# Payload build finished, but now we need to build the rest with the
|
||||
# usual live-build tools.
|
||||
else
|
||||
/snap/bin/ubuntu-image classic --debug $UBUNTU_IMAGE_ARGS \
|
||||
# Ubuntu classic preinstalled images
|
||||
/snap/bin/ubuntu-image classic --verbose $UBUNTU_IMAGE_ARGS \
|
||||
-O output "$IMAGE_DEFINITION"
|
||||
# Since the output of the ubuntu-image call can vary based on what
|
||||
# kind of an image we build, the safest bet is to 'export' all the
|
||||
@ -59,9 +92,10 @@ if [ "${IMAGEFORMAT:-}" = "ubuntu-image" ]; then
|
||||
mv $artifact "$PREFIX".$extension
|
||||
done
|
||||
[ -f $PREFIX.img ] && xz -0 -T4 "$PREFIX".img
|
||||
fi
|
||||
|
||||
exit 0
|
||||
# All the builds are finished now, exit
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# Setup cleanup function
|
||||
|
@ -528,8 +528,13 @@ case $IMAGEFORMAT in
|
||||
else
|
||||
# classic images
|
||||
|
||||
# Sometimes per-project quirks are necessary
|
||||
IMAGE_PROJECT=$PROJECT
|
||||
[ "$IMAGE_PROJECT" = "ubuntu-cpc" ] && IMAGE_PROJECT="ubuntu-server"
|
||||
case "$IMAGE_PROJECT" in
|
||||
ubuntu-cpc)
|
||||
IMAGE_PROJECT="ubuntu-server"
|
||||
;;
|
||||
esac
|
||||
|
||||
LB_UBUNTU_IMAGES_REPO="${LB_UBUNTU_IMAGES_REPO:-git://git.launchpad.net/ubuntu-images}"
|
||||
LB_UBUNTU_IMAGES_BRANCH="${LB_UBUNTU_IMAGES_BRANCH:-$SUITE}"
|
||||
@ -832,6 +837,26 @@ case $PROJECT in
|
||||
esac
|
||||
;;
|
||||
|
||||
ubuntu-core-desktop)
|
||||
touch config/universe-enabled
|
||||
KERNEL_FLAVOURS='generic-hwe-22.04'
|
||||
PASSES_TO_LAYERS="true"
|
||||
|
||||
# the minimal layer, for minimal installs
|
||||
add_task minimal minimal
|
||||
# the live layer, contains all packages for the live session installer
|
||||
add_snap minimal.live ubuntu-core-desktop-installer/classic core22 snapd
|
||||
add_package minimal.live linux-$KERNEL_FLAVOURS plymouth-theme-spinner squashfs-tools snapd cloud-init gsettings-desktop-schemas yaru-theme-gtk lshw
|
||||
|
||||
echo "Configuring for additional payload preparation"
|
||||
UBUNTU_IMAGE_PAYLOAD_ARGS="--image-size 12G"
|
||||
EXTRA_SNAPS="$EXTRA_SNAPS evince firefox gnome-calculator gnome-characters gnome-clocks gnome-font-viewer gnome-logs gnome-system-monitor gnome-text-editor gnome-weather loupe snapd-desktop-integration snap-store ubuntu-core-desktop-init workshops"
|
||||
for snap in $EXTRA_SNAPS; do
|
||||
UBUNTU_IMAGE_PAYLOAD_ARGS="$UBUNTU_IMAGE_PAYLOAD_ARGS --snap $snap"
|
||||
done
|
||||
echo "UBUNTU_IMAGE_PAYLOAD_ARGS=\"$UBUNTU_IMAGE_PAYLOAD_ARGS\"" >> config/common
|
||||
;;
|
||||
|
||||
ubuntu-oem)
|
||||
HAS_MINIMAL=yes
|
||||
MINIMAL_NAME="Ubuntu Desktop for OEM (minimal)"
|
||||
@ -1411,7 +1436,7 @@ case $PROJECT:${SUBPROJECT:-} in
|
||||
ubuntu-cpc:*|ubuntu-server:live|ubuntu:desktop-preinstalled| \
|
||||
ubuntu-wsl:*|ubuntu-mini-iso:*|ubuntu:|ubuntu-oem:*| \
|
||||
ubuntustudio-dvd:*|edubuntu:*|ubuntu-budgie:*|ubuntucinnamon:*|xubuntu:*| \
|
||||
ubuntukylin:*|ubuntu-mate:*)
|
||||
ubuntukylin:*|ubuntu-mate:*|ubuntu-core-desktop:*)
|
||||
# Ensure that most things e.g. includes.chroot are copied as is
|
||||
for entry in /usr/share/livecd-rootfs/live-build/${PROJECT}/*; do
|
||||
case $entry in
|
||||
|
12
live-build/ubuntu-core-desktop/autoinstall.yaml
Normal file
12
live-build/ubuntu-core-desktop/autoinstall.yaml
Normal file
@ -0,0 +1,12 @@
|
||||
version: 1
|
||||
source:
|
||||
id: ubuntu-core-desktop
|
||||
search_drivers: false
|
||||
interactive-sections:
|
||||
- locale
|
||||
- keyboard
|
||||
- storage
|
||||
identity:
|
||||
username: ubuntu
|
||||
password: '$1$zB3Qu2ef$TKLhQpQlKRyCZGUdHFFMH/'
|
||||
hostname: ubuntu
|
21
live-build/ubuntu-core-desktop/hooks/020-ubuntu-live.chroot_early
Executable file
21
live-build/ubuntu-core-desktop/hooks/020-ubuntu-live.chroot_early
Executable file
@ -0,0 +1,21 @@
|
||||
#! /bin/sh
|
||||
|
||||
set -eu
|
||||
|
||||
case ${PASS:-} in
|
||||
minimal.live)
|
||||
;;
|
||||
*)
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
mkdir -p "/etc/initramfs-tools/conf.d"
|
||||
|
||||
cat <<EOF > /etc/initramfs-tools/conf.d/casperize.conf
|
||||
export CASPER_GENERATE_UUID=1
|
||||
EOF
|
||||
|
||||
cat <<EOF > /etc/initramfs-tools/conf.d/default-layer.conf
|
||||
LAYERFS_PATH=${PASS}.squashfs
|
||||
EOF
|
@ -0,0 +1,117 @@
|
||||
# The top level settings are used as module
|
||||
# and system configuration.
|
||||
|
||||
# A set of users which may be applied and/or used by various modules
|
||||
# when a 'default' entry is found it will reference the 'default_user'
|
||||
# from the distro configuration specified below
|
||||
users:
|
||||
- default
|
||||
|
||||
# If this is set, 'root' will not be able to ssh in and they
|
||||
# will get a message to login instead as the default $user
|
||||
disable_root: true
|
||||
|
||||
# This will cause the set+update hostname module to not operate (if true)
|
||||
preserve_hostname: true
|
||||
|
||||
ssh_pwauth: yes
|
||||
chpasswd:
|
||||
expire: false
|
||||
|
||||
# This is the initial network config.
|
||||
# It can be overwritten by cloud-init or subiquity.
|
||||
network:
|
||||
version: 2
|
||||
ethernets:
|
||||
zz-all-en:
|
||||
match:
|
||||
name: "en*"
|
||||
dhcp4: true
|
||||
zz-all-eth:
|
||||
match:
|
||||
name: "eth*"
|
||||
dhcp4: true
|
||||
|
||||
# We used to have a custom final_message here. Just use the default instead.
|
||||
|
||||
# Example datasource config
|
||||
# datasource:
|
||||
# Ec2:
|
||||
# metadata_urls: [ 'blah.com' ]
|
||||
# timeout: 5 # (defaults to 50 seconds)
|
||||
# max_wait: 10 # (defaults to 120 seconds)
|
||||
|
||||
# The modules that run in the 'init' stage
|
||||
cloud_init_modules:
|
||||
- bootcmd
|
||||
- write-files
|
||||
- ca-certs
|
||||
- rsyslog
|
||||
- users-groups
|
||||
- ssh
|
||||
|
||||
# The modules that run in the 'config' stage
|
||||
cloud_config_modules:
|
||||
# Emit the cloud config ready event
|
||||
# this can be used by upstart jobs for 'start on cloud-config'.
|
||||
- ssh-import-id
|
||||
- set-passwords
|
||||
- timezone
|
||||
- disable-ec2-metadata
|
||||
- runcmd
|
||||
|
||||
# The modules that run in the 'final' stage
|
||||
cloud_final_modules:
|
||||
- scripts-per-once
|
||||
- scripts-user
|
||||
- ssh-authkey-fingerprints
|
||||
- keys-to-console
|
||||
- phone-home
|
||||
- final-message
|
||||
|
||||
# System and/or distro specific settings
|
||||
# (not accessible to handlers/transforms)
|
||||
system_info:
|
||||
# This will affect which distro class gets used
|
||||
distro: ubuntu
|
||||
# Default user name + that default users groups (if added/used)
|
||||
default_user:
|
||||
name: installer
|
||||
lock_passwd: false
|
||||
gecos: Ubuntu
|
||||
groups: [adm, audio, cdrom, dialout, dip, floppy, lxd, netdev, plugdev, sudo, video]
|
||||
sudo: ["ALL=(ALL) NOPASSWD:ALL"]
|
||||
shell: /usr/bin/subiquity-shell
|
||||
# Automatically discover the best ntp_client
|
||||
ntp_client: auto
|
||||
# Other config here will be given to the distro class and/or path classes
|
||||
paths:
|
||||
cloud_dir: /var/lib/cloud/
|
||||
templates_dir: /etc/cloud/templates/
|
||||
upstart_dir: /etc/init/
|
||||
package_mirrors:
|
||||
- arches: [i386, amd64]
|
||||
failsafe:
|
||||
primary: http://archive.ubuntu.com/ubuntu
|
||||
security: http://security.ubuntu.com/ubuntu
|
||||
search:
|
||||
primary:
|
||||
- http://%(ec2_region)s.ec2.archive.ubuntu.com/ubuntu/
|
||||
- http://%(availability_zone)s.clouds.archive.ubuntu.com/ubuntu/
|
||||
- http://%(region)s.clouds.archive.ubuntu.com/ubuntu/
|
||||
security: []
|
||||
- arches: [arm64, armel, armhf]
|
||||
failsafe:
|
||||
primary: http://ports.ubuntu.com/ubuntu-ports
|
||||
security: http://ports.ubuntu.com/ubuntu-ports
|
||||
search:
|
||||
primary:
|
||||
- http://%(ec2_region)s.ec2.ports.ubuntu.com/ubuntu-ports/
|
||||
- http://%(availability_zone)s.clouds.ports.ubuntu.com/ubuntu-ports/
|
||||
- http://%(region)s.clouds.ports.ubuntu.com/ubuntu-ports/
|
||||
security: []
|
||||
- arches: [default]
|
||||
failsafe:
|
||||
primary: http://ports.ubuntu.com/ubuntu-ports
|
||||
security: http://ports.ubuntu.com/ubuntu-ports
|
||||
ssh_svcname: ssh
|
@ -0,0 +1,4 @@
|
||||
output: {all: '>> /var/log/cloud-init-output.log'}
|
||||
no_ssh_fingerprints: true
|
||||
ssh:
|
||||
emit_keys_to_console: false
|
@ -0,0 +1,2 @@
|
||||
[Journal]
|
||||
RateLimitIntervalSec=0
|
@ -0,0 +1,3 @@
|
||||
[Unit]
|
||||
JobRunningTimeoutSec=0s
|
||||
Wants=subiquity_config.mount
|
@ -0,0 +1,4 @@
|
||||
# systemd in 23.04+ uses a newer "compact" format by default which is not
|
||||
# understood by the systemd libraries from jammy used in the subiquity snap.
|
||||
[Service]
|
||||
Environment="SYSTEMD_JOURNAL_COMPACT=0"
|
@ -0,0 +1,4 @@
|
||||
# systemd in 22.04+ uses "hash table hardening" by default which is not
|
||||
# understood by the systemd libraries from focal used in the subiquity snap.
|
||||
[Service]
|
||||
Environment="SYSTEMD_JOURNAL_KEYED_HASH=0"
|
@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
exec sudo snap run subiquity
|
||||
|
@ -0,0 +1,3 @@
|
||||
[Service]
|
||||
ExecStart=
|
||||
ExecStart=-/sbin/agetty --noclear -n --autologin ubuntu-server %I $TERM
|
@ -0,0 +1 @@
|
||||
/dev/null
|
@ -0,0 +1 @@
|
||||
../media-filesystem.mount
|
@ -0,0 +1,9 @@
|
||||
[Unit]
|
||||
Description=Subiquity, the installer for Ubuntu Server %I
|
||||
After=snapd.seeded.service
|
||||
StartLimitInterval=0
|
||||
|
||||
[Service]
|
||||
Environment=SNAP_REEXEC=0
|
||||
ExecStart=
|
||||
ExecStart=/usr/bin/snap run subiquity.subiquity-service %I
|
@ -0,0 +1,4 @@
|
||||
[Service]
|
||||
StandardOutput=tty
|
||||
ExecStart=
|
||||
ExecStart=/usr/bin/snap run subiquity --ssh
|
@ -0,0 +1,14 @@
|
||||
[Unit]
|
||||
IgnoreOnIsolate=yes
|
||||
After=systemd-user-sessions.service plymouth-quit-wait.service snap.seeded.service
|
||||
|
||||
[Service]
|
||||
Environment=SNAP_REEXEC=0
|
||||
UtmpIdentifier=tty1
|
||||
TTYPath=/dev/tty1
|
||||
TTYReset=yes
|
||||
TTYVHangup=yes
|
||||
TTYVTDisallocate=yes
|
||||
KillMode=process
|
||||
IgnoreSIGPIPE=no
|
||||
SendSIGHUP=yes
|
@ -0,0 +1,2 @@
|
||||
[Service]
|
||||
Environment=SNAP_REEXEC=0
|
@ -0,0 +1,4 @@
|
||||
[Mount]
|
||||
What=/dev/disk/by-uuid/00c629d6-06ab-4dfd-b21e-c3186f34105d
|
||||
Where=/subiquity_config
|
||||
Type=ext4
|
@ -0,0 +1 @@
|
||||
/bin/true
|
9
live-build/ubuntu-core-desktop/includes.chroot/etc/hosts
Normal file
9
live-build/ubuntu-core-desktop/includes.chroot/etc/hosts
Normal file
@ -0,0 +1,9 @@
|
||||
127.0.0.1 localhost.localdomain localhost
|
||||
::1 localhost6.localdomain6 localhost6
|
||||
|
||||
# The following lines are desirable for IPv6 capable hosts
|
||||
::1 localhost ip6-localhost ip6-loopback
|
||||
fe00::0 ip6-localnet
|
||||
ff02::1 ip6-allnodes
|
||||
ff02::2 ip6-allrouters
|
||||
ff02::3 ip6-allhosts
|
11
live-build/ubuntu-core-desktop/install-sources-in.yaml
Normal file
11
live-build/ubuntu-core-desktop/install-sources-in.yaml
Normal file
@ -0,0 +1,11 @@
|
||||
- default: true
|
||||
description:
|
||||
en: Ubuntu Core Desktop.
|
||||
id: ubuntu-core-desktop
|
||||
locale_support: none
|
||||
name:
|
||||
en: Ubuntu Core Desktop
|
||||
path: filesystem.img.xz
|
||||
type: dd-xz:file
|
||||
size: @SIZE@
|
||||
variant: core
|
@ -0,0 +1,187 @@
|
||||
type: model
|
||||
authority-id: canonical
|
||||
revision: 5
|
||||
series: 16
|
||||
brand-id: canonical
|
||||
model: ubuntu-core-desktop-22-amd64
|
||||
architecture: amd64
|
||||
base: core22-desktop
|
||||
display-name: Ubuntu Core Desktop 22 (amd64)
|
||||
grade: signed
|
||||
snaps:
|
||||
-
|
||||
default-channel: 22/stable
|
||||
id: mZqHskGgGDECRCKP7h7ef3Rl2wTwyNfy
|
||||
name: pc-desktop
|
||||
type: gadget
|
||||
-
|
||||
default-channel: 23.10/stable
|
||||
id: pYVQrBcKmBa0mZ4CCN7ExT6jH8rY1hza
|
||||
name: pc-kernel
|
||||
type: kernel
|
||||
-
|
||||
default-channel: latest/edge/ubuntu-core-desktop
|
||||
id: PMrrV4ml8uWuEUDBT8dSGnKUYbevVhc4
|
||||
name: snapd
|
||||
type: snapd
|
||||
-
|
||||
default-channel: latest/stable
|
||||
id: qRMmQqNDz8kRUTqFIgqk2RzNNoC7jUZ6
|
||||
name: core22-desktop
|
||||
type: base
|
||||
-
|
||||
default-channel: latest/stable
|
||||
id: LVkazk0JLrL0ivuHRlv3wp3bK1nAgwtN
|
||||
name: ubuntu-desktop-session
|
||||
type: app
|
||||
-
|
||||
default-channel: latest/stable
|
||||
id: amcUKQILKXHHTlmSa7NMdnXSx02dNeeT
|
||||
name: core22
|
||||
type: base
|
||||
-
|
||||
default-channel: 22/stable
|
||||
id: RmBXKl6HO6YOC2DE4G2q1JzWImC04EUy
|
||||
name: network-manager
|
||||
type: app
|
||||
-
|
||||
default-channel: latest/stable
|
||||
id: EISPgh06mRh1vordZY9OZ34QHdd7OrdR
|
||||
name: bare
|
||||
type: base
|
||||
-
|
||||
default-channel: latest/stable
|
||||
id: jZLfBRzf1cYlYysIjD2bwSzNtngY0qit
|
||||
name: gtk-common-themes
|
||||
type: app
|
||||
-
|
||||
default-channel: latest/stable
|
||||
id: lATO8HzwVvrAPrlZRAWpfyrJKlAJrZS3
|
||||
name: gnome-42-2204
|
||||
type: app
|
||||
-
|
||||
default-channel: latest/stable
|
||||
id: m1eQacDdXCthEwWQrESei3Zao3d5gfJF
|
||||
name: cups
|
||||
type: app
|
||||
-
|
||||
default-channel: latest/stable
|
||||
id: WJKWBUuCDufOFw2p24tvkbbw02plGkbd
|
||||
name: ipp-usb
|
||||
type: app
|
||||
-
|
||||
default-channel: 22/stable
|
||||
id: dVK2PZeOLKA7vf1WPCap9F8luxTk9Oll
|
||||
name: avahi
|
||||
type: app
|
||||
-
|
||||
default-channel: 22/stable
|
||||
id: JmzJi9kQvHUWddZ32PDJpBRXUpGRxvNS
|
||||
name: bluez
|
||||
type: app
|
||||
-
|
||||
default-channel: latest/stable
|
||||
id: Si21Q1kjaZpyJ8TfGbAnxJ4y6KMv7FuW
|
||||
name: loupe
|
||||
presence: optional
|
||||
type: app
|
||||
-
|
||||
default-channel: latest/stable
|
||||
id: EDFg87ESUg9sAIlm0Vm5Wmr0LjiEonSm
|
||||
name: evince
|
||||
presence: optional
|
||||
type: app
|
||||
-
|
||||
default-channel: latest/stable/ubuntu-23.10
|
||||
id: 3wdHCAVyZEmYsCMFDE9qt92UV8rC8Wdk
|
||||
name: firefox
|
||||
presence: optional
|
||||
type: app
|
||||
-
|
||||
default-channel: latest/stable
|
||||
id: J8OcDPQ0JM8dbvk29HRqpWVI9kBw0atG
|
||||
name: gnome-calculator
|
||||
presence: optional
|
||||
type: app
|
||||
-
|
||||
default-channel: latest/stable
|
||||
id: qJcS3UjpF9AMJKWAiKwA5EWbm0y6Uduw
|
||||
name: gnome-characters
|
||||
presence: optional
|
||||
type: app
|
||||
-
|
||||
default-channel: latest/stable
|
||||
id: 8NtSF2nXW6krsxbXBYydy1j985k6ZsVK
|
||||
name: gnome-clocks
|
||||
presence: optional
|
||||
type: app
|
||||
-
|
||||
default-channel: latest/stable
|
||||
id: BzJuWXmCIpyjUKotXPWU2psnl8gEh4hm
|
||||
name: gnome-font-viewer
|
||||
presence: optional
|
||||
type: app
|
||||
-
|
||||
default-channel: latest/stable
|
||||
id: kIMfmZTJspWa8vtfbgU3W9Nbv4V5Qgmh
|
||||
name: gnome-logs
|
||||
presence: optional
|
||||
type: app
|
||||
-
|
||||
default-channel: latest/stable
|
||||
id: PZj2sEabMQrVUV1HKZmmmXSk3E6wKC9i
|
||||
name: gnome-text-editor
|
||||
presence: optional
|
||||
type: app
|
||||
-
|
||||
default-channel: latest/stable
|
||||
id: LhzK7p8214jufMYx1kz43QkWhFnOKdbr
|
||||
name: gnome-weather
|
||||
presence: optional
|
||||
type: app
|
||||
-
|
||||
default-channel: latest/stable
|
||||
id: J60k4JY0HppjwOjW8dZdYc8obXKxujRu
|
||||
name: lxd
|
||||
type: app
|
||||
-
|
||||
default-channel: latest/edge/ubuntu-core-desktop
|
||||
id: IrwRHakqtzhFRHJOOPxKVPU0Kk7Erhcu
|
||||
name: snapd-desktop-integration
|
||||
type: app
|
||||
-
|
||||
default-channel: latest/stable/ubuntu-23.10
|
||||
id: gjf3IPXoRiipCu9K0kVu52f0H56fIksg
|
||||
name: snap-store
|
||||
type: app
|
||||
-
|
||||
default-channel: latest/stable
|
||||
id: JMjaFobGn56fh1HepiaGuCxQgbWYnHc8
|
||||
name: workshops
|
||||
presence: optional
|
||||
type: app
|
||||
-
|
||||
default-channel: latest/stable
|
||||
id: 9BTClmjz31r0UltmbJ5nnGe0Xm1AzfMp
|
||||
name: gnome-system-monitor
|
||||
presence: optional
|
||||
type: app
|
||||
-
|
||||
default-channel: latest/stable
|
||||
id: xODwiAdjx9KGChvI1z9Xx2JWJE7oLFF6
|
||||
name: ubuntu-core-desktop-init
|
||||
type: app
|
||||
storage-safety: prefer-encrypted
|
||||
timestamp: 2023-10-21T10:19:41+00:00
|
||||
sign-key-sha3-384: 9tydnLa6MTJ-jaQTFUXEwHl1yRx7ZS4K5cyFDhYDcPzhS7uyEkDxdUjg9g08BtNn
|
||||
|
||||
AcLBXAQAAQoABgUCZTP+wgAKCRDgT5vottzAEia0D/9FyEOb4Qai+sJQ/ilVqZ1L0FicTIwa9/Ae
|
||||
khv5xXYGmukSzkIUGNYjvcCJByxgMiDsFOIIzrOYlJPmRFtdFOwm3KGS2JGthIUbQfElVbyPswZh
|
||||
cgqYVuGMiRw8udlZHOmy2rWIKxo/uLMEsZzZuk83nC+ZzAoQoHOmcELuRtIc1qz9XAf6n7pd79S2
|
||||
10cxG7vuaA1iVbqqtbSlQCAdKTdOCxw2/NHTZ8mIRtAQZGA1LP8IMEyv2Fi3FVpmN2derV78sO3f
|
||||
kCf/KdYeD6d1a03WchIDsuPlvTpTOU3TSX07QWj+WrZHMDh9gpQHDdSIWswBCPIHa10R6aDRRUUK
|
||||
/5dJDq77/CyY/Q/ivcAuFiTceghKVcx3Zci+VX2WgvLK9qYHYHSilb70nTvsDFUA/bKep57/xqeG
|
||||
j03cvUaqHb6li2T2SmyzaQOGV5MF6XxlhcLWY19PHc2/ocLpukL4vxkl18Ur3FoYAOLODwrlxueS
|
||||
FDu7u+qf+Ki2+f0ZtN70EPcFAQAJ4C0N6f9j9Z+9BQptTlVwrIzIUxIwxtkp27YvERno6bZPBRYs
|
||||
T4YdzVSdPKXsItT/GUiqYwdgPTi61FZXTN/47yIaHZLUwMT9gg/9XgNqIHKIdFHxm6GWVxL0AqOp
|
||||
JPIfqrsmVbewevzwV1Rgo1LbPKVVrjqPtW0QQlkS8w==
|
Loading…
x
Reference in New Issue
Block a user