From 5e5470a66d7202a613a0913e198a3028e69824eb Mon Sep 17 00:00:00 2001 From: Steven Trotter Date: Tue, 25 Mar 2025 07:38:53 +0000 Subject: [PATCH 1/4] WIP: Need to implement tests next which shouldn't take too long --- go.mod | 7 +- go.sum | 8 +- internal/packages.go | 111 +++ internal/packages_test.go | 1749 +++++++++++++++++++++++++++++++++++++ internal/util.go | 15 + main.go | 387 ++++---- 6 files changed, 2087 insertions(+), 190 deletions(-) create mode 100644 internal/packages.go create mode 100644 internal/packages_test.go create mode 100644 internal/util.go diff --git a/go.mod b/go.mod index 96d4e6c..530a8d2 100644 --- a/go.mod +++ b/go.mod @@ -3,9 +3,8 @@ module github.com/compliance-framework/plugin-apt-versions go 1.23.2 require ( - github.com/compliance-framework/agent v0.0.15 - github.com/compliance-framework/configuration-service v0.0.5 - github.com/golang/protobuf v1.5.4 + github.com/compliance-framework/agent v0.1.1 + github.com/compliance-framework/configuration-service v0.1.1 github.com/google/uuid v1.6.0 github.com/hashicorp/go-hclog v1.5.0 github.com/hashicorp/go-plugin v1.6.2 @@ -17,13 +16,13 @@ require ( github.com/agnivade/levenshtein v1.2.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/defenseunicorns/go-oscal v0.6.2 // indirect github.com/fatih/color v1.15.0 // indirect github.com/go-ini/ini v1.67.0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-viper/mapstructure/v2 v2.2.1 // indirect github.com/gobwas/glob v0.2.3 // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/mattn/go-colorable v0.1.13 // indirect diff --git a/go.sum b/go.sum index 5c95b58..375f723 100644 --- a/go.sum +++ b/go.sum @@ -28,10 +28,10 @@ github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/compliance-framework/agent v0.0.15 h1:VEB3xI3VSgTeudw8L+Czv9VCMt6vM7Nutd+JeMjWjuk= -github.com/compliance-framework/agent v0.0.15/go.mod h1:/ZxHkJJm/wthxm+W7atUgSMfL2217cCaBgN6dfsDSYo= -github.com/compliance-framework/configuration-service v0.0.5 h1:vK9mSb8dzaaTt+hd+g2g3+8nvfr/Ha5pMXB4yiYMA64= -github.com/compliance-framework/configuration-service v0.0.5/go.mod h1:irXS+U+ZGaNrOmaNqb+pMmo+4BxSZJ0/vs4ne/5qVJc= +github.com/compliance-framework/agent v0.1.1 h1:uQ4idgwOMqrgM0JeYCtBv20HZoMymsH2nownrkl457w= +github.com/compliance-framework/agent v0.1.1/go.mod h1:jy/26xgTx9+at64ipTV1oo80pTVyhtlZaSMViQ3cVVQ= +github.com/compliance-framework/configuration-service v0.1.1 h1:p/r5vq1FLe0S8j/kLhth4Dvda8xajVPOBjnO9QauMjM= +github.com/compliance-framework/configuration-service v0.1.1/go.mod h1:tLKJKXbQbY9Pg/e3BJtJVkqxaejXJMHoE8Yp0NW4lDE= github.com/containerd/containerd v1.7.24 h1:zxszGrGjrra1yYJW/6rhm9cJ1ZQ8rkKBR48brqsa7nA= github.com/containerd/containerd v1.7.24/go.mod h1:7QUzfURqZWCZV7RLNEn1XjUCQLEf0bkaK4GjUaZehxw= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= diff --git a/internal/packages.go b/internal/packages.go new file mode 100644 index 0000000..f16a48c --- /dev/null +++ b/internal/packages.go @@ -0,0 +1,111 @@ +package internal + +import ( + "bytes" + "fmt" + "os/exec" + "strings" + + "github.com/compliance-framework/agent/runner/proto" + "github.com/hashicorp/go-hclog" +) + +// GetInstalledPackages retrieves the list of installed packages in JSON format +func GetInstalledPackages(logger hclog.Logger) (map[string]any, []*proto.Step, error) { + steps := make([]*proto.Step, 0) + + command := `dpkg-query -W -f='${Package} ${Version}\n'` + logger.Debug(fmt.Sprintf("RUNNING COMMAND: %s", command)) + dpkgCmd := exec.Command("bash", "-c", command) + + var dpkgStdout bytes.Buffer + var dpkgStderr bytes.Buffer + dpkgCmd.Stdout = &dpkgStdout + dpkgCmd.Stderr = &dpkgStderr + if err := dpkgCmd.Run(); err != nil { + if dpkgStderr.Len() > 0 { + logger.Error(fmt.Sprintf("stderr: %s", dpkgStderr.String())) + } + return nil, steps, fmt.Errorf("error running dpkg-query: %w", err) + } + + if dpkgStderr.Len() > 0 { + logger.Warn(fmt.Sprintf("error found running dpkg-query, continuing as exited successfully: %s", dpkgStderr.String())) + } + + // Parse the output into a map + packages := getPackages(dpkgStdout.String()) + + return packages, steps, nil +} + +func getPackages(output string) map[string]any { + packages := make(map[string]any) + + for _, line := range strings.Split(output, "\n") { + if len(line) == 0 { + continue + } + + parts := strings.Split(line, " ") + if len(parts) != 2 { + continue + } + + packageName := parts[0] + packageVersion := getVersion(parts[1]) + + packages[packageName] = packageVersion + } + + return packages +} + +func getVersion(version string) string { + // // If the version contains a colon, we'll split the string and return the version from the second part + // if colonIndex := strings.Index(version, ":"); colonIndex != -1 { + // return version[colonIndex+1:] + // } + + // // If we have any of the characters, '-', '+', '~', we'll split the string and return the version from the first part + // if dashIndex := strings.IndexAny(version, "-+~"); dashIndex != -1 { + // version = version[:dashIndex] + // } + + // // Split the version into parts + // parts := strings.Split(version, ".") + + // // Check each part it just a number, if it's not we'll split the part and only keep the number + // for i, part := range parts { + // // If the part contains a string after a number we skip from the number onwards + // for j, char := range part { + // if char >= '0' && char <= '9' { + // continue + // } + // parts[i] = part[:j] + // break + // } + // } + + // // Check each part for leading zeros and remove them + // for i, part := range parts { + // for j, char := range part { + // if char != '0' { + // parts[i] = part[j:] + // break + // } + // } + // } + + // // Make sure we have exactly 3 parts separated by a dot, if we don't we append 0 to the version, if more we skip the rest + // if len(parts) < 3 { + // for i := len(parts); i < 3; i++ { + // version += ".0" + // } + // } + // if len(parts) > 3 { + // version = strings.Join(parts[:3], ".") + // } + + return version +} diff --git a/internal/packages_test.go b/internal/packages_test.go new file mode 100644 index 0000000..e727acd --- /dev/null +++ b/internal/packages_test.go @@ -0,0 +1,1749 @@ +package internal + +import ( + "testing" +) + +func TestGetSimplePackage(t *testing.T) { + packages := getPackages("openssh-server 1.2.3\n") + + version := packages["openssh-server"].(string) + if version != "1.2.3" { + t.Errorf("Version not correctly processed") + } +} + +func TestGetSimplePackage(t *testing.T) { + packages := getPackages("openssh-server 1.2.3\n") + + version := packages["openssh-server"].(string) + if version != "1.2.3" { + t.Errorf("Version not correctly processed") + } +} + +// accountsservice:23.13.9-2ubuntu6 +// acl:2.3.2-1build1.1 +// adduser:3.137ubuntu1 +// adwaita-icon-theme:46.0-1 +// alsa-base:1.0.25+dfsg-0ubuntu7 +// alsa-topology-conf:1.2.5.1-2 +// alsa-ucm-conf:1.2.10-1ubuntu5.4 +// alsa-utils:1.2.9-1ubuntu5 +// amd64-microcode:3.20231019.1ubuntu2.1 +// anacron:2.3-39ubuntu2 +// apg:2.2.3.dfsg.1-5build3 +// apparmor:4.0.1really4.0.1-0ubuntu0.24.04.3 +// apport:2.28.1-0ubuntu3.5 +// apport-core-dump-handler:2.28.1-0ubuntu3.5 +// apport-gtk:2.28.1-0ubuntu3.5 +// apport-symptoms:0.25 +// appstream:1.0.2-1build6 +// apt:2.7.14build2 +// apt-config-icons:1.0.2-1build6 +// apt-config-icons-hidpi:1.0.2-1build6 +// apt-transport-https:2.7.14build2 +// apt-utils:2.7.14build2 +// aptdaemon:1.1.1+bzr982-0ubuntu44 +// aptdaemon-data:1.1.1+bzr982-0ubuntu44 +// aspell:0.60.8.1-1build1 +// aspell-en:2020.12.07-0-1 +// at-spi2-common:2.52.0-1build1 +// at-spi2-core:2.52.0-1build1 +// avahi-daemon:0.8-13ubuntu6 +// baobab:46.0-1build1 +// base-files:13ubuntu10.2 +// base-passwd:3.6.3build1 +// bash:5.2.21-2ubuntu4 +// bash-completion:1:2.11-8 +// bc:1.07.1-3ubuntu4 +// binaryen:108-1 +// bind9-dnsutils:1:9.18.30-0ubuntu0.24.04.2 +// bind9-host:1:9.18.30-0ubuntu0.24.04.2 +// bind9-libs:1:9.18.30-0ubuntu0.24.04.2 +// binutils:2.42-4ubuntu2.4 +// binutils-common:2.42-4ubuntu2.4 +// binutils-x86-64-linux-gnu:2.42-4ubuntu2.4 +// bison:2:3.8.2+dfsg-1build2 +// bluez:5.72-0ubuntu5.1 +// bluez-cups:5.72-0ubuntu5.1 +// bluez-obexd:5.72-0ubuntu5.1 +// bolt:0.9.7-1 +// bpfcc-tools:0.29.1+ds-1ubuntu7 +// bpftrace:0.20.2-1ubuntu4.3 +// brltty:6.6-4ubuntu5 +// bsdextrautils:2.39.3-9ubuntu6.2 +// bsdutils:1:2.39.3-9ubuntu6.2 +// bubblewrap:0.9.0-1ubuntu0.1 +// build-essential:12.10ubuntu1 +// busybox-initramfs:1:1.36.1-6ubuntu3.1 +// busybox-static:1:1.36.1-6ubuntu3.1 +// bzip2:1.0.8-5.1build0.1 +// bzip2-doc:1.0.8-5.1build0.1 +// ca-certificates:20240203 +// ca-certificates-java:20240118 +// cloud-guest-utils:0.33-1 +// cloud-init:24.4.1-0ubuntu0~24.04.1 +// cmake:3.28.3-1build7 +// cmake-data:3.28.3-1build7 +// colord:1.4.7-1build2 +// colord-data:1.4.7-1build2 +// command-not-found:23.04.0 +// console-setup:1.226ubuntu1 +// console-setup-linux:1.226ubuntu1 +// containerd.io:1.7.25-1 +// coreutils:9.4-3ubuntu6 +// cpio:2.15+dfsg-1ubuntu2 +// cpp:4:13.2.0-7ubuntu1 +// cpp-13:13.3.0-6ubuntu2~24.04 +// cpp-13-x86-64-linux-gnu:13.3.0-6ubuntu2~24.04 +// cpp-x86-64-linux-gnu:4:13.2.0-7ubuntu1 +// cracklib-runtime:2.9.6-5.1build2 +// cron:3.0pl1-184ubuntu2 +// cron-daemon-common:3.0pl1-184ubuntu2 +// cuda-cccl-12-6:12.6.77-1 +// cuda-command-line-tools-12-6:12.6.3-1 +// cuda-compiler-12-6:12.6.3-1 +// cuda-crt-12-6:12.6.85-1 +// cuda-cudart-12-6:12.6.77-1 +// cuda-cudart-dev-12-6:12.6.77-1 +// cuda-cuobjdump-12-6:12.6.77-1 +// cuda-cupti-12-6:12.6.80-1 +// cuda-cupti-dev-12-6:12.6.80-1 +// cuda-cuxxfilt-12-6:12.6.77-1 +// cuda-documentation-12-6:12.6.77-1 +// cuda-driver-dev-12-6:12.6.77-1 +// cuda-gdb-12-6:12.6.77-1 +// cuda-keyring:1.1-1 +// cuda-libraries-12-6:12.6.3-1 +// cuda-libraries-dev-12-6:12.6.3-1 +// cuda-nsight-12-6:12.6.77-1 +// cuda-nsight-compute-12-6:12.6.3-1 +// cuda-nsight-systems-12-6:12.6.3-1 +// cuda-nvcc-12-6:12.6.85-1 +// cuda-nvdisasm-12-6:12.6.77-1 +// cuda-nvml-dev-12-6:12.6.77-1 +// cuda-nvprof-12-6:12.6.80-1 +// cuda-nvprune-12-6:12.6.77-1 +// cuda-nvrtc-12-6:12.6.85-1 +// cuda-nvrtc-dev-12-6:12.6.85-1 +// cuda-nvtx-12-6:12.6.77-1 +// cuda-nvvm-12-6:12.6.85-1 +// cuda-nvvp-12-6:12.6.80-1 +// cuda-opencl-12-6:12.6.77-1 +// cuda-opencl-dev-12-6:12.6.77-1 +// cuda-profiler-api-12-6:12.6.77-1 +// cuda-sanitizer-12-6:12.6.77-1 +// cuda-toolkit-12-6:12.6.3-1 +// cuda-toolkit-12-6-config-common:12.6.77-1 +// cuda-toolkit-12-config-common:12.8.90-1 +// cuda-toolkit-config-common:12.8.90-1 +// cuda-tools-12-6:12.6.3-1 +// cuda-visual-tools-12-6:12.6.3-1 +// cups:2.4.7-1.2ubuntu7.3 +// cups-browsed:2.0.0-0ubuntu10.3 +// cups-bsd:2.4.7-1.2ubuntu7.3 +// cups-client:2.4.7-1.2ubuntu7.3 +// cups-common:2.4.7-1.2ubuntu7.3 +// cups-core-drivers:2.4.7-1.2ubuntu7.3 +// cups-daemon:2.4.7-1.2ubuntu7.3 +// cups-filters:2.0.0-0ubuntu4 +// cups-filters-core-drivers:2.0.0-0ubuntu4 +// cups-ipp-utils:2.4.7-1.2ubuntu7.3 +// cups-pk-helper:0.2.6-1ubuntu8 +// cups-ppdc:2.4.7-1.2ubuntu7.3 +// cups-server-common:2.4.7-1.2ubuntu7.3 +// curl:8.5.0-2ubuntu10.6 +// dash:0.5.12-6ubuntu5 +// dbus:1.14.10-4ubuntu4.1 +// dbus-bin:1.14.10-4ubuntu4.1 +// dbus-daemon:1.14.10-4ubuntu4.1 +// dbus-session-bus-common:1.14.10-4ubuntu4.1 +// dbus-system-bus-common:1.14.10-4ubuntu4.1 +// dbus-user-session:1.14.10-4ubuntu4.1 +// dc:1.07.1-3ubuntu4 +// dconf-cli:0.40.0-4build2 +// dconf-gsettings-backend:0.40.0-4build2 +// dconf-service:0.40.0-4build2 +// debconf:1.5.86ubuntu1 +// debconf-i18n:1.5.86ubuntu1 +// debianutils:5.17build1 +// default-jre:2:1.21-75+exp1 +// default-jre-headless:2:1.21-75+exp1 +// desktop-file-utils:0.27-2build1 +// dhcpcd-base:1:10.0.6-1ubuntu3.1 +// dictionaries-common:1.29.7 +// diffutils:1:3.10-1build1 +// dirmngr:2.4.4-2ubuntu17 +// distro-info:1.7build1 +// distro-info-data:0.60ubuntu0.2 +// dkms:3.0.11-1ubuntu13 +// dmidecode:3.5-3ubuntu0.1 +// dmsetup:2:1.02.185-3ubuntu3.2 +// dmz-cursor-theme:0.4.5ubuntu1 +// dns-root-data:2024071801~ubuntu0.24.04.1 +// dnsmasq-base:2.90-2build2 +// docbook-xml:4.5-12 +// docker-buildx-plugin:0.22.0-1~ubuntu.24.04~noble +// docker-ce:5:28.0.2-1~ubuntu.24.04~noble +// docker-ce-cli:5:28.0.2-1~ubuntu.24.04~noble +// docker-ce-rootless-extras:5:28.0.2-1~ubuntu.24.04~noble +// docker-compose-plugin:2.34.0-1~ubuntu.24.04~noble +// dosfstools:4.2-1.1build1 +// dpkg:1.22.6ubuntu6.1 +// dpkg-dev:1.22.6ubuntu6.1 +// dracut-install:060+5-1ubuntu3.3 +// dvisvgm:3.2.1+ds-1build1 +// e2fsprogs:1.47.0-2.4~exp1ubuntu4.1 +// e2fsprogs-l10n:1.47.0-2.4~exp1ubuntu4.1 +// eatmydata:131-1ubuntu1 +// ed:1.20.1-1 +// efibootmgr:18-1build2 +// eject:2.39.3-9ubuntu6.2 +// emacsen-common:3.0.5 +// enchant-2:2.3.3-2build2 +// eog:45.3-1ubuntu2 +// espeak-ng-data:1.51+dfsg-12build1 +// ethtool:1:6.7-1build1 +// evince:46.3.1-0ubuntu1 +// evince-common:46.3.1-0ubuntu1 +// evolution-data-server:3.52.3-0ubuntu1 +// evolution-data-server-common:3.52.3-0ubuntu1 +// fakeroot:1.33-1 +// fdisk:2.39.3-9ubuntu6.2 +// file:1:5.45-3build1 +// findutils:4.9.0-5build1 +// firefox:1:1snap1-0ubuntu5 +// firmware-sof-signed:2023.12.1-1ubuntu1.4 +// flex:2.6.4-8.2build1 +// fontconfig:2.15.0-1.1ubuntu2 +// fontconfig-config:2.15.0-1.1ubuntu2 +// fonts-dejavu-core:2.37-8 +// fonts-dejavu-extra:2.37-8 +// fonts-dejavu-mono:2.37-8 +// fonts-droid-fallback:1:6.0.1r16-1.1build1 +// fonts-liberation:1:2.1.5-3 +// fonts-liberation-sans-narrow:1:1.07.6-4 +// fonts-lmodern:2.005-1 +// fonts-noto-cjk:1:20230817+repack1-3 +// fonts-noto-color-emoji:2.047-0ubuntu0.24.04.1 +// fonts-noto-core:20201225-2 +// fonts-noto-mono:20201225-2 +// fonts-ubuntu:0.869+git20240321-0ubuntu1 +// fonts-urw-base35:20200910-8 +// foomatic-db-compressed-ppds:20230202-1 +// fprintd:1.94.3-1 +// friendly-recovery:0.2.42 +// ftp:20230507-2build3 +// fuse3:3.14.0-5build1 +// fwupd:1.9.28-0ubuntu1~24.04.1 +// fwupd-signed:1.52+1.4-1 +// g++:4:13.2.0-7ubuntu1 +// g++-13:13.3.0-6ubuntu2~24.04 +// g++-13-x86-64-linux-gnu:13.3.0-6ubuntu2~24.04 +// g++-x86-64-linux-gnu:4:13.2.0-7ubuntu1 +// gamemode:1.8.1-2build1 +// gamemode-daemon:1.8.1-2build1 +// gcc:4:13.2.0-7ubuntu1 +// gcc-13:13.3.0-6ubuntu2~24.04 +// gcc-13-base:13.3.0-6ubuntu2~24.04 +// gcc-13-x86-64-linux-gnu:13.3.0-6ubuntu2~24.04 +// gcc-14-base:14.2.0-4ubuntu2~24.04 +// gcc-x86-64-linux-gnu:4:13.2.0-7ubuntu1 +// gcr:3.41.2-1build3 +// gcr4:4.2.0-5 +// gdb:15.0.50.20240403-0ubuntu1 +// gdisk:1.0.10-1build1 +// gdm3:46.2-1ubuntu1~24.04.1 +// gds-tools-12-6:1.11.1.6-1 +// geoclue-2.0:2.7.0-3ubuntu7 +// geocode-glib-common:3.26.3-6build3 +// gettext-base:0.21-14ubuntu2 +// ghostscript:10.02.1~dfsg1-0ubuntu7.4 +// gir1.2-accountsservice-1.0:23.13.9-2ubuntu6 +// gir1.2-adw-1:1.5.0-1ubuntu2 +// gir1.2-atk-1.0:2.52.0-1build1 +// gir1.2-atspi-2.0:2.52.0-1build1 +// gir1.2-freedesktop:1.80.1-1 +// gir1.2-gck-2:4.2.0-5 +// gir1.2-gcr-4:4.2.0-5 +// gir1.2-gdesktopenums-3.0:46.1-0ubuntu1 +// gir1.2-gdkpixbuf-2.0:2.42.10+dfsg-3ubuntu3.1 +// gir1.2-gdm-1.0:46.2-1ubuntu1~24.04.1 +// gir1.2-geoclue-2.0:2.7.0-3ubuntu7 +// gir1.2-girepository-2.0:1.80.1-1 +// gir1.2-glib-2.0:2.80.0-6ubuntu3.2 +// gir1.2-gmenu-3.0:3.36.0-1.1ubuntu3 +// gir1.2-gnomeautoar-0.1:0.4.4-2build4 +// gir1.2-gnomebg-4.0:44.0-5build2 +// gir1.2-gnomebluetooth-3.0:46.0-1ubuntu1 +// gir1.2-gnomedesktop-3.0:44.0-5build2 +// gir1.2-gnomedesktop-4.0:44.0-5build2 +// gir1.2-graphene-1.0:1.10.8-3build2 +// gir1.2-gstreamer-1.0:1.24.2-1ubuntu0.1 +// gir1.2-gtk-3.0:3.24.41-4ubuntu1.2 +// gir1.2-gtk-4.0:4.14.2+ds-1ubuntu1 +// gir1.2-gweather-4.0:4.4.2-1build1 +// gir1.2-handy-1:1.8.3-1build2 +// gir1.2-harfbuzz-0.0:8.3.0-2build2 +// gir1.2-ibus-1.0:1.5.29-2 +// gir1.2-javascriptcoregtk-4.1:2.46.6-0ubuntu0.24.04.1 +// gir1.2-javascriptcoregtk-6.0:2.46.6-0ubuntu0.24.04.1 +// gir1.2-mutter-14:46.2-1ubuntu0.24.04.6 +// gir1.2-nm-1.0:1.46.0-1ubuntu2.2 +// gir1.2-nma4-1.0:1.10.6-3build2 +// gir1.2-notify-0.7:0.8.3-1build2 +// gir1.2-packagekitglib-1.0:1.2.8-2ubuntu1.2 +// gir1.2-pango-1.0:1.52.1+ds-1build1 +// gir1.2-peas-1.0:1.36.0-3build4 +// gir1.2-polkit-1.0:124-2ubuntu1.24.04.2 +// gir1.2-rsvg-2.0:2.58.0+dfsg-1build1 +// gir1.2-secret-1:0.21.4-1build3 +// gir1.2-snapd-2:1.64-0ubuntu5 +// gir1.2-soup-3.0:3.4.4-5ubuntu0.1 +// gir1.2-upowerglib-1.0:1.90.3-1 +// gir1.2-vte-2.91:0.76.0-1ubuntu0.1 +// gir1.2-webkit-6.0:2.46.6-0ubuntu0.24.04.1 +// gir1.2-webkit2-4.1:2.46.6-0ubuntu0.24.04.1 +// gir1.2-wnck-3.0:43.0-3build4 +// git:1:2.43.0-1ubuntu7.2 +// git-man:1:2.43.0-1ubuntu7.2 +// gjs:1.80.2-1build2 +// gkbd-capplet:3.28.1-1build3 +// glib-networking:2.80.0-1build1 +// glib-networking-common:2.80.0-1build1 +// glib-networking-services:2.80.0-1build1 +// gnome-accessibility-themes:3.28-2ubuntu5 +// gnome-bluetooth-3-common:46.0-1ubuntu1 +// gnome-bluetooth-sendto:46.0-1ubuntu1 +// gnome-calculator:1:46.1-1ubuntu1~24.04.1 +// gnome-characters:46.0-1build1 +// gnome-clocks:46.0-1build1 +// gnome-control-center:1:46.5-0ubuntu0.24.04.1 +// gnome-control-center-data:1:46.5-0ubuntu0.24.04.1 +// gnome-control-center-faces:1:46.5-0ubuntu0.24.04.1 +// gnome-desktop3-data:44.0-5build2 +// gnome-disk-utility:46.0-1ubuntu3 +// gnome-font-viewer:46.0-1build1 +// gnome-initial-setup:46.3-1ubuntu3~24.04.1 +// gnome-keyring:46.1-2build1 +// gnome-keyring-pkcs11:46.1-2build1 +// gnome-logs:45.0-1build1 +// gnome-menus:3.36.0-1.1ubuntu3 +// gnome-online-accounts:3.50.4-0ubuntu2 +// gnome-power-manager:43.0-2build2 +// gnome-remote-desktop:46.3-0ubuntu1 +// gnome-session-bin:46.0-1ubuntu4 +// gnome-session-canberra:0.30-10ubuntu10 +// gnome-session-common:46.0-1ubuntu4 +// gnome-settings-daemon:46.0-1ubuntu1 +// gnome-settings-daemon-common:46.0-1ubuntu1 +// gnome-shell:46.0-0ubuntu6~24.04.6 +// gnome-shell-common:46.0-0ubuntu6~24.04.6 +// gnome-shell-extension-appindicator:58-1ubuntu24.04.1 +// gnome-shell-extension-desktop-icons-ng:46+really47.0.9-1ubuntu1 +// gnome-shell-extension-ubuntu-dock:90ubuntu2 +// gnome-shell-extension-ubuntu-tiling-assistant:46-1ubuntu1.1 +// gnome-startup-applications:46.0-1ubuntu4 +// gnome-system-monitor:46.0-1build1 +// gnome-terminal:3.52.0-1ubuntu2 +// gnome-terminal-data:3.52.0-1ubuntu2 +// gnome-text-editor:46.3-0ubuntu2 +// gnome-themes-extra:3.28-2ubuntu5 +// gnome-themes-extra-data:3.28-2ubuntu5 +// gnome-user-docs:46.0-1ubuntu1 +// gnupg:2.4.4-2ubuntu17 +// gnupg-l10n:2.4.4-2ubuntu17 +// gnupg-utils:2.4.4-2ubuntu17 +// gpg:2.4.4-2ubuntu17 +// gpg-agent:2.4.4-2ubuntu17 +// gpg-wks-client:2.4.4-2ubuntu17 +// gpgconf:2.4.4-2ubuntu17 +// gpgsm:2.4.4-2ubuntu17 +// gpgv:2.4.4-2ubuntu17 +// grep:3.11-4build1 +// groff-base:1.23.0-3build2 +// grub-common:2.12-1ubuntu7.1 +// grub-efi-amd64:2.12-1ubuntu7.1 +// grub-efi-amd64-bin:2.12-1ubuntu7.1 +// grub-efi-amd64-signed:1.202.2+2.12-1ubuntu7.1 +// grub-gfxpayload-lists:0.7build2 +// grub-pc:2.12-1ubuntu7.1 +// grub-pc-bin:2.12-1ubuntu7.1 +// grub2-common:2.12-1ubuntu7.1 +// gsettings-desktop-schemas:46.1-0ubuntu1 +// gsettings-ubuntu-schemas:0.0.7+21.10.20210712-0ubuntu3 +// gstreamer1.0-alsa:1.24.2-1ubuntu0.2 +// gstreamer1.0-gl:1.24.2-1ubuntu0.2 +// gstreamer1.0-packagekit:1.2.8-2ubuntu1.2 +// gstreamer1.0-pipewire:1.0.5-1ubuntu3 +// gstreamer1.0-plugins-base:1.24.2-1ubuntu0.2 +// gstreamer1.0-plugins-base-apps:1.24.2-1ubuntu0.2 +// gstreamer1.0-plugins-good:1.24.2-1ubuntu1.1 +// gstreamer1.0-tools:1.24.2-1ubuntu0.1 +// gstreamer1.0-x:1.24.2-1ubuntu0.2 +// gtk-update-icon-cache:3.24.41-4ubuntu1.2 +// gtk2-engines-murrine:0.98.2-4 +// gtk2-engines-pixbuf:2.24.33-4ubuntu1.1 +// gvfs:1.54.0-1ubuntu2 +// gvfs-backends:1.54.0-1ubuntu2 +// gvfs-common:1.54.0-1ubuntu2 +// gvfs-daemons:1.54.0-1ubuntu2 +// gvfs-fuse:1.54.0-1ubuntu2 +// gvfs-libs:1.54.0-1ubuntu2 +// gzip:1.12-1ubuntu3 +// hdparm:9.65+ds-1build1 +// heif-gdk-pixbuf:1.17.6-1ubuntu4.1 +// heif-thumbnailer:1.17.6-1ubuntu4.1 +// hicolor-icon-theme:0.17-2 +// hostname:3.23+nmu2ubuntu2 +// hplip:3.23.12+dfsg0-0ubuntu5 +// hplip-data:3.23.12+dfsg0-0ubuntu5 +// humanity-icon-theme:0.6.16 +// hunspell-en-us:1:2020.12.07-2 +// hwdata:0.379-1 +// ibus:1.5.29-2 +// ibus-data:1.5.29-2 +// ibus-gtk:1.5.29-2 +// ibus-gtk3:1.5.29-2 +// ibus-gtk4:1.5.29-2 +// ibus-table:1.17.4-2 +// ibus-table-cangjie-big:1.8.12-1 +// ibus-table-cangjie3:1.8.12-1 +// ibus-table-cangjie5:1.8.12-1 +// ibverbs-providers:50.0-2build2 +// icu-devtools:74.2-1ubuntu3.1 +// ieee-data:20220827.1 +// iio-sensor-proxy:3.5-1build2 +// im-config:0.57-2 +// inetutils-telnet:2:2.5-3ubuntu4 +// info:7.1-3build2 +// init:1.66ubuntu1 +// init-system-helpers:1.66ubuntu1 +// initramfs-tools:0.142ubuntu25.5 +// initramfs-tools-bin:0.142ubuntu25.5 +// initramfs-tools-core:0.142ubuntu25.5 +// inputattach:1:1.8.1-2build1 +// install-info:7.1-3build2 +// intel-microcode:3.20250211.0ubuntu0.24.04.1 +// ipp-usb:0.9.24-0ubuntu3.2 +// iproute2:6.1.0-1ubuntu6 +// iptables:1.8.10-3ubuntu2 +// iputils-ping:3:20240117-1build1 +// iputils-tracepath:3:20240117-1build1 +// iso-codes:4.16.0-1 +// iucode-tool:2.3.1-3build1 +// java-common:0.75+exp1 +// javascript-common:11+nmu1 +// jq:1.7.1-3build1 +// kbd:2.6.4-2ubuntu2 +// kerneloops:0.12+git20140509-6ubuntu8 +// keyboard-configuration:1.226ubuntu1 +// keyboxd:2.4.4-2ubuntu17 +// klibc-utils:2.0.13-4ubuntu0.1 +// kmod:31+20240202-2ubuntu7.1 +// krb5-locales:1.20.1-6ubuntu2.5 +// language-pack-en:1:24.04+20250130 +// language-pack-en-base:1:24.04+20250130 +// language-pack-gnome-en:1:24.04+20250130 +// language-pack-gnome-en-base:1:24.04+20250130 +// language-selector-common:0.225 +// language-selector-gnome:0.225 +// laptop-detect:0.16 +// ldap-utils:2.6.7+dfsg-1~exp1ubuntu8.2 +// less:590-2ubuntu2.1 +// libaa1:1.4p5-51.1 +// libabsl20220623t64:20220623.1-3.1ubuntu3 +// libaccountsservice0:23.13.9-2ubuntu6 +// libacl1:2.3.2-1build1.1 +// libadwaita-1-0:1.5.0-1ubuntu2 +// libalgorithm-diff-perl:1.201-1 +// libalgorithm-diff-xs-perl:0.04-8build3 +// libalgorithm-merge-perl:0.08-5 +// libao-common:1.2.2+20180113-1.1ubuntu4 +// libao4:1.2.2+20180113-1.1ubuntu4 +// libaom3:3.8.2-2ubuntu0.1 +// libapparmor1:4.0.1really4.0.1-0ubuntu0.24.04.3 +// libappstream5:1.0.2-1build6 +// libapt-pkg6.0t64:2.7.14build2 +// libarchive13t64:3.7.2-2ubuntu0.3 +// libargon2-1:0~20190702+dfsg-4build1 +// libasan8:14.2.0-4ubuntu2~24.04 +// libasound2-data:1.2.11-1build2 +// libasound2t64:1.2.11-1build2 +// libaspell15:0.60.8.1-1build1 +// libassuan0:2.5.6-1build1 +// libasyncns0:0.8-6build4 +// libatasmart4:0.19-5build3 +// libatk-adaptor:2.52.0-1build1 +// libatk-bridge2.0-0t64:2.52.0-1build1 +// libatk-wrapper-java:0.40.0-3build2 +// libatk-wrapper-java-jni:0.40.0-3build2 +// libatk1.0-0t64:2.52.0-1build1 +// libatm1t64:1:2.5.1-5.1build1 +// libatomic1:14.2.0-4ubuntu2~24.04 +// libatopology2t64:1.2.11-1build2 +// libatspi2.0-0t64:2.52.0-1build1 +// libattr1:1:2.5.2-1build1.1 +// libaudit-common:1:3.1.2-2.1build1.1 +// libaudit1:1:3.1.2-2.1build1.1 +// libauthen-sasl-perl:2.1700-1 +// libavahi-client3:0.8-13ubuntu6 +// libavahi-common-data:0.8-13ubuntu6 +// libavahi-common3:0.8-13ubuntu6 +// libavahi-core7:0.8-13ubuntu6 +// libavahi-glib1:0.8-13ubuntu6 +// libavc1394-0:0.5.4-5build3 +// libayatana-appindicator3-1:0.5.93-1build3 +// libayatana-ido3-0.4-0:0.10.1-1build2 +// libayatana-indicator3-7:0.9.4-1build1 +// libbabeltrace1:1.5.11-3build3 +// libbasicobjects0t64:0.6.2-2.1build1 +// libbinutils:2.42-4ubuntu2.4 +// libblkid1:2.39.3-9ubuntu6.2 +// libblockdev-crypto3:3.1.1-1 +// libblockdev-fs3:3.1.1-1 +// libblockdev-loop3:3.1.1-1 +// libblockdev-mdraid3:3.1.1-1 +// libblockdev-nvme3:3.1.1-1 +// libblockdev-part3:3.1.1-1 +// libblockdev-swap3:3.1.1-1 +// libblockdev-utils3:3.1.1-1 +// libblockdev3:3.1.1-1 +// libbluetooth3:5.72-0ubuntu5.1 +// libbpf1:1:1.3.0-2build2 +// libbpfcc:0.29.1+ds-1ubuntu7 +// libbrlapi0.8:6.6-4ubuntu5 +// libbrotli-dev:1.1.0-2build2 +// libbrotli1:1.1.0-2build2 +// libbsd0:0.12.1-1build1.1 +// libbytesize-common:2.10-1ubuntu2 +// libbytesize1:2.10-1ubuntu2 +// libbz2-1.0:1.0.8-5.1build0.1 +// libbz2-dev:1.0.8-5.1build0.1 +// libc-bin:2.39-0ubuntu8.4 +// libc-dev-bin:2.39-0ubuntu8.4 +// libc-devtools:2.39-0ubuntu8.4 +// libc6:2.39-0ubuntu8.4 +// libc6-dbg:2.39-0ubuntu8.4 +// libc6-dev:2.39-0ubuntu8.4 +// libcaca0:0.99.beta20-4build2 +// libcairo-gobject-perl:1.005-4build3 +// libcairo-gobject2:1.18.0-3build1 +// libcairo-perl:1.109-4build1 +// libcairo-script-interpreter2:1.18.0-3build1 +// libcairo2:1.18.0-3build1 +// libcairomm-1.16-1:1.18.0-1build1 +// libcamel-1.2-64t64:3.52.3-0ubuntu1 +// libcanberra-gtk3-0t64:0.30-10ubuntu10 +// libcanberra-gtk3-module:0.30-10ubuntu10 +// libcanberra-pulse:0.30-10ubuntu10 +// libcanberra0t64:0.30-10ubuntu10 +// libcap-ng0:0.8.4-2build2 +// libcap2:1:2.66-5ubuntu2.2 +// libcap2-bin:1:2.66-5ubuntu2.2 +// libcares2:1.27.0-1.0ubuntu1 +// libcbor0.10:0.10.2-1.2ubuntu2 +// libcc1-0:14.2.0-4ubuntu2~24.04 +// libcdio-cdda2t64:10.2+2.0.1-1.1build2 +// libcdio-paranoia2t64:10.2+2.0.1-1.1build2 +// libcdio19t64:2.1.0-4.1ubuntu1.2 +// libcdparanoia0:3.10.2+debian-14build3 +// libchewing3:0.6.0-1build1 +// libchewing3-data:0.6.0-1build1 +// libclang-cpp18:1:18.1.3-1ubuntu1 +// libclang1-18:1:18.1.3-1ubuntu1 +// libclone-perl:0.46-1build3 +// libcollection4t64:0.6.2-2.1build1 +// libcolord-gtk4-1t64:0.3.1-1build2 +// libcolord2:1.4.7-1build2 +// libcolorhug2:1.4.7-1build2 +// libcom-err2:1.47.0-2.4~exp1ubuntu4.1 +// libcrack2:2.9.6-5.1build2 +// libcrypt-dev:1:4.4.36-4build1 +// libcrypt1:1:4.4.36-4build1 +// libcryptsetup12:2:2.7.0-1ubuntu4.2 +// libctf-nobfd0:2.42-4ubuntu2.4 +// libctf0:2.42-4ubuntu2.4 +// libcublas-12-6:12.6.4.1-1 +// libcublas-dev-12-6:12.6.4.1-1 +// libcue2:2.2.1-4.1build1 +// libcufft-12-6:11.3.0.4-1 +// libcufft-dev-12-6:11.3.0.4-1 +// libcufile-12-6:1.11.1.6-1 +// libcufile-dev-12-6:1.11.1.6-1 +// libcups2t64:2.4.7-1.2ubuntu7.3 +// libcupsfilters2-common:2.0.0-0ubuntu7.1 +// libcupsfilters2t64:2.0.0-0ubuntu7.1 +// libcupsimage2t64:2.4.7-1.2ubuntu7.3 +// libcurand-12-6:10.3.7.77-1 +// libcurand-dev-12-6:10.3.7.77-1 +// libcurl3t64-gnutls:8.5.0-2ubuntu10.6 +// libcurl4t64:8.5.0-2ubuntu10.6 +// libcusolver-12-6:11.7.1.2-1 +// libcusolver-dev-12-6:11.7.1.2-1 +// libcusparse-12-6:12.5.4.2-1 +// libcusparse-dev-12-6:12.5.4.2-1 +// libdaemon0:0.14-7.1ubuntu4 +// libdata-dump-perl:1.25-1 +// libdatrie1:0.2.13-3build1 +// libdb5.3t64:5.3.28+dfsg2-7 +// libdbus-1-3:1.14.10-4ubuntu4.1 +// libdbus-glib-1-2:0.112-3build2 +// libdbusmenu-glib4:18.10.20180917~bzr492+repack1-3.1ubuntu5 +// libdbusmenu-gtk3-4:18.10.20180917~bzr492+repack1-3.1ubuntu5 +// libdconf1:0.40.0-4build2 +// libde265-0:1.0.15-1build3 +// libdebconfclient0:0.271ubuntu3 +// libdebuginfod-common:0.190-1.1build4.1 +// libdebuginfod1t64:0.190-1.1build4.1 +// libdecor-0-0:0.2.2-1build2 +// libdecor-0-plugin-1-gtk:0.2.2-1build2 +// libdee-1.0-4:1.2.7+17.10.20170616-7build5 +// libdeflate0:1.19-1build1.1 +// libdevmapper1.02.1:2:1.02.185-3ubuntu3.2 +// libdhash1t64:0.6.2-2.1build1 +// libdjvulibre-text:3.5.28-2build4 +// libdjvulibre21:3.5.28-2build4 +// libdotconf0:1.3-0.3fakesync1build3 +// libdpkg-perl:1.22.6ubuntu6.1 +// libdrm-amdgpu1:2.4.122-1~ubuntu0.24.04.1 +// libdrm-common:2.4.122-1~ubuntu0.24.04.1 +// libdrm-intel1:2.4.122-1~ubuntu0.24.04.1 +// libdrm-nouveau2:2.4.122-1~ubuntu0.24.04.1 +// libdrm-radeon1:2.4.122-1~ubuntu0.24.04.1 +// libdrm2:2.4.122-1~ubuntu0.24.04.1 +// libduktape207:2.7.0+tests-0ubuntu3 +// libdv4t64:1.0.0-17.1build1 +// libdw1t64:0.190-1.1build4.1 +// libeatmydata1:131-1ubuntu1 +// libebackend-1.2-11t64:3.52.3-0ubuntu1 +// libebook-1.2-21t64:3.52.3-0ubuntu1 +// libebook-contacts-1.2-4t64:3.52.3-0ubuntu1 +// libecal-2.0-3:3.52.3-0ubuntu1 +// libedata-book-1.2-27t64:3.52.3-0ubuntu1 +// libedata-cal-2.0-2t64:3.52.3-0ubuntu1 +// libedataserver-1.2-27t64:3.52.3-0ubuntu1 +// libedataserverui-1.2-4t64:3.52.3-0ubuntu1 +// libedit2:3.1-20230828-1build1 +// libeditorconfig0:0.12.7-0.1 +// libefiboot1t64:38-3.1build1 +// libefivar1t64:38-3.1build1 +// libegl-mesa0:24.2.8-1ubuntu1~24.04.1 +// libegl1:1.7.0-1build1 +// libei1:1.2.1-1 +// libeis1:1.2.1-1 +// libelf1t64:0.190-1.1build4.1 +// libenchant-2-2:2.3.3-2build2 +// libencode-locale-perl:1.05-3 +// libepoxy0:1.5.10-1build1 +// liberror-perl:0.17029-2 +// libespeak-ng1:1.51+dfsg-12build1 +// libestr0:0.1.11-1build1 +// libevdev2:1.13.1+dfsg-1build1 +// libevdocument3-4t64:46.3.1-0ubuntu1 +// libevview3-3t64:46.3.1-0ubuntu1 +// libexempi8:2.6.5-1build1 +// libexif12:0.6.24-1build2 +// libexiv2-27:0.27.6-1build1 +// libexpat1:2.6.1-2ubuntu0.2 +// libexpat1-dev:2.6.1-2ubuntu0.2 +// libext2fs2t64:1.47.0-2.4~exp1ubuntu4.1 +// libextutils-depends-perl:0.8001-2 +// libfakeroot:1.33-1 +// libfastjson4:1.2304.0-1build1 +// libfdisk1:2.39.3-9ubuntu6.2 +// libffi8:3.4.6-1build1 +// libfftw3-single3:3.3.10-1ubuntu3 +// libfido2-1:1.14.0-1build3 +// libfile-basedir-perl:0.09-2 +// libfile-desktopentry-perl:0.22-3 +// libfile-fcntllock-perl:0.22-4ubuntu5 +// libfile-listing-perl:6.16-1 +// libfile-mimeinfo-perl:0.34-1 +// libfl-dev:2.6.4-8.2build1 +// libfl2:2.6.4-8.2build1 +// libflac12t64:1.4.3+ds-2.1ubuntu2 +// libflashrom1:1.3.0-2.1ubuntu2 +// libfont-afm-perl:1.20-4 +// libfontconfig-dev:2.15.0-1.1ubuntu2 +// libfontconfig1:2.15.0-1.1ubuntu2 +// libfontconfig1-dev:2.15.0-1.1ubuntu2 +// libfontenc1:1:1.1.8-1build1 +// libfprint-2-2:1:1.94.7+tod1-0ubuntu5~24.04.2 +// libfprint-2-tod1:1:1.94.7+tod1-0ubuntu5~24.04.2 +// libfreeaptx0:0.1.1-2build1 +// libfreerdp-server3-3:3.5.1+dfsg1-0ubuntu1 +// libfreerdp3-3:3.5.1+dfsg1-0ubuntu1 +// libfreetype-dev:2.13.2+dfsg-1build3 +// libfreetype6:2.13.2+dfsg-1build3 +// libfribidi0:1.0.13-3build1 +// libftdi1-2:1.5-6build5 +// libfuse3-3:3.14.0-5build1 +// libfwupd2:1.9.28-0ubuntu1~24.04.1 +// libgail-common:2.24.33-4ubuntu1.1 +// libgail18t64:2.24.33-4ubuntu1.1 +// libgamemode0:1.8.1-2build1 +// libgamemodeauto0:1.8.1-2build1 +// libgbm1:24.2.8-1ubuntu1~24.04.1 +// libgcc-13-dev:13.3.0-6ubuntu2~24.04 +// libgcc-s1:14.2.0-4ubuntu2~24.04 +// libgck-1-0:3.41.2-1build3 +// libgck-2-2:4.2.0-5 +// libgcr-4-4:4.2.0-5 +// libgcr-base-3-1:3.41.2-1build3 +// libgcr-ui-3-1:3.41.2-1build3 +// libgcrypt20:1.10.3-2build1 +// libgd3:2.3.3-9ubuntu5 +// libgdata-common:0.18.1-6build2 +// libgdata22:0.18.1-6build2 +// libgdbm-compat4t64:1.23-5.1build1 +// libgdbm6t64:1.23-5.1build1 +// libgdk-pixbuf-2.0-0:2.42.10+dfsg-3ubuntu3.1 +// libgdk-pixbuf2.0-bin:2.42.10+dfsg-3ubuntu3.1 +// libgdk-pixbuf2.0-common:2.42.10+dfsg-3ubuntu3.1 +// libgdm1:46.2-1ubuntu1~24.04.1 +// libgee-0.8-2:0.20.6-1build2 +// libgeoclue-2-0:2.7.0-3ubuntu7 +// libgeocode-glib-2-0:3.26.3-6build3 +// libgexiv2-2:0.14.2-2build3 +// libgif7:5.2.2-1ubuntu1 +// libgirepository-1.0-1:1.80.1-1 +// libgjs0g:1.80.2-1build2 +// libgl1:1.7.0-1build1 +// libgl1-amber-dri:21.3.9-0ubuntu2 +// libgl1-mesa-dri:24.2.8-1ubuntu1~24.04.1 +// libglapi-mesa:24.2.8-1ubuntu1~24.04.1 +// libgles2:1.7.0-1build1 +// libglib-object-introspection-perl:0.051-1build3 +// libglib-perl:3:1.329.3-3build3 +// libglib2.0-0t64:2.80.0-6ubuntu3.2 +// libglib2.0-bin:2.80.0-6ubuntu3.2 +// libglib2.0-data:2.80.0-6ubuntu3.2 +// libglibmm-2.68-1t64:2.78.1-2.2build2 +// libglu1-mesa:9.0.2-1.1build1 +// libglvnd0:1.7.0-1build1 +// libglx-mesa0:24.2.8-1ubuntu1~24.04.1 +// libglx0:1.7.0-1build1 +// libgmp10:2:6.3.0+dfsg-2ubuntu6.1 +// libgnome-autoar-0-0:0.4.4-2build4 +// libgnome-bg-4-2t64:44.0-5build2 +// libgnome-bluetooth-3.0-13:46.0-1ubuntu1 +// libgnome-bluetooth-ui-3.0-13:46.0-1ubuntu1 +// libgnome-desktop-3-20t64:44.0-5build2 +// libgnome-desktop-4-2t64:44.0-5build2 +// libgnome-menu-3-0:3.36.0-1.1ubuntu3 +// libgnome-rr-4-2t64:44.0-5build2 +// libgnomekbd-common:3.28.1-1build3 +// libgnomekbd8:3.28.1-1build3 +// libgnutls30t64:3.8.3-1.1ubuntu3.3 +// libgoa-1.0-0b:3.50.4-0ubuntu2 +// libgoa-1.0-common:3.50.4-0ubuntu2 +// libgoa-backend-1.0-2:3.50.4-0ubuntu2 +// libgomp1:14.2.0-4ubuntu2~24.04 +// libgpg-error-l10n:1.47-3build2.1 +// libgpg-error0:1.47-3build2.1 +// libgpgme11t64:1.18.0-4.1ubuntu4 +// libgphoto2-6t64:2.5.31-2.1build2 +// libgphoto2-l10n:2.5.31-2.1build2 +// libgphoto2-port12t64:2.5.31-2.1build2 +// libgpm2:1.20.7-11 +// libgprofng0:2.42-4ubuntu2.4 +// libgraphene-1.0-0:1.10.8-3build2 +// libgraphite2-3:1.3.14-2build1 +// libgs-common:10.02.1~dfsg1-0ubuntu7.4 +// libgs10:10.02.1~dfsg1-0ubuntu7.4 +// libgs10-common:10.02.1~dfsg1-0ubuntu7.4 +// libgsf-1-114:1.14.51-2ubuntu0.1 +// libgsf-1-common:1.14.51-2ubuntu0.1 +// libgsound0t64:1.0.3-3.2build2 +// libgspell-1-2:1.12.2-1build4 +// libgspell-1-common:1.12.2-1build4 +// libgssapi-krb5-2:1.20.1-6ubuntu2.5 +// libgssdp-1.6-0:1.6.3-1build3 +// libgstreamer-gl1.0-0:1.24.2-1ubuntu0.2 +// libgstreamer-plugins-base1.0-0:1.24.2-1ubuntu0.2 +// libgstreamer-plugins-good1.0-0:1.24.2-1ubuntu1.1 +// libgstreamer1.0-0:1.24.2-1ubuntu0.1 +// libgtk-3-0t64:3.24.41-4ubuntu1.2 +// libgtk-3-bin:3.24.41-4ubuntu1.2 +// libgtk-3-common:3.24.41-4ubuntu1.2 +// libgtk-4-1:4.14.2+ds-1ubuntu1 +// libgtk-4-bin:4.14.2+ds-1ubuntu1 +// libgtk-4-common:4.14.2+ds-1ubuntu1 +// libgtk-4-media-gstreamer:4.14.2+ds-1ubuntu1 +// libgtk2.0-0t64:2.24.33-4ubuntu1.1 +// libgtk2.0-bin:2.24.33-4ubuntu1.1 +// libgtk2.0-common:2.24.33-4ubuntu1.1 +// libgtk3-perl:0.038-3 +// libgtkmm-4.0-0:4.10.0-4build3 +// libgtksourceview-5-0:5.12.0-1build1 +// libgtksourceview-5-common:5.12.0-1build1 +// libgtop-2.0-11:2.41.3-1build4 +// libgtop2-common:2.41.3-1build4 +// libgudev-1.0-0:1:238-5ubuntu1 +// libgumbo2:0.12.0+dfsg-2build1 +// libgupnp-1.6-0:1.6.6-1build3 +// libgupnp-av-1.0-3:0.14.1-2build2 +// libgupnp-dlna-2.0-4:0.12.0-4build2 +// libgusb2:0.4.8-1build2 +// libgweather-4-0t64:4.4.2-1build1 +// libgweather-4-common:4.4.2-1build1 +// libgxps2t64:0.3.2-4build3 +// libhandy-1-0:1.8.3-1build2 +// libharfbuzz-gobject0:8.3.0-2build2 +// libharfbuzz-icu0:8.3.0-2build2 +// libharfbuzz0b:8.3.0-2build2 +// libheif-plugin-aomdec:1.17.6-1ubuntu4.1 +// libheif-plugin-aomenc:1.17.6-1ubuntu4.1 +// libheif-plugin-libde265:1.17.6-1ubuntu4.1 +// libheif1:1.17.6-1ubuntu4.1 +// libhogweed6t64:3.9.1-2.2build1.1 +// libhpmud0:3.23.12+dfsg0-0ubuntu5 +// libhtml-form-perl:6.11-1 +// libhtml-format-perl:2.16-2 +// libhtml-parser-perl:3.81-1build3 +// libhtml-tagset-perl:3.20-6 +// libhtml-tree-perl:5.07-3 +// libhttp-cookies-perl:6.11-1 +// libhttp-daemon-perl:6.16-1 +// libhttp-date-perl:6.06-1 +// libhttp-message-perl:6.45-1ubuntu1 +// libhttp-negotiate-perl:6.01-2 +// libhunspell-1.7-0:1.7.2+really1.7.2-10build3 +// libhwasan0:14.2.0-4ubuntu2~24.04 +// libhyphen0:2.8.8-7build3 +// libibus-1.0-5:1.5.29-2 +// libibverbs1:50.0-2build2 +// libical3t64:3.0.17-1.1build3 +// libice6:2:1.0.10-1build3 +// libicu-dev:74.2-1ubuntu3.1 +// libicu74:74.2-1ubuntu3.1 +// libidn12:1.42-1build1 +// libidn2-0:2.3.7-2build1.1 +// libiec61883-0:1.2.0-6build1 +// libieee1284-3t64:0.2.11-14.1build1 +// libijs-0.35:0.35-15.1build1 +// libimagequant0:2.18.0-1build1 +// libimobiledevice6:1.3.0-8.1build3 +// libini-config5t64:0.6.2-2.1build1 +// libinih1:55-1ubuntu2 +// libinput-bin:1.25.0-1ubuntu3 +// libinput10:1.25.0-1ubuntu3 +// libio-html-perl:1.004-3 +// libio-socket-ssl-perl:2.085-1 +// libio-stringy-perl:2.111-3 +// libip4tc2:1.8.10-3ubuntu2 +// libip6tc2:1.8.10-3ubuntu2 +// libipa-hbac0t64:2.9.4-1.1ubuntu6.2 +// libipc-system-simple-perl:1.30-2 +// libipt2:2.0.6-1build1 +// libisl23:0.26-3build1.1 +// libitm1:14.2.0-4ubuntu2~24.04 +// libiw30t64:30~pre9-16.1ubuntu2 +// libjansson4:2.14-2build2 +// libjavascriptcoregtk-4.1-0:2.46.6-0ubuntu0.24.04.1 +// libjavascriptcoregtk-6.0-1:2.46.6-0ubuntu0.24.04.1 +// libjbig0:2.1-6.1ubuntu2 +// libjbig2dec0:0.20-1build3 +// libjcat1:0.2.0-2build3 +// libjpeg-turbo8:2.1.5-2ubuntu2 +// libjpeg8:8c-2ubuntu11 +// libjq1:1.7.1-3build1 +// libjs-jquery:3.6.1+dfsg+~3.5.14-1 +// libjs-sphinxdoc:7.2.6-6 +// libjs-underscore:1.13.4~dfsg+~1.11.4-3 +// libjson-c5:0.17-1build1 +// libjson-glib-1.0-0:1.8.0-2build2 +// libjson-glib-1.0-common:1.8.0-2build2 +// libjsoncpp25:1.9.5-6build1 +// libk5crypto3:1.20.1-6ubuntu2.5 +// libkeyutils1:1.6.3-3build1 +// libklibc:2.0.13-4ubuntu0.1 +// libkmod2:31+20240202-2ubuntu7.1 +// libkpathsea6:2023.20230311.66589-9build3 +// libkrb5-3:1.20.1-6ubuntu2.5 +// libkrb5support0:1.20.1-6ubuntu2.5 +// libksba8:1.6.6-1build1 +// liblc3-1:1.0.4-3build1 +// liblcms2-2:2.14-2build1 +// liblcms2-utils:2.14-2build1 +// libldacbt-abr2:2.0.2.3+git20200429+ed310a0-4ubuntu2 +// libldacbt-enc2:2.0.2.3+git20200429+ed310a0-4ubuntu2 +// libldap-common:2.6.7+dfsg-1~exp1ubuntu8.2 +// libldap2:2.6.7+dfsg-1~exp1ubuntu8.2 +// libldb2:2:2.8.0+samba4.19.5+dfsg-4ubuntu9 +// liblerc4:4.0.0+ds-4ubuntu2 +// libllvm18:1:18.1.3-1ubuntu1 +// libllvm19:1:19.1.1-1ubuntu1~24.04.2 +// liblmdb0:0.9.31-1build1 +// liblocale-gettext-perl:1.07-6ubuntu5 +// liblouis-data:3.29.0-1build1 +// liblouis20:3.29.0-1build1 +// liblouisutdml-bin:2.12.0-3.1build1 +// liblouisutdml-data:2.12.0-3.1build1 +// liblouisutdml9t64:2.12.0-3.1build1 +// liblsan0:14.2.0-4ubuntu2~24.04 +// libltdl7:2.4.7-7build1 +// liblua5.4-0:5.4.6-3build2 +// liblwp-mediatypes-perl:6.04-2 +// liblwp-protocol-https-perl:6.13-1 +// liblz4-1:1.9.4-1build1.1 +// liblzma5:5.6.1+really5.4.5-1build0.1 +// liblzo2-2:2.10-2build4 +// libm17n-0:1.8.4-1build2 +// libmagic-mgc:1:5.45-3build1 +// libmagic1t64:1:5.45-3build1 +// libmailtools-perl:2.21-2 +// libmalcontent-0-0:0.11.1-1ubuntu1.1 +// libmanette-0.2-0:0.2.7-1build2 +// libmarisa0:0.2.6-14ubuntu4 +// libmaxminddb0:1.9.1-1build1 +// libmbim-glib4:1.31.2-0ubuntu3 +// libmbim-proxy:1.31.2-0ubuntu3 +// libmbim-utils:1.31.2-0ubuntu3 +// libmd0:1.1.0-2build1.1 +// libmediaart-2.0-0:1.9.6-1build2 +// libmm-glib0:1.23.4-0ubuntu2 +// libmnl0:1.0.5-2build1 +// libmount1:2.39.3-9ubuntu6.2 +// libmozjs-115-0t64:115.10.0-1 +// libmp3lame0:3.100-6build1 +// libmpc3:1.3.1-1build1.1 +// libmpfr6:4.2.1-1build1.1 +// libmpg123-0t64:1.32.5-1ubuntu1.1 +// libmsgraph-0-1:0.2.1-0ubuntu3 +// libmtdev1t64:1.1.6-1.1build1 +// libmtp-common:1.1.21-3.1build1 +// libmtp-runtime:1.1.21-3.1build1 +// libmtp9t64:1.1.21-3.1build1 +// libmujs3:1.3.3-3build2 +// libmutter-14-0:46.2-1ubuntu0.24.04.6 +// libnautilus-extension4:1:46.2-0ubuntu0.3 +// libncurses-dev:6.4+20240113-1ubuntu2 +// libncurses6:6.4+20240113-1ubuntu2 +// libncursesw6:6.4+20240113-1ubuntu2 +// libndp0:1.8-1fakesync1ubuntu0.24.04.1 +// libnet-dbus-perl:1.2.0-2build3 +// libnet-http-perl:6.23-1 +// libnet-smtp-ssl-perl:1.04-2 +// libnet-ssleay-perl:1.94-1build4 +// libnetfilter-conntrack3:1.0.9-6build1 +// libnetplan1:1.1.1-1~ubuntu24.04.1 +// libnettle8t64:3.9.1-2.2build1.1 +// libnewt0.52:0.52.24-2ubuntu2 +// libnfnetlink0:1.0.2-2build1 +// libnfs14:5.0.2-1build1 +// libnfsidmap1:1:2.6.4-3ubuntu5.1 +// libnftables1:1.0.9-1build1 +// libnftnl11:1.2.6-2build1 +// libnghttp2-14:1.59.0-1ubuntu0.2 +// libnl-3-200:3.7.0-0.3build1.1 +// libnl-genl-3-200:3.7.0-0.3build1.1 +// libnl-route-3-200:3.7.0-0.3build1.1 +// libnm0:1.46.0-1ubuntu2.2 +// libnma-common:1.10.6-3build2 +// libnma-gtk4-0:1.10.6-3build2 +// libnma0:1.10.6-3build2 +// libnotify-bin:0.8.3-1build2 +// libnotify4:0.8.3-1build2 +// libnpp-12-6:12.3.1.54-1 +// libnpp-dev-12-6:12.3.1.54-1 +// libnpth0t64:1.6-3.1build1 +// libnspr4:2:4.35-1.1build1 +// libnss-mdns:0.15.1-4build1 +// libnss-sss:2.9.4-1.1ubuntu6.2 +// libnss-systemd:255.4-1ubuntu8.6 +// libnss3:2:3.98-1build1 +// libntfs-3g89t64:1:2022.10.3-1.2ubuntu3 +// libnuma1:2.0.18-1build1 +// libnvfatbin-12-6:12.6.77-1 +// libnvfatbin-dev-12-6:12.6.77-1 +// libnvidia-cfg1-550:550.144.03-0ubuntu1 +// libnvidia-common-550:550.144.03-0ubuntu1 +// libnvidia-compute-550:550.144.03-0ubuntu1 +// libnvidia-decode-550:550.144.03-0ubuntu1 +// libnvidia-egl-wayland1:1:1.1.13-1build1 +// libnvidia-encode-550:550.144.03-0ubuntu1 +// libnvidia-extra-550:550.144.03-0ubuntu1 +// libnvidia-fbc1-550:550.144.03-0ubuntu1 +// libnvidia-gl-550:550.144.03-0ubuntu1 +// libnvjitlink-12-6:12.6.85-1 +// libnvjitlink-dev-12-6:12.6.85-1 +// libnvjpeg-12-6:12.3.3.54-1 +// libnvjpeg-dev-12-6:12.3.3.54-1 +// libnvme1t64:1.8-3ubuntu1 +// libogg0:1.3.5-3build1 +// libonig5:6.9.9-1build1 +// libopencc-data:1.1.7+ds1-1build1 +// libopencc1.1:1.1.7+ds1-1build1 +// libopengl0:1.7.0-1build1 +// libopenjp2-7:2.5.0-2ubuntu0.3 +// libopus0:1.4-1build1 +// liborc-0.4-0t64:1:0.4.38-1ubuntu0.1 +// libotf1:0.9.16-4build2 +// libp11-kit0:0.25.3-4ubuntu2.1 +// libpackagekit-glib2-18:1.2.8-2ubuntu1.2 +// libpam-cap:1:2.66-5ubuntu2.2 +// libpam-fprintd:1.94.3-1 +// libpam-gnome-keyring:46.1-2build1 +// libpam-modules:1.5.3-5ubuntu5.1 +// libpam-modules-bin:1.5.3-5ubuntu5.1 +// libpam-pwquality:1.4.5-3build1 +// libpam-runtime:1.5.3-5ubuntu5.1 +// libpam-sss:2.9.4-1.1ubuntu6.2 +// libpam-systemd:255.4-1ubuntu8.6 +// libpam0g:1.5.3-5ubuntu5.1 +// libpango-1.0-0:1.52.1+ds-1build1 +// libpangocairo-1.0-0:1.52.1+ds-1build1 +// libpangoft2-1.0-0:1.52.1+ds-1build1 +// libpangomm-2.48-1t64:2.52.0-1build1 +// libpangoxft-1.0-0:1.52.1+ds-1build1 +// libpaper-utils:1.1.29build1 +// libpaper1:1.1.29build1 +// libparted2t64:3.6-4build1 +// libpath-utils1t64:0.6.2-2.1build1 +// libpcap0.8t64:1.10.4-4.1ubuntu3 +// libpcaudio0:1.2-2build3 +// libpci3:1:3.10.0-2build1 +// libpciaccess0:0.17-3build1 +// libpcre2-32-0:10.42-4ubuntu2.1 +// libpcre2-8-0:10.42-4ubuntu2.1 +// libpcsclite1:2.0.3-1build1 +// libpeas-1.0-0:1.36.0-3build4 +// libpeas-common:1.36.0-3build4 +// libperl5.38t64:5.38.2-3.2build2.1 +// libphonenumber8:8.12.57+ds-4.2build3 +// libpinyin-data:2.8.1-1build3 +// libpinyin15:2.8.1-1build3 +// libpipeline1:1.5.7-2 +// libpipewire-0.3-0t64:1.0.5-1ubuntu3 +// libpipewire-0.3-common:1.0.5-1ubuntu3 +// libpipewire-0.3-modules:1.0.5-1ubuntu3 +// libpixman-1-0:0.42.2-1build1 +// libpkcs11-helper1t64:1.29.0-2.1build2 +// libpkgconf3:1.8.1-2build1 +// libplist-2.0-4:2.3.0-1~exp2build2 +// libplymouth5:24.004.60-1ubuntu7.1 +// libpng-dev:1.6.43-5build1 +// libpng-tools:1.6.43-5build1 +// libpng16-16t64:1.6.43-5build1 +// libpolkit-agent-1-0:124-2ubuntu1.24.04.2 +// libpolkit-gobject-1-0:124-2ubuntu1.24.04.2 +// libpoppler-cpp0t64:24.02.0-1ubuntu9.2 +// libpoppler-glib8t64:24.02.0-1ubuntu9.2 +// libpoppler134:24.02.0-1ubuntu9.2 +// libpopt0:1.19+dfsg-1build1 +// libportal-gtk4-1:0.7.1-5build5 +// libportal1:0.7.1-5build5 +// libpotrace0:1.16-2build1 +// libppd2:2:2.0.0-0ubuntu4.1 +// libppd2-common:2:2.0.0-0ubuntu4.1 +// libproc2-0:2:4.0.4-4ubuntu3.2 +// libprotobuf-c1:1.4.1-1ubuntu4 +// libprotobuf32t64:3.21.12-8.2build1 +// libproxy1-plugin-gsettings:0.5.4-4build1 +// libproxy1-plugin-networkmanager:0.5.4-4build1 +// libproxy1v5:0.5.4-4build1 +// libpsl5t64:0.21.2-1.1build1 +// libptexenc1:2023.20230311.66589-9build3 +// libpulse-mainloop-glib0:1:16.1+dfsg1-2ubuntu10.1 +// libpulse0:1:16.1+dfsg1-2ubuntu10.1 +// libpwquality-common:1.4.5-3build1 +// libpwquality1:1.4.5-3build1 +// libpython3-dev:3.12.3-0ubuntu2 +// libpython3-stdlib:3.12.3-0ubuntu2 +// libpython3.12-dev:3.12.3-1ubuntu0.5 +// libpython3.12-minimal:3.12.3-1ubuntu0.5 +// libpython3.12-stdlib:3.12.3-1ubuntu0.5 +// libpython3.12t64:3.12.3-1ubuntu0.5 +// libqmi-glib5:1.35.2-0ubuntu2 +// libqmi-proxy:1.35.2-0ubuntu2 +// libqmi-utils:1.35.2-0ubuntu2 +// libqpdf29t64:11.9.0-1.1build1 +// libqrtr-glib0:1.2.2-1ubuntu4 +// libquadmath0:14.2.0-4ubuntu2~24.04 +// libraqm0:0.10.1-1build1 +// libraw1394-11:2.1.2-2build3 +// libreadline-dev:8.2-4build1 +// libreadline8t64:8.2-4build1 +// libref-array1t64:0.6.2-2.1build1 +// librest-1.0-0:0.9.1-6build3 +// librhash0:1.4.3-3build1 +// libroc0.3:0.3.0+dfsg-7ubuntu2 +// librsvg2-2:2.58.0+dfsg-1build1 +// librsvg2-common:2.58.0+dfsg-1build1 +// librtmp1:2.4+20151223.gitfa8646d.1-2build7 +// librygel-core-2.8-0:0.42.5-1ubuntu3 +// librygel-db-2.8-0:0.42.5-1ubuntu3 +// librygel-renderer-2.8-0:0.42.5-1ubuntu3 +// librygel-server-2.8-0:0.42.5-1ubuntu3 +// libsamplerate0:0.2.2-4build1 +// libsane-common:1.2.1-7build4 +// libsane-hpaio:3.23.12+dfsg0-0ubuntu5 +// libsane1:1.2.1-7build4 +// libsasl2-2:2.1.28+dfsg1-5ubuntu3.1 +// libsasl2-modules:2.1.28+dfsg1-5ubuntu3.1 +// libsasl2-modules-db:2.1.28+dfsg1-5ubuntu3.1 +// libsasl2-modules-gssapi-mit:2.1.28+dfsg1-5ubuntu3.1 +// libsbc1:2.0-1build1 +// libseccomp2:2.5.5-1ubuntu3.1 +// libsecret-1-0:0.21.4-1build3 +// libsecret-common:0.21.4-1build3 +// libselinux1:3.5-2ubuntu2.1 +// libsemanage-common:3.5-1build5 +// libsemanage2:3.5-1build5 +// libsensors-config:1:3.6.0-9build1 +// libsensors5:1:3.6.0-9build1 +// libsepol2:3.5-2build1 +// libsframe1:2.42-4ubuntu2.4 +// libsharpyuv0:1.3.2-0.4build3 +// libshout3:2.4.6-1build2 +// libsigc++-3.0-0:3.6.0-2 +// libslang2:2.3.3-3build2 +// libslirp0:4.7.0-1ubuntu3 +// libsm6:2:1.2.3-1build3 +// libsmartcols1:2.39.3-9ubuntu6.2 +// libsmbclient0:2:4.19.5+dfsg-4ubuntu9 +// libsnapd-glib-2-1:1.64-0ubuntu5 +// libsndfile1:1.2.2-1ubuntu5.24.04.1 +// libsnmp-base:5.9.4+dfsg-1.1ubuntu3 +// libsnmp40t64:5.9.4+dfsg-1.1ubuntu3 +// libsonic0:0.2.0-13build1 +// libsoup-2.4-1:2.74.3-6ubuntu1.1 +// libsoup-3.0-0:3.4.4-5ubuntu0.1 +// libsoup-3.0-common:3.4.4-5ubuntu0.1 +// libsoup2.4-common:2.74.3-6ubuntu1.1 +// libsource-highlight-common:3.1.9-4.3build1 +// libsource-highlight4t64:3.1.9-4.3build1 +// libspa-0.2-bluetooth:1.0.5-1ubuntu3 +// libspa-0.2-modules:1.0.5-1ubuntu3 +// libspectre1:0.2.12-1build2 +// libspeechd2:0.12.0~rc2-2build3 +// libspeex1:1.2.1-2ubuntu2.24.04.1 +// libspeexdsp1:1.2.1-1ubuntu3 +// libsqlite3-0:3.45.1-1ubuntu2.1 +// libss2:1.47.0-2.4~exp1ubuntu4.1 +// libssh-4:0.10.6-2build2 +// libssl-dev:3.0.13-0ubuntu3.5 +// libssl3t64:3.0.13-0ubuntu3.5 +// libsss-certmap0:2.9.4-1.1ubuntu6.2 +// libsss-idmap0:2.9.4-1.1ubuntu6.2 +// libsss-nss-idmap0:2.9.4-1.1ubuntu6.2 +// libstartup-notification0:0.12-6build3 +// libstdc++-13-dev:13.3.0-6ubuntu2~24.04 +// libstdc++6:14.2.0-4ubuntu2~24.04 +// libstemmer0d:2.2.0-4build1 +// libsynctex2:2023.20230311.66589-9build3 +// libsysmetrics1:1.7.3ubuntu0.24.04.2 +// libsystemd-shared:255.4-1ubuntu8.6 +// libsystemd0:255.4-1ubuntu8.6 +// libtag1v5:1.13.1-1build1 +// libtag1v5-vanilla:1.13.1-1build1 +// libtalloc2:2.4.2-1build2 +// libtasn1-6:4.19.0-3ubuntu0.24.04.1 +// libtcl8.6:8.6.14+dfsg-1build1 +// libtdb1:1.4.10-1build1 +// libteamdctl0:1.31-1build3 +// libteckit0:2.5.12+ds1-1 +// libtevent0t64:0.16.1-2build1 +// libtexlua53-5:2023.20230311.66589-9build3 +// libtext-charwidth-perl:0.04-11build3 +// libtext-iconv-perl:1.7-8build3 +// libtext-wrapi18n-perl:0.06-10 +// libthai-data:0.1.29-2build1 +// libthai0:0.1.29-2build1 +// libtheora0:1.1.1+dfsg.1-16.1build3 +// libtie-ixhash-perl:1.23-4 +// libtiff6:4.5.1+git230720-4ubuntu2.2 +// libtimedate-perl:2.3300-2 +// libtinfo6:6.4+20240113-1ubuntu2 +// libtirpc-common:1.3.4+ds-1.1build1 +// libtirpc3t64:1.3.4+ds-1.1build1 +// libtotem-plparser-common:3.26.6-1build5 +// libtotem-plparser18:3.26.6-1build5 +// libtraceevent1:1:1.8.2-1ubuntu2 +// libtraceevent1-plugin:1:1.8.2-1ubuntu2 +// libtracefs1:1.8.0-1ubuntu1 +// libtracker-sparql-3.0-0:3.7.1-1build1 +// libtry-tiny-perl:0.31-2 +// libtsan2:14.2.0-4ubuntu2~24.04 +// libtss2-esys-3.0.2-0t64:4.0.1-7.1ubuntu5.1 +// libtss2-mu-4.0.1-0t64:4.0.1-7.1ubuntu5.1 +// libtss2-rc0t64:4.0.1-7.1ubuntu5.1 +// libtss2-sys1t64:4.0.1-7.1ubuntu5.1 +// libtss2-tcti-cmd0t64:4.0.1-7.1ubuntu5.1 +// libtss2-tcti-device0t64:4.0.1-7.1ubuntu5.1 +// libtss2-tcti-libtpms0t64:4.0.1-7.1ubuntu5.1 +// libtss2-tcti-mssim0t64:4.0.1-7.1ubuntu5.1 +// libtss2-tcti-spi-helper0t64:4.0.1-7.1ubuntu5.1 +// libtss2-tcti-swtpm0t64:4.0.1-7.1ubuntu5.1 +// libtss2-tctildr0t64:4.0.1-7.1ubuntu5.1 +// libtwolame0:0.4.0-2build3 +// libu2f-udev:1.1.10-3build3 +// libubsan1:14.2.0-4ubuntu2~24.04 +// libuchardet0:0.0.8-1build1 +// libudev1:255.4-1ubuntu8.6 +// libudisks2-0:2.10.1-6ubuntu1 +// libunistring5:1.1-2build1.1 +// libunity-protocol-private0:7.1.4+19.04.20190319-6build4 +// libunity-scopes-json-def-desktop:7.1.4+19.04.20190319-6build4 +// libunity9:7.1.4+19.04.20190319-6build4 +// libunwind8:1.6.2-3build1.1 +// libupower-glib3:1.90.3-1 +// liburcu8t64:0.14.0-3.1build1 +// liburi-perl:5.27-1 +// libusb-1.0-0:2:1.0.27-1 +// libusbmuxd6:2.0.2-4build3 +// libuuid1:2.39.3-9ubuntu6.2 +// libuv1t64:1.48.0-1.1build1 +// libv4l-0t64:1.26.1-4build3 +// libv4lconvert0t64:1.26.1-4build3 +// libvdpau1:1.5-2build1 +// libvisual-0.4-0:0.4.2-2build1 +// libvolume-key1:0.3.12-7build2 +// libvorbis0a:1.3.7-1build3 +// libvorbisenc2:1.3.7-1build3 +// libvorbisfile3:1.3.7-1build3 +// libvpx9:1.14.0-1ubuntu2.1 +// libvte-2.91-0:0.76.0-1ubuntu0.1 +// libvte-2.91-common:0.76.0-1ubuntu0.1 +// libvulkan1:1.3.275.0-1build1 +// libwacom-common:2.10.0-2 +// libwacom9:2.10.0-2 +// libwavpack1:5.6.0-1build1 +// libwayland-client0:1.22.0-2.1build1 +// libwayland-cursor0:1.22.0-2.1build1 +// libwayland-egl1:1.22.0-2.1build1 +// libwayland-server0:1.22.0-2.1build1 +// libwbclient0:2:4.19.5+dfsg-4ubuntu9 +// libwebkit2gtk-4.1-0:2.46.6-0ubuntu0.24.04.1 +// libwebkitgtk-6.0-4:2.46.6-0ubuntu0.24.04.1 +// libwebp7:1.3.2-0.4build3 +// libwebpdemux2:1.3.2-0.4build3 +// libwebpmux3:1.3.2-0.4build3 +// libwebrtc-audio-processing1:0.3.1-0ubuntu6 +// libwhoopsie-preferences0:23build3 +// libwhoopsie0:0.2.77build3 +// libwinpr3-3:3.5.1+dfsg1-0ubuntu1 +// libwireplumber-0.4-0:0.4.17-1ubuntu4 +// libwmf-0.2-7:0.2.13-1.1build3 +// libwmf-0.2-7-gtk:0.2.13-1.1build3 +// libwmf0.2-7-gtk:0.2.13-1.1build3 +// libwmflite-0.2-7:0.2.13-1.1build3 +// libwnck-3-0:43.0-3build4 +// libwnck-3-common:43.0-3build4 +// libwoff1:1.0.2-2build1 +// libwrap0:7.6.q-33 +// libwww-perl:6.76-1 +// libwww-robotrules-perl:6.02-1 +// libx11-6:2:1.8.7-1build1 +// libx11-data:2:1.8.7-1build1 +// libx11-protocol-perl:0.56-9 +// libx11-xcb1:2:1.8.7-1build1 +// libxatracker2:24.2.8-1ubuntu1~24.04.1 +// libxau6:1:1.0.9-1build6 +// libxaw7:2:1.0.14-1build2 +// libxcb-cursor0:0.1.4-1build1 +// libxcb-damage0:1.15-1ubuntu2 +// libxcb-dri2-0:1.15-1ubuntu2 +// libxcb-dri3-0:1.15-1ubuntu2 +// libxcb-glx0:1.15-1ubuntu2 +// libxcb-icccm4:0.4.1-1.1build3 +// libxcb-image0:0.4.0-2build1 +// libxcb-keysyms1:0.4.0-1build4 +// libxcb-present0:1.15-1ubuntu2 +// libxcb-randr0:1.15-1ubuntu2 +// libxcb-render-util0:0.3.9-1build4 +// libxcb-render0:1.15-1ubuntu2 +// libxcb-res0:1.15-1ubuntu2 +// libxcb-shape0:1.15-1ubuntu2 +// libxcb-shm0:1.15-1ubuntu2 +// libxcb-sync1:1.15-1ubuntu2 +// libxcb-util1:0.4.0-1build3 +// libxcb-xfixes0:1.15-1ubuntu2 +// libxcb-xinerama0:1.15-1ubuntu2 +// libxcb-xinput0:1.15-1ubuntu2 +// libxcb-xkb1:1.15-1ubuntu2 +// libxcb-xv0:1.15-1ubuntu2 +// libxcb1:1.15-1ubuntu2 +// libxcomposite1:1:0.4.5-1build3 +// libxcursor1:1:1.2.1-1build1 +// libxcvt0:0.1.2-1build1 +// libxdamage1:1:1.1.6-1build1 +// libxdmcp6:1:1.1.3-0ubuntu6 +// libxext6:2:1.3.4-1build2 +// libxfixes3:1:6.0.0-2build1 +// libxfont2:1:2.0.6-1build1 +// libxft2:2.3.6-1build1 +// libxi6:2:1.8.1-1build1 +// libxinerama1:2:1.1.4-3build1 +// libxkbcommon-x11-0:1.6.0-1build1 +// libxkbcommon0:1.6.0-1build1 +// libxkbfile1:1:1.1.0-1build4 +// libxkbregistry0:1.6.0-1build1 +// libxklavier16:5.4-5build2 +// libxml-parser-perl:2.47-1build3 +// libxml-twig-perl:1:3.52-2 +// libxml-xpathengine-perl:0.14-2 +// libxml2:2.9.14+dfsg-1.3ubuntu3.2 +// libxmlb2:0.3.18-1 +// libxmu6:2:1.1.3-3build2 +// libxmuu1:2:1.1.3-3build2 +// libxnvctrl0:570.124.06-0ubuntu1 +// libxpm4:1:3.5.17-1build2 +// libxrandr2:2:1.5.2-2build1 +// libxrender1:1:0.9.10-1.1build1 +// libxres1:2:1.2.1-1build1 +// libxshmfence1:1.3-1build5 +// libxslt1.1:1.1.39-0exp1ubuntu0.24.04.1 +// libxss1:1:1.2.3-1build3 +// libxt6t64:1:1.2.1-1.2build1 +// libxtables12:1.8.10-3ubuntu2 +// libxtst6:2:1.2.3-1.1build1 +// libxv1:2:1.0.11-1.1build1 +// libxvmc1:2:1.0.12-2build3 +// libxxf86dga1:2:1.1.5-1build1 +// libxxf86vm1:1:1.1.4-1build4 +// libxxhash0:0.8.2-2build1 +// libyaml-0-2:0.2.5-1build1 +// libyelp0:42.2-1build2 +// libzstd1:1.5.5+dfsg2-2build1.1 +// libzzip-0-13t64:0.13.72+dfsg.1-1.2build1 +// linux-base:4.5ubuntu9 +// linux-firmware:20240318.git3b128b60-0ubuntu2.10 +// linux-generic-hwe-24.04:6.11.0-19.19~24.04.1 +// linux-headers-6.11.0-19-generic:6.11.0-19.19~24.04.1 +// linux-headers-generic-hwe-24.04:6.11.0-19.19~24.04.1 +// linux-hwe-6.11-headers-6.11.0-19:6.11.0-19.19~24.04.1 +// linux-hwe-6.11-tools-6.11.0-19:6.11.0-19.19~24.04.1 +// linux-image-6.11.0-19-generic:6.11.0-19.19~24.04.1 +// linux-image-generic-hwe-24.04:6.11.0-19.19~24.04.1 +// linux-libc-dev:6.8.0-55.57 +// linux-modules-6.11.0-19-generic:6.11.0-19.19~24.04.1 +// linux-modules-extra-6.11.0-19-generic:6.11.0-19.19~24.04.1 +// linux-modules-nvidia-550-6.11.0-19-generic:6.11.0-19.19~24.04.1+1 +// linux-modules-nvidia-550-generic-hwe-24.04:6.11.0-19.19~24.04.1+1 +// linux-objects-nvidia-550-6.11.0-19-generic:6.11.0-19.19~24.04.1+1 +// linux-signatures-nvidia-6.11.0-19-generic:6.11.0-19.19~24.04.1+1 +// linux-sound-base:1.0.25+dfsg-0ubuntu7 +// linux-tools-6.11.0-19-generic:6.11.0-19.19~24.04.1 +// linux-tools-common:6.8.0-55.57 +// lmodern:2.005-1 +// locales:2.39-0ubuntu8.4 +// login:1:4.13+dfsg1-4ubuntu3.2 +// logrotate:3.21.0-2build1 +// logsave:1.47.0-2.4~exp1ubuntu4.1 +// lsb-release:12.0-2 +// lshw:02.19.git.2021.06.19.996aaad9c7-2build3 +// lsof:4.95.0-1build3 +// lto-disabled-list:47 +// m17n-db:1.8.5-1 +// m4:1.4.19-4build1 +// make:4.3-4.1build2 +// man-db:2.12.0-4build2 +// manpages:6.7-2 +// manpages-dev:6.7-2 +// mawk:1.3.4.20240123-1build1 +// media-types:10.1.0 +// memtest86+:7.00-1build1 +// mesa-libgallium:24.2.8-1ubuntu1~24.04.1 +// mesa-vdpau-drivers:24.2.8-1ubuntu1~24.04.1mesa-vulkan-drivers:24.2.8-1ubuntu1~24.04.1 +// mobile-broadband-provider-info:20230416-1 +// modemmanager:1.23.4-0ubuntu2 +// mokutil:0.6.0-2build3 +// mongodb-mongosh:2.4.2 +// mount:2.39.3-9ubuntu6.2 +// mousetweaks:3.32.0-4build2 +// mscompress:0.4-10build1 +// mtr-tiny:0.95-1.1ubuntu0.1 +// mupdf-tools:1.23.10+ds1-1build3 +// mutter-common:46.2-1ubuntu0.24.04.6 +// mutter-common-bin:46.2-1ubuntu0.24.04.6 +// nano:7.2-2ubuntu0.1 +// nautilus:1:46.2-0ubuntu0.3 +// nautilus-data:1:46.2-0ubuntu0.3 +// nautilus-extension-gnome-terminal:3.52.0-1ubuntu2 +// nautilus-sendto:3.8.6-7build2 +// ncurses-base:6.4+20240113-1ubuntu2 +// ncurses-bin:6.4+20240113-1ubuntu2 +// ncurses-term:6.4+20240113-1ubuntu2 +// net-tools:2.10-0.1ubuntu4 +// netbase:6.4 +// netcat-openbsd:1.226-1ubuntu2 +// netplan-generator:1.1.1-1~ubuntu24.04.1 +// netplan.io:1.1.1-1~ubuntu24.04.1 +// network-manager:1.46.0-1ubuntu2.2 +// network-manager-config-connectivity-ubuntu:1.46.0-1ubuntu2.2 +// network-manager-gnome:1.34.0-1ubuntu3 +// network-manager-openvpn:1.10.2-4build2 +// network-manager-openvpn-gnome:1.10.2-4build2 +// network-manager-pptp:1.2.12-3build2 +// network-manager-pptp-gnome:1.2.12-3build2 +// networkd-dispatcher:2.2.4-1 +// nftables:1.0.9-1build1 +// nsight-compute-2024.3.2:2024.3.2.3-1 +// nsight-systems-2024.5.1:2024.5.1.113-245134619542v0 +// ntfs-3g:1:2022.10.3-1.2ubuntu3 +// numactl:2.0.18-1build1 +// nvidia-compute-utils-550:550.144.03-0ubuntu1 +// nvidia-dkms-550:550.144.03-0ubuntu1 +// nvidia-driver-550:550.144.03-0ubuntu1 +// nvidia-firmware-550-550.120:550.120-0ubuntu0.24.04.1 +// nvidia-firmware-550-550.144.03:550.144.03-0ubuntu1 +// nvidia-kernel-common-550:550.144.03-0ubuntu1 +// nvidia-kernel-source-550:550.144.03-0ubuntu1 +// nvidia-prime:0.8.17.2 +// nvidia-settings:570.124.06-0ubuntu1 +// nvidia-utils-550:550.144.03-0ubuntu1 +// openjdk-21-jre:21.0.6+7-1~24.04.1 +// openjdk-21-jre-headless:21.0.6+7-1~24.04.1 +// openprinting-ppds:20230202-1 +// openssh-client:1:9.6p1-3ubuntu13.8 +// openssh-server:1:9.6p1-3ubuntu13.8 +// openssh-sftp-server:1:9.6p1-3ubuntu13.8 +// openssl:3.0.13-0ubuntu3.5 +// openvpn:2.6.12-0ubuntu0.24.04.1 +// orca:46.1-1ubuntu1 +// os-prober:1.81ubuntu4 +// p11-kit:0.25.3-4ubuntu2.1 +// p11-kit-modules:0.25.3-4ubuntu2.1 +// packagekit:1.2.8-2ubuntu1.2 +// packagekit-tools:1.2.8-2ubuntu1.2 +// packages-microsoft-prod:1.1-ubuntu24.04 +// parted:3.6-4build1 +// passwd:1:4.13+dfsg1-4ubuntu3.2 +// patch:2.7.6-7build3 +// pci.ids:0.0~2024.03.31-1 +// pciutils:1:3.10.0-2build1 +// pcmciautils:018-14build1 +// perl:5.38.2-3.2build2.1 +// perl-base:5.38.2-3.2build2.1 +// perl-modules-5.38:5.38.2-3.2build2.1 +// perl-openssl-defaults:7build3 +// pigz:2.8-1 +// pinentry-curses:1.2.1-3ubuntu5 +// pinentry-gnome3:1.2.1-3ubuntu5 +// pipewire:1.0.5-1ubuntu3 +// pipewire-alsa:1.0.5-1ubuntu3 +// pipewire-audio:1.0.5-1ubuntu3 +// pipewire-bin:1.0.5-1ubuntu3 +// pipewire-pulse:1.0.5-1ubuntu3 +// pipx:1.4.3-1 +// pkexec:124-2ubuntu1.24.04.2 +// pkg-config:1.8.1-2build1 +// pkgconf:1.8.1-2build1 +// pkgconf-bin:1.8.1-2build1 +// plymouth:24.004.60-1ubuntu7.1 +// plymouth-label:24.004.60-1ubuntu7.1 +// plymouth-theme-spinner:24.004.60-1ubuntu7.1 +// plymouth-theme-ubuntu-text:24.004.60-1ubuntu7.1 +// policykit-1:124-2ubuntu1.24.04.2 +// policykit-desktop-privileges:0.22 +// polkitd:124-2ubuntu1.24.04.2 +// poppler-data:0.4.12-1 +// poppler-utils:24.02.0-1ubuntu9.2 +// power-profiles-daemon:0.21-1 +// powermgmt-base:1.37 +// powershell:7.5.0-1.deb +// ppp:2.4.9-1+1.1ubuntu4 +// pptp-linux:1.10.0-1build4 +// printer-driver-brlaser:6-3build2 +// printer-driver-c2esp:27-11ubuntu7 +// printer-driver-foo2zjs:20200505dfsg0-2ubuntu6 +// printer-driver-foo2zjs-common:20200505dfsg0-2ubuntu6 +// printer-driver-hpcups:3.23.12+dfsg0-0ubuntu5 +// printer-driver-m2300w:0.51-15build2 +// printer-driver-min12xxw:0.0.9-11build3 +// printer-driver-pnm2ppa:1.13+nondbs-0ubuntu10 +// printer-driver-postscript-hp:3.23.12+dfsg0-0ubuntu5 +// printer-driver-ptouch:1.7-1build2 +// printer-driver-pxljr:1.4+repack0-6build2 +// printer-driver-sag-gdi:0.1-8 +// printer-driver-splix:2.0.0+svn315-7fakesync1ubuntu1 +// procps:2:4.0.4-4ubuntu3.2 +// psmisc:23.7-1build1 +// publicsuffix:20231001.0357-0.1 +// python-apt-common:2.7.7ubuntu4 +// python-babel-localedata:2.10.3-3build1 +// python-is-python3:3.11.4-1 +// python3:3.12.3-0ubuntu2 +// python3-apport:2.28.1-0ubuntu3.5 +// python3-apt:2.7.7ubuntu4 +// python3-aptdaemon:1.1.1+bzr982-0ubuntu44 +// python3-aptdaemon.gtk3widgets:1.1.1+bzr982-0ubuntu44 +// python3-argcomplete:3.1.4-1ubuntu0.1 +// python3-attr:23.2.0-2 +// python3-babel:2.10.3-3build1 +// python3-blinker:1.7.0-1 +// python3-bpfcc:0.29.1+ds-1ubuntu7 +// python3-brlapi:6.6-4ubuntu5 +// python3-cairo:1.25.1-2build2 +// python3-certifi:2023.11.17-1 +// python3-cffi-backend:1.16.0-2build1 +// python3-chardet:5.2.0+dfsg-1 +// python3-click:8.1.6-2 +// python3-colorama:0.4.6-4 +// python3-commandnotfound:23.04.0 +// python3-configobj:5.0.8-3 +// python3-cryptography:41.0.7-4ubuntu0.1 +// python3-cups:2.0.1-5build6 +// python3-cupshelpers:1.5.18-1ubuntu9 +// python3-dateutil:2.8.2-3ubuntu1 +// python3-dbus:1.3.2-5build3 +// python3-debconf:1.5.86ubuntu1 +// python3-debian:0.1.49ubuntu2 +// python3-defer:1.0.6-2.1ubuntu1 +// python3-dev:3.12.3-0ubuntu2 +// python3-distro:1.9.0-1 +// python3-distro-info:1.7build1 +// python3-distupgrade:1:24.04.26 +// python3-gdbm:3.12.3-0ubuntu1 +// python3-gi:3.48.2-1 +// python3-httplib2:0.20.4-3 +// python3-ibus-1.0:1.5.29-2 +// python3-idna:3.6-2ubuntu0.1 +// python3-jinja2:3.1.2-1ubuntu1.3 +// python3-json-pointer:2.0-0ubuntu1 +// python3-jsonpatch:1.32-3 +// python3-jsonschema:4.10.3-2ubuntu1 +// python3-jwt:2.7.0-1 +// python3-launchpadlib:1.11.0-6 +// python3-lazr.restfulclient:0.14.6-1 +// python3-lazr.uri:1.0.6-3 +// python3-louis:3.29.0-1build1 +// python3-markdown-it:3.0.0-2 +// python3-markupsafe:2.1.5-1build2 +// python3-mdurl:0.1.2-1 +// python3-minimal:3.12.3-0ubuntu2 +// python3-netaddr:0.8.0-2ubuntu1 +// python3-netifaces:0.11.0-2build3 +// python3-netplan:1.1.1-1~ubuntu24.04.1 +// python3-oauthlib:3.2.2-1 +// python3-olefile:0.46-3 +// python3-packaging:24.0-1 +// python3-pexpect:4.9-2 +// python3-pil:10.2.0-1ubuntu1 +// python3-pip-whl:24.0+dfsg-1ubuntu1.1 +// python3-pkg-resources:68.1.2-2ubuntu1.1 +// python3-platformdirs:4.2.0-1 +// python3-problem-report:2.28.1-0ubuntu3.5 +// python3-psutil:5.9.8-2build2 +// python3-ptyprocess:0.7.0-5 +// python3-pygments:2.17.2+dfsg-1 +// python3-pyparsing:3.1.1-1 +// python3-pyrsistent:0.20.0-1build2 +// python3-requests:2.31.0+dfsg-1ubuntu1 +// python3-rich:13.7.1-1 +// python3-serial:3.5-2 +// python3-setuptools-whl:68.1.2-2ubuntu1.1 +// python3-six:1.16.0-4 +// python3-software-properties:0.99.49.1 +// python3-speechd:0.12.0~rc2-2build3 +// python3-sss:2.9.4-1.1ubuntu6.2 +// python3-systemd:235-1build4 +// python3-typing-extensions:4.10.0-1 +// python3-tz:2024.1-2 +// python3-update-manager:1:24.04.9 +// python3-urllib3:2.0.7-1ubuntu0.1 +// python3-userpath:1.9.1-1 +// python3-venv:3.12.3-0ubuntu2 +// python3-wadllib:1.3.6-5 +// python3-xdg:0.28-2 +// python3-xkit:0.5.0ubuntu6 +// python3-yaml:6.0.1-2build2 +// python3.12:3.12.3-1ubuntu0.5 +// python3.12-dev:3.12.3-1ubuntu0.5 +// python3.12-minimal:3.12.3-1ubuntu0.5 +// python3.12-venv:3.12.3-1ubuntu0.5 +// readline-common:8.2-4build1 +// rfkill:2.39.3-9ubuntu6.2 +// rpcsvc-proto:1.4.2-0ubuntu7 +// rsync:3.2.7-1ubuntu1.2 +// rsyslog:8.2312.0-3ubuntu9 +// rtkit:0.13-5build1 +// rygel:0.42.5-1ubuntu3 +// samba-libs:2:4.19.5+dfsg-4ubuntu9 +// sane-airscan:0.99.29-0ubuntu4 +// sane-utils:1.2.1-7build4 +// sbsigntool:0.9.4-3.1ubuntu7 +// screen-resolution-extra:0.18.3 +// seahorse:43.0-3build2 +// secureboot-db:1.9build1 +// sed:4.9-2build1 +// sensible-utils:0.0.22 +// session-migration:0.3.9build1 +// sgml-base:1.31 +// sgml-data:2.0.11+nmu1 +// shared-mime-info:2.4-4 +// shim-signed:1.58+15.8-0ubuntu1 +// slirp4netns:1.2.1-1build2 +// snapd:2.67.1+24.04 +// software-properties-common:0.99.49.1 +// software-properties-gtk:0.99.49.1 +// sound-icons:0.1-8 +// sound-theme-freedesktop:0.8-2ubuntu1 +// speech-dispatcher:0.12.0~rc2-2build3 +// speech-dispatcher-audio-plugins:0.12.0~rc2-2build3 +// speech-dispatcher-espeak-ng:0.12.0~rc2-2build3 +// spice-vdagent:0.22.1-4build3 +// squashfs-tools:1:4.6.1-1build1 +// ssh-import-id:5.11-0ubuntu2.24.04.1 +// ssl-cert:1.1.2ubuntu1 +// sssd:2.9.4-1.1ubuntu6.2 +// sssd-ad:2.9.4-1.1ubuntu6.2 +// sssd-ad-common:2.9.4-1.1ubuntu6.2 +// sssd-common:2.9.4-1.1ubuntu6.2 +// sssd-ipa:2.9.4-1.1ubuntu6.2 +// sssd-krb5:2.9.4-1.1ubuntu6.2 +// sssd-krb5-common:2.9.4-1.1ubuntu6.2 +// sssd-ldap:2.9.4-1.1ubuntu6.2 +// sssd-proxy:2.9.4-1.1ubuntu6.2 +// strace:6.8-0ubuntu2 +// sudo:1.9.15p5-3ubuntu5 +// switcheroo-control:2.6-2build2 +// sysstat:12.6.1-2 +// system-config-printer-common:1.5.18-1ubuntu9 +// system-config-printer-udev:1.5.18-1ubuntu9 +// systemd:255.4-1ubuntu8.6 +// systemd-dev:255.4-1ubuntu8.6 +// systemd-hwe-hwdb:255.1.4 +// systemd-oomd:255.4-1ubuntu8.6 +// systemd-resolved:255.4-1ubuntu8.6 +// systemd-sysv:255.4-1ubuntu8.6 +// systemd-timesyncd:255.4-1ubuntu8.6 +// sysvinit-utils:3.08-6ubuntu3 +// t1utils:1.41-4build3 +// tar:1.35+dfsg-3build1 +// tcl:8.6.14build1 +// tcl8.6:8.6.14+dfsg-1build1 +// tcpdump:4.99.4-3ubuntu4 +// tecla:46.0-1build1 +// telnet:0.17+2.5-3ubuntu4 +// tex-common:6.18 +// texlive-base:2023.20240207-1 +// texlive-binaries:2023.20230311.66589-9build3 +// thermald:2.5.6-2ubuntu0.24.04.2 +// time:1.9-0.2build1 +// tnftp:20230507-2build3 +// tpm-udev:0.6ubuntu1 +// trace-cmd:3.2-1ubuntu2 +// tracker:3.7.1-1build1 +// tracker-extract:3.7.1-1build1 +// tracker-miner-fs:3.7.1-1build1 +// tzdata:2024b-0ubuntu0.24.04.1 +// ubuntu-advantage-desktop-daemon:1.11ubuntu0.1 +// ubuntu-desktop-minimal:1.539.2 +// ubuntu-docs:24.04.2 +// ubuntu-drivers-common:1:0.9.7.6ubuntu3.1 +// ubuntu-kernel-accessories:1.539.2 +// ubuntu-keyring:2023.11.28.1 +// ubuntu-minimal:1.539.2 +// ubuntu-mono:24.04-0ubuntu1 +// ubuntu-pro-client:34~24.04 +// ubuntu-pro-client-l10n:34~24.04 +// ubuntu-release-upgrader-core:1:24.04.26 +// ubuntu-release-upgrader-gtk:1:24.04.26 +// ubuntu-report:1.7.3ubuntu0.24.04.2 +// ubuntu-session:46.0-1ubuntu4 +// ubuntu-settings:24.04.5 +// ubuntu-standard:1.539.2 +// ubuntu-wallpapers:24.04.2 +// ubuntu-wallpapers-noble:24.04.2 +// ucf:3.0043+nmu1 +// udev:255.4-1ubuntu8.6 +// udisks2:2.10.1-6ubuntu1 +// ufw:0.36.2-6 +// unattended-upgrades:2.9.1+nmu4ubuntu1 +// unzip:6.0-28ubuntu4.1 +// update-inetd:4.53 +// update-manager:1:24.04.9 +// update-manager-core:1:24.04.9 +// update-notifier:3.192.68build3 +// update-notifier-common:3.192.68build3 +// upower:1.90.3-1 +// usb-modeswitch:2.6.1-3ubuntu3 +// usb-modeswitch-data:20191128-6 +// usb.ids:2024.03.18-1 +// usbmuxd:1.1.1-5~exp3ubuntu2 +// usbutils:1:017-3build1 +// util-linux:2.39.3-9ubuntu6.2 +// uuid-dev:2.39.3-9ubuntu6.2 +// uuid-runtime:2.39.3-9ubuntu6.2 +// vdpau-driver-all:1.5-2build1 +// vim-common:2:9.1.0016-1ubuntu7.6 +// vim-tiny:2:9.1.0016-1ubuntu7.6 +// wamerican:2020.12.07-2 +// wbritish:2020.12.07-2 +// webp-pixbuf-loader:0.2.4-2build2 +// wget:1.21.4-1ubuntu4.1 +// whiptail:0.52.24-2ubuntu2 +// whoopsie:0.2.77build3 +// whoopsie-preferences:23build3 +// wireless-regdb:2024.07.04-0ubuntu1~24.04.1 +// wireless-tools:30~pre9-16.1ubuntu2 +// wireplumber:0.4.17-1ubuntu4 +// wpasupplicant:2:2.10-21ubuntu0.2 +// x11-apps:7.7+11build3 +// x11-common:1:7.7+23ubuntu3 +// x11-session-utils:7.7+6build2 +// x11-utils:7.7+6build2 +// x11-xkb-utils:7.7+8build2 +// x11-xserver-utils:7.7+10build2 +// xauth:1:1.1.2-1build1 +// xbitmaps:1.1.1-2.2 +// xbrlapi:6.6-4ubuntu5 +// xcursor-themes:1.0.6-0ubuntu1 +// xcvt:0.1.2-1build1 +// xdg-dbus-proxy:0.1.5-1build2 +// xdg-desktop-portal:1.18.4-1ubuntu2.24.04.1 +// xdg-desktop-portal-gnome:46.2-0ubuntu1 +// xdg-desktop-portal-gtk:1.15.1-1build2 +// xdg-user-dirs:0.18-1build1 +// xdg-user-dirs-gtk:0.11-1build2 +// xdg-utils:1.1.3-4.1ubuntu3 +// xfonts-base:1:1.0.5+nmu1 +// xfonts-encodings:1:1.0.5-0ubuntu2 +// xfonts-scalable:1:1.0.3-1.3 +// xfonts-utils:1:7.7+6build3 +// xfsprogs:6.6.0-1ubuntu2.1 +// xinit:1.4.1-0ubuntu5 +// xinput:1.6.4-1build1 +// xkb-data:2.41-2ubuntu1.1 +// xml-core:0.19 +// xorg:1:7.7+23ubuntu3 +// xorg-docs-core:1:1.7.1-1.2 +// xserver-common:2:21.1.12-1ubuntu1.2 +// xserver-xephyr:2:21.1.12-1ubuntu1.2 +// xserver-xorg:1:7.7+23ubuntu3 +// xserver-xorg-core:2:21.1.12-1ubuntu1.2 +// xserver-xorg-input-all:1:7.7+23ubuntu3 +// xserver-xorg-input-libinput:1.4.0-1build1 +// xserver-xorg-input-wacom:1:1.2.0-1ubuntu2 +// xserver-xorg-legacy:2:21.1.12-1ubuntu1.2 +// xserver-xorg-video-all:1:7.7+23ubuntu3 +// xserver-xorg-video-amdgpu:23.0.0-1build1 +// xserver-xorg-video-ati:1:22.0.0-1build1 +// xserver-xorg-video-fbdev:1:0.5.0-2build2 +// xserver-xorg-video-intel:2:2.99.917+git20210115-1build1 +// xserver-xorg-video-nouveau:1:1.0.17-2build1 +// xserver-xorg-video-nvidia-550:550.144.03-0ubuntu1 +// xserver-xorg-video-qxl:0.1.6-1build1 +// xserver-xorg-video-radeon:1:22.0.0-1build1 +// xserver-xorg-video-vesa:1:2.6.0-1 +// xserver-xorg-video-vmware:1:13.4.0-1build1 +// xwayland:2:23.2.6-1ubuntu0.4 +// xxd:2:9.1.0016-1ubuntu7.6 +// xz-utils:5.6.1+really5.4.5-1build0.1 +// yaru-theme-gnome-shell:24.04.2-0ubuntu1 +// yaru-theme-gtk:24.04.2-0ubuntu1 +// yaru-theme-icon:24.04.2-0ubuntu1 +// yaru-theme-sound:24.04.2-0ubuntu1 +// yelp:42.2-1build2 +// yelp-xsl:42.1-2 +// zenity:4.0.1-1build3 +// zenity-common:4.0.1-1build3 +// zip:3.0-13ubuntu0.2 +// zlib1g:1:1.3.dfsg-3.1ubuntu2.1 +// zlib1g-dev:1:1.3.dfsg-3.1ubuntu2.1 +// zstd:1.5.5+dfsg2-2build1.1 diff --git a/internal/util.go b/internal/util.go new file mode 100644 index 0000000..feb597f --- /dev/null +++ b/internal/util.go @@ -0,0 +1,15 @@ +package internal + +func MergeMaps(maps ...map[string]string) map[string]string { + result := make(map[string]string) + for _, imap := range maps { + for k, v := range imap { + result[k] = v + } + } + return result +} + +func StringAddressed(str string) *string { + return &str +} diff --git a/main.go b/main.go index 357a535..3c35833 100644 --- a/main.go +++ b/main.go @@ -1,22 +1,21 @@ package main import ( - "bytes" "context" - "encoding/json" + "errors" "fmt" + "os" + "time" + policyManager "github.com/compliance-framework/agent/policy-manager" "github.com/compliance-framework/agent/runner" "github.com/compliance-framework/agent/runner/proto" "github.com/compliance-framework/configuration-service/sdk" - protolang "github.com/golang/protobuf/proto" + "github.com/compliance-framework/plugin-apt-versions/internal" "github.com/google/uuid" "github.com/hashicorp/go-hclog" goplugin "github.com/hashicorp/go-plugin" "google.golang.org/protobuf/types/known/timestamppb" - "os" - "os/exec" - "time" ) type AptVersion struct { @@ -24,28 +23,29 @@ type AptVersion struct { config map[string]string } -// Configure, PrepareForEval, and Eval are called at different times during the plugin execution lifecycle, +// Configure, and Eval are called at different times during the plugin execution lifecycle, // and are responsible for different tasks: // // Configure is called on plugin startup. It is primarily used to configure a plugin for its lifetime. // Here you should store any configurations like usernames and password required by the plugin. // -// PrepareForEval is called on a scheduled execution of the plugin. Whenever the plugin is going to be run, -// PrepareForEval is called, so it can collect any data necessary for making assertions. -// Here you should run any commands, call any endpoints, or process any reports, which you want to turn into -// compliance findings and observations. +// Eval is called once for each scheduled execution with a list of policy paths and it is responsible +// for evaluating each of these policy paths against the data it requires to evaluate those policies. +// The plugin is responsible for collecting the data it needs to evaluate the policies in the Eval +// method and then running the policies against that data. // -// Eval is called multiple times for each scheduled execution. It is responsible for running policies against the -// collected data from PrepareForEval. When a user passed multiple matching policy bundles to the agent, each of them -// will be passed to Eval in sequence. Eval will run against the collected data N times, where N is the amount -// of matching policies passed into the agent. +// The simplest way to handle multiple policies is to do an initial lookup of all the data that may +// be required for all policies in the method, and then run the policies against that data. This, +// however, may not be the most efficient way to run policies, and you may want to optimize this +// while writing plugins to reduce the amount of data you need to collect and store in memory. It +// is the plugins responsibility to ensure that it is (reasonably) efficient in its use of +// resources. // // A user starts the agent, and passes the plugin and any policy bundles. // // The agent will: // - Start the plugin // - Call Configure() with teh required config -// - Call PrepareForEval() so the plugin can collect the relevant state // - Call Eval() with the first policy bundles (one by one, in turn), // so the plugin can report any violations against the configuration func (l *AptVersion) Configure(req *proto.ConfigureRequest) (*proto.ConfigureResponse, error) { @@ -53,210 +53,233 @@ func (l *AptVersion) Configure(req *proto.ConfigureRequest) (*proto.ConfigureRes // Configure is used to set up any configuration needed by this plugin over its lifetime. // This will likely only be called once on plugin startup, which may then run for an extended period of time. - // In this method, you should save any configuration values to your plugin struct, so you can later - // re-use them in PrepareForEval and Eval. - - l.config = req.Config + l.config = req.GetConfig() return &proto.ConfigureResponse{}, nil } -// GetInstalledPackages retrieves the list of installed packages in JSON format -func GetInstalledPackages(l *AptVersion) (map[string]interface{}, string, error) { - command := ` - dpkg-query -W -f='${Package} ${Version}\n' | - sed -E ' - # We want to extract the major, minor, and patch versions from the apt version string, eg: 1:2.38.1-5+deb12u3 => 2.38.1 - # Remove anything after the '-+~' - s/^([^[:space:]]*)[[:space:]](.*)[-+~].*/\1 \2/g; - - # If we see x.y.z, then extract those - s/^([^[:space:]]*)[[:space:]]([0-9]*:?)?:?([0-9]+)\.([0-9]+)[\.-]([0-9]+).*/\1 \3.\4.\5/g; - - # Remove 'ubuntu' et al - s/^([^[:space:]]*)[[:space:]]([^a-z]*)([a-z]+)([^a-z].*)/\1 \2.\4/g; - - # Then, if we see x.y, then extract that, and add a 0 for the patch version - s/^([[^:space:]]*)[[:space:]]([0-9]*:?)?:?([0-9]+)\.([0-9]+)[^.].*/\1 \3.\4.0/g; - - # Then, remove leading zeroes - s/\b0*([1-9][0-9]*)/\1/g; - - # Truncate those items that have more than three points in the version x.y.z.a rather than x.y.z - s/([^[:space:]]*)[[:space:]]([0-9]+)\.([0-9]+)\.([0-9]+)\..*/\1 \2.\3.\4/; +func (l *AptVersion) Eval(request *proto.EvalRequest, apiHelper runner.ApiHelper) (*proto.EvalResponse, error) { + ctx := context.TODO() - # Add a zero for those items with only x.y rather than x.y.z - s/([^[:space:]]*)[[:space:]]([0-9]+)\.([0-9]+)$/\1 \2.\3.0/; + activities := make([]*proto.Activity, 0) - # Add two zero for those items with only x rather than x.y.z - s/([^[:space:]]*)[[:space:]]([0-9]+)$/\1 \2.0.0/; + data, getInstalledPackagesSteps, err := internal.GetInstalledPackages(l.logger) + l.logger.Trace(fmt.Sprintf("Packages output: %s", data)) + if err != nil { + return nil, fmt.Errorf("error getting installed packages: %w", err) + } - # Now, turn that into a json object: - s/^(.*)[[:space:]](.*)/"\1": "\2"/; - ' | - awk ' - # Turn that into a json document - BEGIN { print "{" } { print (NR>1?",":"") $0 } END { print "}" } - ' | - tr '\n' ' ' - ` - l.logger.Debug(fmt.Sprintf("RUNNING COMMAND: %s", command)) - dpkgCmd := exec.Command("bash", "-c", command) + activities = append(activities, &proto.Activity{ + Title: "Collect OS packages installed", + Description: "Collect OS packages installed on the host machine, and prepare collected data for validation in policy engine", + Steps: getInstalledPackagesSteps, + }) - var dpkgOutput bytes.Buffer - dpkgCmd.Stdout = &dpkgOutput - dpkgCmd.Stderr = &dpkgOutput - if err := dpkgCmd.Run(); err != nil { - return nil, "", fmt.Errorf("error running dpkg-query: %w", err) + observations, findings, err := l.evaluatePolicies(ctx, activities, data, request) + if err != nil { + return &proto.EvalResponse{ + Status: proto.ExecutionStatus_FAILURE, + }, err } - output := fmt.Sprintf("%s", dpkgOutput.String()) - l.logger.Debug(fmt.Sprintf("Installed Packages JSON:\n%s\n", output)) + if err = apiHelper.CreateObservations(ctx, observations); err != nil { + l.logger.Error("Failed to send observations", "error", err) + return &proto.EvalResponse{ + Status: proto.ExecutionStatus_FAILURE, + }, err + } - // Parse the JSON output into a map - var packages map[string]interface{} - if err := json.Unmarshal([]byte(output), &packages); err != nil { - return nil, output, fmt.Errorf("error parsing JSON output: %w", err) + if err = apiHelper.CreateFindings(ctx, findings); err != nil { + l.logger.Error("Failed to send findings", "error", err) + return &proto.EvalResponse{ + Status: proto.ExecutionStatus_FAILURE, + }, err } - return packages, output, nil + return &proto.EvalResponse{ + Status: proto.ExecutionStatus_SUCCESS, + }, err } -func (l *AptVersion) Eval(request *proto.EvalRequest, apiHelper runner.ApiHelper) (*proto.EvalResponse, error) { - - // Eval is used to run policies against the data you've collected in PrepareForEval. - // Eval will be called N times for every scheduled plugin execution where N is the amount of matching policies - // passed to the agent. - - // When a user passes multiple policy bundles to the agent, each will be passed to Eval in turn to run against the - // same data collected in PrepareForEval. - - ctx := context.TODO() +func (l *AptVersion) evaluatePolicies(ctx context.Context, activities []*proto.Activity, packageData map[string]interface{}, req *proto.EvalRequest) ([]*proto.Observation, []*proto.Finding, error) { startTime := time.Now() + var accumulatedErrors error - data, output, err := GetInstalledPackages(l) - l.logger.Debug(fmt.Sprintf("JSON OUTPUT 0.1.6: %s", output)) - if err != nil { - return nil, fmt.Errorf("error getting installed packages: %w", err) - } + findings := make([]*proto.Finding, 0) + observations := make([]*proto.Observation, 0) - for _, policyPath := range request.GetPolicyPaths() { - // The Policy Manager aggregates much of the policy execution and output structuring. - results, err := policyManager. - New(ctx, l.logger, policyPath). - Execute(ctx, "apt_version", data) + l.logger.Debug("config", l.config) + for _, policyPath := range req.GetPolicyPaths() { + steps := make([]*proto.Step, 0) + steps = append(steps, &proto.Step{ + Title: "Compile policy bundle", + Description: "Using a locally addressable policy path, compile the policy files to an in memory executable.", + }) + steps = append(steps, &proto.Step{ + Title: "Execute policy bundle", + Description: "Using previously collected JSON-formatted installed OS package data, execute the compiled policies", + }) + results, err := policyManager.New(ctx, l.logger, policyPath).Execute(ctx, "apt_version", packageData) if err != nil { l.logger.Error("Failed to evaluate against policy bundle", "error", err) - return &proto.EvalResponse{ - Status: proto.ExecutionStatus_FAILURE, - }, err + accumulatedErrors = errors.Join(accumulatedErrors, err) + return observations, findings, accumulatedErrors } hostname := os.Getenv("HOSTNAME") + subjectAttributeMap := map[string]string{ + "type": "machine-instance", + "hostname": hostname, + } + subjects := []*proto.SubjectReference{ + { + Type: "machine-instance", + Attributes: subjectAttributeMap, + Title: internal.StringAddressed("Machine Instance"), + Remarks: internal.StringAddressed("A machine instance where we've retrieved the installed packages."), + Props: []*proto.Property{ + { + Name: "hostname", + Value: hostname, + Remarks: internal.StringAddressed("The local hostname of the machine where the plugin has been executed"), + }, + }, + }, + } + actors := []*proto.OriginActor{ + { + Title: "The Continuous Compliance Framework", + Type: "assessment-platform", + Links: []*proto.Link{ + { + Href: "https://compliance-framework.github.io/docs/", + Rel: internal.StringAddressed("reference"), + Text: internal.StringAddressed("The Continuous Compliance Framework"), + }, + }, + Props: nil, + }, + { + Title: "Continuous Compliance Framework - Local APT Installed Packages Plugin", + Type: "tool", + Links: []*proto.Link{ + { + Href: "https://github.com/compliance-framework/plugin-apt-versions", + Rel: internal.StringAddressed("reference"), + Text: internal.StringAddressed("The Continuous Compliance Framework' Local APT Installed Packages Plugin"), + }, + }, + Props: nil, + }, + } + components := []*proto.ComponentReference{ + { + Identifier: "common-components/package", + }, + } - response := runner.NewCallableAssessmentResult() - response.Title = fmt.Sprintf("Package Version compliance for host: %s", hostname) + activities = append(activities, &proto.Activity{ + Title: "Compile Results", + Description: "Using the output from policy execution, compile the resulting output to Observations and Findings, marking any violations, risks, and other OSCAL-familiar data", + Steps: steps, + }) - for _, policyResult := range results { + for _, result := range results { + // Observation UUID should differ for each individual subject, but remain consistent when validating the same policy for the same subject. + // This acts as an identifier to show the history of an observation. + observationUUIDMap := internal.MergeMaps(subjectAttributeMap, map[string]string{ + "policy": result.Policy.Package.PurePackage(), + "policy_file": result.Policy.File, + "policy_path": policyPath, + }) + observationUUID, err := sdk.SeededUUID(observationUUIDMap) + if err != nil { + accumulatedErrors = errors.Join(accumulatedErrors, err) + // We've been unable to do much here, but let's try the next one regardless. + continue + } - // There are no violations reported from the policies. - // We'll send the observation back to the agent - if len(policyResult.Violations) == 0 { - response.AddObservation(&proto.Observation{ - Uuid: uuid.New().String(), - Title: protolang.String("The plugin succeeded. No compliance issues to report."), - Description: "The plugin policies did not return any violations. The configuration is in compliance with policies.", - Collected: timestamppb.New(time.Now()), - Expires: timestamppb.New(time.Now().AddDate(0, 1, 0)), // Add one month for the expiration - RelevantEvidence: []*proto.RelevantEvidence{ - { - Description: fmt.Sprintf("Policy %v was evaluated, and no violations were found on machineId: %s", policyResult.Policy.Package.PurePackage(), "ARN:12345"), - }, - }, - }) + // Finding UUID should differ for each individual subject, but remain consistent when validating the same policy for the same subject. + // This acts as an identifier to show the history of a finding. + findingUUIDMap := internal.MergeMaps(subjectAttributeMap, map[string]string{ + "policy": result.Policy.Package.PurePackage(), + "policy_file": result.Policy.File, + "policy_path": policyPath, + }) + findingUUID, err := sdk.SeededUUID(findingUUIDMap) + if err != nil { + accumulatedErrors = errors.Join(accumulatedErrors, err) + // We've been unable to do much here, but let's try the next one regardless. + continue + } - response.AddFinding(&proto.Finding{ - Title: fmt.Sprintf("No violations found on %s", policyResult.Policy.Package.PurePackage()), - Description: fmt.Sprintf("No violations found on the %s policy within the Apt Versions Plugin.", policyResult.Policy.Package.PurePackage()), - Target: &proto.FindingTarget{ - Status: &proto.ObjectiveStatus{ - State: runner.FindingTargetStatusSatisfied, - }, + observation := proto.Observation{ + ID: uuid.New().String(), + UUID: observationUUID.String(), + Collected: timestamppb.New(startTime), + Expires: timestamppb.New(startTime.Add(24 * time.Hour)), + Origins: []*proto.Origin{{Actors: actors}}, + Subjects: subjects, + Activities: activities, + Components: components, + RelevantEvidence: []*proto.RelevantEvidence{ + { + Description: fmt.Sprintf("Policy %v was executed against the local APT installed packages, using the Local APT Packages Compliance Plugin", result.Policy.Package.PurePackage()), }, - }) + }, } - // There are violations in the policy checks. - // We'll send these observations back to the agent - if len(policyResult.Violations) > 0 { - observation := &proto.Observation{ - Uuid: uuid.New().String(), - Title: protolang.String(fmt.Sprintf("The plugin found violations for policy %s on machineId: %s", policyResult.Policy.Package.PurePackage(), "ARN:12345")), - Description: fmt.Sprintf("Observed %d violation(s) for policy %s within the Plugin on machineId: %s.", len(policyResult.Violations), policyResult.Policy.Package.PurePackage(), "ARN:12345"), - Collected: timestamppb.New(time.Now()), - Expires: timestamppb.New(time.Now().AddDate(0, 1, 0)), // Add one month for the expiration - RelevantEvidence: []*proto.RelevantEvidence{ - { - Description: fmt.Sprintf("Policy %v was evaluated, and %d violations were found on machineId: %s", policyResult.Policy.Package.PurePackage(), len(policyResult.Violations), "ARN:12345"), - }, + newFinding := func() *proto.Finding { + return &proto.Finding{ + ID: uuid.New().String(), + UUID: findingUUID.String(), + Collected: timestamppb.New(time.Now()), + Labels: map[string]string{ + "type": "package", + "host": hostname, + "_policy": result.Policy.Package.PurePackage(), + "_policy_path": result.Policy.File, }, + Origins: []*proto.Origin{{Actors: actors}}, + Subjects: subjects, + Components: components, + RelatedObservations: []*proto.RelatedObservation{{ObservationUUID: observation.ID}}, + Controls: nil, } - response.AddObservation(observation) - - for _, violation := range policyResult.Violations { - response.AddFinding(&proto.Finding{ - Uuid: uuid.New().String(), - Title: violation.Title, - Description: violation.Description, - Remarks: protolang.String(violation.Remarks), - RelatedObservations: []*proto.RelatedObservation{ - { - ObservationUuid: observation.Uuid, - }, - }, - Target: &proto.FindingTarget{ - Status: &proto.ObjectiveStatus{ - State: runner.FindingTargetStatusNotSatisfied, - }, - }, - }) - } - } - } - endTime := time.Now() - response.Start = timestamppb.New(startTime) - response.End = timestamppb.New(endTime) - response.AddLogEntry(&proto.AssessmentLog_Entry{ - Title: protolang.String("Plugin checks completed"), - Start: timestamppb.New(startTime), - End: timestamppb.New(endTime), - }) + if len(result.Violations) == 0 { + observation.Title = internal.StringAddressed(fmt.Sprintf("Local APT package validation on %s passed.", result.Policy.Package.PurePackage())) + observation.Description = fmt.Sprintf("Observed no violations on the %s policy within the Local APT Installed Package Compliance Plugin.", result.Policy.Package.PurePackage()) + observations = append(observations, &observation) - streamId, err := sdk.SeededUUID(map[string]string{ - "type": "apt-versions", - "_hostname": hostname, - "_policy": policyPath, - }) - if err != nil { - return nil, err - } - if err := apiHelper.CreateResult(streamId.String(), map[string]string{ - "type": "apt-versions", - "_hostname": hostname, - "_policy": policyPath, - }, policyPath, response.Result()); err != nil { - l.logger.Error("Failed to add assessment result", "error", err) - return &proto.EvalResponse{ - Status: proto.ExecutionStatus_FAILURE, - }, err + finding := newFinding() + finding.Title = fmt.Sprintf("No violations found on %s", result.Policy.Package.PurePackage()) + finding.Description = fmt.Sprintf("No violations found on the %s policy within the Local APT Packages Compliance Plugin.", result.Policy.Package.PurePackage()) + finding.Status = &proto.FindingStatus{ + State: runner.FindingTargetStatusSatisfied, + } + findings = append(findings, finding) + } else { + observation.Title = internal.StringAddressed(fmt.Sprintf("Validation on %s failed.", result.Policy.Package.PurePackage())) + observation.Description = fmt.Sprintf("Observed %d violation(s) on the %s policy within the Local APT Packaged Compliance Plugin.", len(result.Violations), result.Policy.Package.PurePackage()) + observations = append(observations, &observation) + + for _, violation := range result.Violations { + finding := newFinding() + finding.Title = violation.Title + finding.Description = violation.Description + finding.Remarks = internal.StringAddressed(violation.Remarks) + finding.Status = &proto.FindingStatus{ + State: runner.FindingTargetStatusNotSatisfied, + } + findings = append(findings, finding) + } + } } } - return &proto.EvalResponse{ - Status: proto.ExecutionStatus_SUCCESS, - }, nil + return observations, findings, nil } func main() { From e31a70395891112c8968a71f0027895096b0b57c Mon Sep 17 00:00:00 2001 From: Steven Trotter Date: Tue, 25 Mar 2025 12:17:52 +0000 Subject: [PATCH 2/4] Reimplemented the previous sed logic into Go and added lots of testing to check it's behaving as it used to do before (with a couple of minor fixes too) --- go.mod | 52 +- go.sum | 158 ++- internal/packages.go | 96 +- internal/packages_test.go | 1916 ++++--------------------------------- 4 files changed, 333 insertions(+), 1889 deletions(-) diff --git a/go.mod b/go.mod index 530a8d2..3904599 100644 --- a/go.mod +++ b/go.mod @@ -1,22 +1,25 @@ module github.com/compliance-framework/plugin-apt-versions -go 1.23.2 +go 1.23.6 + +toolchain go1.24.1 require ( github.com/compliance-framework/agent v0.1.1 github.com/compliance-framework/configuration-service v0.1.1 github.com/google/uuid v1.6.0 - github.com/hashicorp/go-hclog v1.5.0 - github.com/hashicorp/go-plugin v1.6.2 - google.golang.org/protobuf v1.35.2 + github.com/hashicorp/go-hclog v1.6.3 + github.com/hashicorp/go-plugin v1.6.3 + github.com/stretchr/testify v1.10.0 + google.golang.org/protobuf v1.36.6 ) require ( - github.com/OneOfOne/xxhash v1.2.8 // indirect - github.com/agnivade/levenshtein v1.2.0 // indirect + github.com/agnivade/levenshtein v1.2.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/fatih/color v1.15.0 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/fatih/color v1.18.0 // indirect github.com/go-ini/ini v1.67.0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect @@ -24,32 +27,33 @@ require ( github.com/gobwas/glob v0.2.3 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/gorilla/mux v1.8.1 // indirect - github.com/hashicorp/yamux v0.1.1 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect + github.com/hashicorp/yamux v0.1.2 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/oklog/run v1.0.0 // indirect - github.com/open-policy-agent/opa v1.0.0 // indirect - github.com/prometheus/client_golang v1.20.5 // indirect + github.com/oklog/run v1.1.0 // indirect + github.com/open-policy-agent/opa v1.2.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/prometheus/client_golang v1.21.1 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.57.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect + github.com/prometheus/common v0.63.0 // indirect + github.com/prometheus/procfs v0.16.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/tchap/go-patricia/v2 v2.3.1 // indirect + github.com/tchap/go-patricia/v2 v2.3.2 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/yashtewari/glob-intersection v0.2.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/otel v1.33.0 // indirect - go.opentelemetry.io/otel/metric v1.33.0 // indirect - go.opentelemetry.io/otel/sdk v1.33.0 // indirect - go.opentelemetry.io/otel/trace v1.33.0 // indirect - golang.org/x/net v0.34.0 // indirect - golang.org/x/sys v0.29.0 // indirect - golang.org/x/text v0.21.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 // indirect - google.golang.org/grpc v1.69.2 // indirect + go.opentelemetry.io/otel v1.35.0 // indirect + go.opentelemetry.io/otel/metric v1.35.0 // indirect + go.opentelemetry.io/otel/sdk v1.35.0 // indirect + go.opentelemetry.io/otel/trace v1.35.0 // indirect + golang.org/x/net v0.37.0 // indirect + golang.org/x/sys v0.31.0 // indirect + golang.org/x/text v0.23.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 // indirect + google.golang.org/grpc v1.71.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.4.0 // indirect ) diff --git a/go.sum b/go.sum index 375f723..2a0594b 100644 --- a/go.sum +++ b/go.sum @@ -6,14 +6,12 @@ github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= -github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/agnivade/levenshtein v1.2.0 h1:U9L4IOT0Y3i0TIlUIDJ7rVUziKi/zPbrJGaFrtYH3SY= -github.com/agnivade/levenshtein v1.2.0/go.mod h1:QVVI16kDrtSuwcpd0p1+xMC6Z/VfhtCyDIjcwga4/DU= +github.com/agnivade/levenshtein v1.2.1 h1:EHBY3UOn1gwdy/VbFwgo4cxecRznFk7fKWN1KOX7eoM= +github.com/agnivade/levenshtein v1.2.1/go.mod h1:QVVI16kDrtSuwcpd0p1+xMC6Z/VfhtCyDIjcwga4/DU= github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q= github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0/go.mod h1:t2tdKJDJF9BV14lnkjHmOQgcvEKgtqs5a1N3LNdJhGE= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -24,16 +22,14 @@ github.com/bytecodealliance/wasmtime-go/v3 v3.0.2 h1:3uZCA/BLTIu+DqCfguByNMJa2HV github.com/bytecodealliance/wasmtime-go/v3 v3.0.2/go.mod h1:RnUjnIXxEJcL6BgCvNyzCCRzZcxCgsZCi+RNlvYor5Q= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/compliance-framework/agent v0.1.1 h1:uQ4idgwOMqrgM0JeYCtBv20HZoMymsH2nownrkl457w= github.com/compliance-framework/agent v0.1.1/go.mod h1:jy/26xgTx9+at64ipTV1oo80pTVyhtlZaSMViQ3cVVQ= github.com/compliance-framework/configuration-service v0.1.1 h1:p/r5vq1FLe0S8j/kLhth4Dvda8xajVPOBjnO9QauMjM= github.com/compliance-framework/configuration-service v0.1.1/go.mod h1:tLKJKXbQbY9Pg/e3BJtJVkqxaejXJMHoE8Yp0NW4lDE= -github.com/containerd/containerd v1.7.24 h1:zxszGrGjrra1yYJW/6rhm9cJ1ZQ8rkKBR48brqsa7nA= -github.com/containerd/containerd v1.7.24/go.mod h1:7QUzfURqZWCZV7RLNEn1XjUCQLEf0bkaK4GjUaZehxw= +github.com/containerd/containerd v1.7.26 h1:3cs8K2RHlMQaPifLqgRyI4VBkoldNdEw62cb7qQga7k= +github.com/containerd/containerd v1.7.26/go.mod h1:m4JU0E+h0ebbo9yXD7Hyt+sWnc8tChm7MudCjj4jRvQ= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= @@ -46,10 +42,10 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/defenseunicorns/go-oscal v0.6.2 h1:oLkMAJYVMq73Rm+9efcyaKq5SLMditjB6wv7o3XXpq8= github.com/defenseunicorns/go-oscal v0.6.2/go.mod h1:UHp2yK9ty2mYJDun7oNhbstCq6SAAwP4YGbw9n7uG6o= -github.com/dgraph-io/badger/v3 v3.2103.5 h1:ylPa6qzbjYRQMU6jokoj4wzcaweHylt//CH0AKt0akg= -github.com/dgraph-io/badger/v3 v3.2103.5/go.mod h1:4MPiseMeDQ3FNCYwRbbcBOGJLf5jsE0PPFzRiKjtcdw= -github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= -github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= +github.com/dgraph-io/badger/v4 v4.5.1 h1:7DCIXrQjo1LKmM96YD+hLVJ2EEsyyoWxJfpdd56HLps= +github.com/dgraph-io/badger/v4 v4.5.1/go.mod h1:qn3Be0j3TfV4kPbVoK0arXCD1/nr1ftth6sbL5jxdoA= +github.com/dgraph-io/ristretto/v2 v2.1.0 h1:59LjpOJLNDULHh8MC4UaegN52lC4JnO2dITsie/Pa8I= +github.com/dgraph-io/ristretto/v2 v2.1.0/go.mod h1:uejeqfYXpUomfse0+lO+13ATz4TypQYLJZzBSAemuB4= github.com/dgryski/trifles v0.0.0-20230903005119-f50d829f2e54 h1:SG7nF6SRlWhcT7cNTs5R6Hk4V2lcmLz2NsG2VnInyNo= github.com/dgryski/trifles v0.0.0-20230903005119-f50d829f2e54/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= @@ -63,8 +59,8 @@ github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDD github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= -github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= @@ -104,31 +100,29 @@ github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY= -github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/flatbuffers v2.0.8+incompatible h1:ivUb1cGomAB101ZM1T0nOiWz9pSrTMoa9+EiY7igmkM= -github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/flatbuffers v24.12.23+incompatible h1:ubBKR94NR4pXUCY/MUsRVzd9umNW7ht7EG9hHfS9FX8= +github.com/google/flatbuffers v24.12.23+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0 h1:TmHmbvxPmaegwhDubVz0lICL0J5Ka2vwTzhoePEXsGE= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0/go.mod h1:qztMSjm835F2bXf+5HKAPIS5qsmQDqZna/PgVt4rWtI= -github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= -github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= -github.com/hashicorp/go-plugin v1.6.2 h1:zdGAEd0V1lCaU0u+MxWQhtSDQmahpkwOun8U8EiRVog= -github.com/hashicorp/go-plugin v1.6.2/go.mod h1:CkgLQ5CZqNmdL9U9JzM532t8ZiYQ35+pj3b1FD37R0Q= -github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= -github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1 h1:VNqngBF40hVlDloBruUehVYC3ArSgIyScOAyMRqBxRg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1/go.mod h1:RBRO7fro65R6tjKzYgLAFo0t1QEXY1Dp+i/bvpRiqiQ= +github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= +github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg= +github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= +github.com/hashicorp/yamux v0.1.2 h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8= +github.com/hashicorp/yamux v0.1.2/go.mod h1:C+zze2n6e/7wshOZep2A70/aQU6QBRWJO/G6FT1wIns= github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= @@ -153,11 +147,10 @@ github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0 github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM= @@ -180,10 +173,10 @@ github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/open-policy-agent/opa v1.0.0 h1:fZsEwxg1knpPvUn0YDJuJZBcbVg4G3zKpWa3+CnYK+I= -github.com/open-policy-agent/opa v1.0.0/go.mod h1:+JyoH12I0+zqyC1iX7a2tmoQlipwAEGvOhVJMhmy+rM= +github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= +github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= +github.com/open-policy-agent/opa v1.2.0 h1:88NDVCM0of1eO6Z4AFeL3utTEtMuwloFmWWU7dRV1z0= +github.com/open-policy-agent/opa v1.2.0/go.mod h1:30euUmOvuBoebRCcJ7DMF42bRBOPznvt0ACUMYDUGVY= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= @@ -195,14 +188,14 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= -github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= +github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.57.0 h1:Ro/rKjwdq9mZn1K5QPctzh+MA4Lp0BuYk5ZZEVhoNcY= -github.com/prometheus/common v0.57.0/go.mod h1:7uRPFSUTbfZWsJ7MHY56sqt7hLQu3bxXHDnNhl8E9qI= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= +github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= +github.com/prometheus/procfs v0.16.0 h1:xh6oHhKwnOJKMYiYBDWmkHqQPyiY40sny36Cmx2bbsM= +github.com/prometheus/procfs v0.16.0/go.mod h1:8veyXUu3nGP7oaCxhX6yeaM5u4stL2FeMXnCqhDthZg= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= @@ -224,8 +217,8 @@ github.com/swaggo/files/v2 v2.0.0 h1:hmAt8Dkynw7Ssz46F6pn8ok6YmGZqHSVLZ+HQM7i0kw github.com/swaggo/files/v2 v2.0.0/go.mod h1:24kk2Y9NYEJ5lHuCra6iVwkMjIekMCaFq/0JQj66kyM= github.com/swaggo/swag v1.16.4 h1:clWJtd9LStiG3VeijiCfOVODP6VpHtKdQy9ELFG3s1A= github.com/swaggo/swag v1.16.4/go.mod h1:VBsHJRsDvfYvqoiMKnsdwhNV9LEMHgEDZcyVYX0sxPg= -github.com/tchap/go-patricia/v2 v2.3.1 h1:6rQp39lgIYZ+MHmdEq4xzuk1t7OdC35z/xm0BGhTkes= -github.com/tchap/go-patricia/v2 v2.3.1/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k= +github.com/tchap/go-patricia/v2 v2.3.2 h1:xTHFutuitO2zqKAQ5rCROYgUb7Or/+IC3fts9/Yc7nM= +github.com/tchap/go-patricia/v2 v2.3.2/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k= github.com/testcontainers/testcontainers-go v0.35.0 h1:uADsZpTKFAtp8SLK+hMwSaa+X+JiERHtd4sQAFmXeMo= github.com/testcontainers/testcontainers-go v0.35.0/go.mod h1:oEVBj5zrfJTrgjwONs1SsRbnBtH9OKl+IGl3UMcr2B4= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= @@ -258,60 +251,61 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 h1:yd02MEjBdJkG3uabWP9apV+OuWRIXGDuJEUJbOHmCFU= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod h1:umTcuxiv1n/s/S6/c2AT/g2CQ7u5C59sHDNmfSwgz7Q= -go.opentelemetry.io/otel v1.33.0 h1:/FerN9bax5LoK51X/sI0SVYrjSE0/yUL7DpxW4K3FWw= -go.opentelemetry.io/otel v1.33.0/go.mod h1:SUUkR6csvUQl+yjReHu5uM3EtVV7MBm5FHKRlNx4I8I= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 h1:Vh5HayB/0HHfOQA7Ctx69E/Y/DcQSMPpKANYVMQ7fBA= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0/go.mod h1:cpgtDBaqD/6ok/UG0jT15/uKjAY8mRA53diogHBg3UI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0 h1:5pojmb1U1AogINhN3SurB+zm/nIcusopeBNp42f45QM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0/go.mod h1:57gTHJSE5S1tqg+EKsLPlTWhpHMsWlVmer+LA926XiA= -go.opentelemetry.io/otel/metric v1.33.0 h1:r+JOocAyeRVXD8lZpjdQjzMadVZp2M4WmQ+5WtEnklQ= -go.opentelemetry.io/otel/metric v1.33.0/go.mod h1:L9+Fyctbp6HFTddIxClbQkjtubW6O9QS3Ann/M82u6M= -go.opentelemetry.io/otel/sdk v1.33.0 h1:iax7M131HuAm9QkZotNHEfstof92xM+N8sr3uHXc2IM= -go.opentelemetry.io/otel/sdk v1.33.0/go.mod h1:A1Q5oi7/9XaMlIWzPSxLRWOI8nG3FnzHJNbiENQuihM= -go.opentelemetry.io/otel/sdk/metric v1.31.0 h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc= -go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8= -go.opentelemetry.io/otel/trace v1.33.0 h1:cCJuF7LRjUFso9LPnEAHJDB2pqzp+hbO8eu1qqW2d/s= -go.opentelemetry.io/otel/trace v1.33.0/go.mod h1:uIcdVUZMpTAmz0tI1z04GoVSezK37CbGV4fr1f2nBck= -go.opentelemetry.io/proto/otlp v1.4.0 h1:TA9WRvW6zMwP+Ssb6fLoUIuirti1gGbP28GcKG1jgeg= -go.opentelemetry.io/proto/otlp v1.4.0/go.mod h1:PPBWZIP98o2ElSqI35IHfu7hIhSwvc5N38Jw8pXuGFY= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 h1:CV7UdSGJt/Ao6Gp4CXckLxVRRsRgDHoI8XjbL3PDl8s= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0/go.mod h1:FRmFuRJfag1IZ2dPkHnEoSFVgTVPUd2qf5Vi69hLb8I= +go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= +go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 h1:OeNbIYk/2C15ckl7glBlOBp5+WlYsOElzTNmiPW/x60= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0/go.mod h1:7Bept48yIeqxP2OZ9/AqIpYS94h2or0aB4FypJTc8ZM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE= +go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= +go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= +go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= +go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= +go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= +go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= +go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= +go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ= go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= -golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= +golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= -golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= +golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= -google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 h1:CkkIfIt50+lT6NHAVoRYEyAvQGFM7xEwXUUywFvEb3Q= -google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576/go.mod h1:1R3kvZ1dtP3+4p4d3G8uJ8rFk/fWlScl38vanWACI08= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 h1:8ZmaLZE4XWrtU3MyClkYqqtl6Oegr3235h7jxsDyqCY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= -google.golang.org/grpc v1.69.2 h1:U3S9QEtbXC0bYNvRtcoklF3xGtLViumSYxWykJS+7AU= -google.golang.org/grpc v1.69.2/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4= -google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= -google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f h1:gap6+3Gk41EItBuyi4XX/bp4oqJ3UwuIMl25yGinuAA= +google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:Ic02D47M+zbarjYYUlK57y316f2MoN0gjAwI3f2S95o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 h1:e0AIkUUhxyBKh6ssZNrAMeqhA7RKUj42346d1y02i2g= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= +google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/internal/packages.go b/internal/packages.go index f16a48c..08abed0 100644 --- a/internal/packages.go +++ b/internal/packages.go @@ -34,21 +34,22 @@ func GetInstalledPackages(logger hclog.Logger) (map[string]any, []*proto.Step, e } // Parse the output into a map - packages := getPackages(dpkgStdout.String()) + packages := getPackages(logger, dpkgStdout.String()) return packages, steps, nil } -func getPackages(output string) map[string]any { +func getPackages(logger hclog.Logger, packageData string) map[string]any { packages := make(map[string]any) - for _, line := range strings.Split(output, "\n") { + for _, line := range strings.Split(packageData, "\n") { if len(line) == 0 { continue } parts := strings.Split(line, " ") if len(parts) != 2 { + logger.Warn(fmt.Sprintf("unexpected number of parts in package line, cannot process: %s", line)) continue } @@ -62,50 +63,51 @@ func getPackages(output string) map[string]any { } func getVersion(version string) string { - // // If the version contains a colon, we'll split the string and return the version from the second part - // if colonIndex := strings.Index(version, ":"); colonIndex != -1 { - // return version[colonIndex+1:] - // } - - // // If we have any of the characters, '-', '+', '~', we'll split the string and return the version from the first part - // if dashIndex := strings.IndexAny(version, "-+~"); dashIndex != -1 { - // version = version[:dashIndex] - // } - - // // Split the version into parts - // parts := strings.Split(version, ".") - - // // Check each part it just a number, if it's not we'll split the part and only keep the number - // for i, part := range parts { - // // If the part contains a string after a number we skip from the number onwards - // for j, char := range part { - // if char >= '0' && char <= '9' { - // continue - // } - // parts[i] = part[:j] - // break - // } - // } - - // // Check each part for leading zeros and remove them - // for i, part := range parts { - // for j, char := range part { - // if char != '0' { - // parts[i] = part[j:] - // break - // } - // } - // } - - // // Make sure we have exactly 3 parts separated by a dot, if we don't we append 0 to the version, if more we skip the rest - // if len(parts) < 3 { - // for i := len(parts); i < 3; i++ { - // version += ".0" - // } - // } - // if len(parts) > 3 { - // version = strings.Join(parts[:3], ".") - // } + // If the version contains a colon, we'll split the string and return the version from the second part + if colonIndex := strings.Index(version, ":"); colonIndex != -1 { + version = version[colonIndex+1:] + } + + // If we have any of the characters, '-', '+', '~', we'll split the string and return the version from the first part + if dashIndex := strings.IndexAny(version, "-+~"); dashIndex != -1 { + version = version[:dashIndex] + } + + // Split the version into parts + parts := strings.Split(version, ".") + + // Check each part is just a number, if it's not we'll split the part and only keep the number + for i, part := range parts { + // If the part contains a string after a number we skip from the number onwards + for j, char := range part { + if char >= '0' && char <= '9' { + continue + } + parts[i] = part[:j] + break + } + } + + // Check each part for leading zeros and remove them + for i, part := range parts { + for j, char := range part { + if char != '0' { + parts[i] = part[j:] + break + } + } + } + + // Make sure we have exactly 3 parts separated by a dot, if we don't we append 0 to the version, if more we skip the rest + if len(parts) < 3 { + for i := len(parts); i < 3; i++ { + parts = append(parts, "0") + } + } else if len(parts) > 3 { + parts = parts[:3] + } + + version = strings.Join(parts, ".") return version } diff --git a/internal/packages_test.go b/internal/packages_test.go index e727acd..5e84be7 100644 --- a/internal/packages_test.go +++ b/internal/packages_test.go @@ -1,1749 +1,193 @@ package internal import ( + "strings" "testing" + + "github.com/hashicorp/go-hclog" + "github.com/stretchr/testify/assert" ) func TestGetSimplePackage(t *testing.T) { - packages := getPackages("openssh-server 1.2.3\n") + logger := hclog.New(&hclog.LoggerOptions{ + Level: hclog.Error, + JSONFormat: true, + }) + packages := getPackages(logger, "mycoolpackage 1.2.3\n") - version := packages["openssh-server"].(string) - if version != "1.2.3" { - t.Errorf("Version not correctly processed") - } + version := packages["mycoolpackage"].(string) + assert.Equal(t, version, "1.2.3") } -func TestGetSimplePackage(t *testing.T) { - packages := getPackages("openssh-server 1.2.3\n") +func TestGetPackageWithEpochVersion(t *testing.T) { + logger := hclog.New(&hclog.LoggerOptions{ + Level: hclog.Error, + JSONFormat: true, + }) + packages := getPackages(logger, "mycoolpackage 2:1.2.3\n") - version := packages["openssh-server"].(string) - if version != "1.2.3" { - t.Errorf("Version not correctly processed") - } + version := packages["mycoolpackage"].(string) + assert.Equal(t, version, "1.2.3") + + packages = getPackages(logger, "mycoolpackage 24:1.2\n") + + version = packages["mycoolpackage"].(string) + assert.Equal(t, version, "1.2.0") } -// accountsservice:23.13.9-2ubuntu6 -// acl:2.3.2-1build1.1 -// adduser:3.137ubuntu1 -// adwaita-icon-theme:46.0-1 -// alsa-base:1.0.25+dfsg-0ubuntu7 -// alsa-topology-conf:1.2.5.1-2 -// alsa-ucm-conf:1.2.10-1ubuntu5.4 -// alsa-utils:1.2.9-1ubuntu5 -// amd64-microcode:3.20231019.1ubuntu2.1 -// anacron:2.3-39ubuntu2 -// apg:2.2.3.dfsg.1-5build3 -// apparmor:4.0.1really4.0.1-0ubuntu0.24.04.3 -// apport:2.28.1-0ubuntu3.5 -// apport-core-dump-handler:2.28.1-0ubuntu3.5 -// apport-gtk:2.28.1-0ubuntu3.5 -// apport-symptoms:0.25 -// appstream:1.0.2-1build6 -// apt:2.7.14build2 -// apt-config-icons:1.0.2-1build6 -// apt-config-icons-hidpi:1.0.2-1build6 -// apt-transport-https:2.7.14build2 -// apt-utils:2.7.14build2 -// aptdaemon:1.1.1+bzr982-0ubuntu44 -// aptdaemon-data:1.1.1+bzr982-0ubuntu44 -// aspell:0.60.8.1-1build1 -// aspell-en:2020.12.07-0-1 -// at-spi2-common:2.52.0-1build1 -// at-spi2-core:2.52.0-1build1 -// avahi-daemon:0.8-13ubuntu6 -// baobab:46.0-1build1 -// base-files:13ubuntu10.2 -// base-passwd:3.6.3build1 -// bash:5.2.21-2ubuntu4 -// bash-completion:1:2.11-8 -// bc:1.07.1-3ubuntu4 -// binaryen:108-1 -// bind9-dnsutils:1:9.18.30-0ubuntu0.24.04.2 -// bind9-host:1:9.18.30-0ubuntu0.24.04.2 -// bind9-libs:1:9.18.30-0ubuntu0.24.04.2 -// binutils:2.42-4ubuntu2.4 -// binutils-common:2.42-4ubuntu2.4 -// binutils-x86-64-linux-gnu:2.42-4ubuntu2.4 -// bison:2:3.8.2+dfsg-1build2 -// bluez:5.72-0ubuntu5.1 -// bluez-cups:5.72-0ubuntu5.1 -// bluez-obexd:5.72-0ubuntu5.1 -// bolt:0.9.7-1 -// bpfcc-tools:0.29.1+ds-1ubuntu7 -// bpftrace:0.20.2-1ubuntu4.3 -// brltty:6.6-4ubuntu5 -// bsdextrautils:2.39.3-9ubuntu6.2 -// bsdutils:1:2.39.3-9ubuntu6.2 -// bubblewrap:0.9.0-1ubuntu0.1 -// build-essential:12.10ubuntu1 -// busybox-initramfs:1:1.36.1-6ubuntu3.1 -// busybox-static:1:1.36.1-6ubuntu3.1 -// bzip2:1.0.8-5.1build0.1 -// bzip2-doc:1.0.8-5.1build0.1 -// ca-certificates:20240203 -// ca-certificates-java:20240118 -// cloud-guest-utils:0.33-1 -// cloud-init:24.4.1-0ubuntu0~24.04.1 -// cmake:3.28.3-1build7 -// cmake-data:3.28.3-1build7 -// colord:1.4.7-1build2 -// colord-data:1.4.7-1build2 -// command-not-found:23.04.0 -// console-setup:1.226ubuntu1 -// console-setup-linux:1.226ubuntu1 -// containerd.io:1.7.25-1 -// coreutils:9.4-3ubuntu6 -// cpio:2.15+dfsg-1ubuntu2 -// cpp:4:13.2.0-7ubuntu1 -// cpp-13:13.3.0-6ubuntu2~24.04 -// cpp-13-x86-64-linux-gnu:13.3.0-6ubuntu2~24.04 -// cpp-x86-64-linux-gnu:4:13.2.0-7ubuntu1 -// cracklib-runtime:2.9.6-5.1build2 -// cron:3.0pl1-184ubuntu2 -// cron-daemon-common:3.0pl1-184ubuntu2 -// cuda-cccl-12-6:12.6.77-1 -// cuda-command-line-tools-12-6:12.6.3-1 -// cuda-compiler-12-6:12.6.3-1 -// cuda-crt-12-6:12.6.85-1 -// cuda-cudart-12-6:12.6.77-1 -// cuda-cudart-dev-12-6:12.6.77-1 -// cuda-cuobjdump-12-6:12.6.77-1 -// cuda-cupti-12-6:12.6.80-1 -// cuda-cupti-dev-12-6:12.6.80-1 -// cuda-cuxxfilt-12-6:12.6.77-1 -// cuda-documentation-12-6:12.6.77-1 -// cuda-driver-dev-12-6:12.6.77-1 -// cuda-gdb-12-6:12.6.77-1 -// cuda-keyring:1.1-1 -// cuda-libraries-12-6:12.6.3-1 -// cuda-libraries-dev-12-6:12.6.3-1 -// cuda-nsight-12-6:12.6.77-1 -// cuda-nsight-compute-12-6:12.6.3-1 -// cuda-nsight-systems-12-6:12.6.3-1 -// cuda-nvcc-12-6:12.6.85-1 -// cuda-nvdisasm-12-6:12.6.77-1 -// cuda-nvml-dev-12-6:12.6.77-1 -// cuda-nvprof-12-6:12.6.80-1 -// cuda-nvprune-12-6:12.6.77-1 -// cuda-nvrtc-12-6:12.6.85-1 -// cuda-nvrtc-dev-12-6:12.6.85-1 -// cuda-nvtx-12-6:12.6.77-1 -// cuda-nvvm-12-6:12.6.85-1 -// cuda-nvvp-12-6:12.6.80-1 -// cuda-opencl-12-6:12.6.77-1 -// cuda-opencl-dev-12-6:12.6.77-1 -// cuda-profiler-api-12-6:12.6.77-1 -// cuda-sanitizer-12-6:12.6.77-1 -// cuda-toolkit-12-6:12.6.3-1 -// cuda-toolkit-12-6-config-common:12.6.77-1 -// cuda-toolkit-12-config-common:12.8.90-1 -// cuda-toolkit-config-common:12.8.90-1 -// cuda-tools-12-6:12.6.3-1 -// cuda-visual-tools-12-6:12.6.3-1 -// cups:2.4.7-1.2ubuntu7.3 -// cups-browsed:2.0.0-0ubuntu10.3 -// cups-bsd:2.4.7-1.2ubuntu7.3 -// cups-client:2.4.7-1.2ubuntu7.3 -// cups-common:2.4.7-1.2ubuntu7.3 -// cups-core-drivers:2.4.7-1.2ubuntu7.3 -// cups-daemon:2.4.7-1.2ubuntu7.3 -// cups-filters:2.0.0-0ubuntu4 -// cups-filters-core-drivers:2.0.0-0ubuntu4 -// cups-ipp-utils:2.4.7-1.2ubuntu7.3 -// cups-pk-helper:0.2.6-1ubuntu8 -// cups-ppdc:2.4.7-1.2ubuntu7.3 -// cups-server-common:2.4.7-1.2ubuntu7.3 -// curl:8.5.0-2ubuntu10.6 -// dash:0.5.12-6ubuntu5 -// dbus:1.14.10-4ubuntu4.1 -// dbus-bin:1.14.10-4ubuntu4.1 -// dbus-daemon:1.14.10-4ubuntu4.1 -// dbus-session-bus-common:1.14.10-4ubuntu4.1 -// dbus-system-bus-common:1.14.10-4ubuntu4.1 -// dbus-user-session:1.14.10-4ubuntu4.1 -// dc:1.07.1-3ubuntu4 -// dconf-cli:0.40.0-4build2 -// dconf-gsettings-backend:0.40.0-4build2 -// dconf-service:0.40.0-4build2 -// debconf:1.5.86ubuntu1 -// debconf-i18n:1.5.86ubuntu1 -// debianutils:5.17build1 -// default-jre:2:1.21-75+exp1 -// default-jre-headless:2:1.21-75+exp1 -// desktop-file-utils:0.27-2build1 -// dhcpcd-base:1:10.0.6-1ubuntu3.1 -// dictionaries-common:1.29.7 -// diffutils:1:3.10-1build1 -// dirmngr:2.4.4-2ubuntu17 -// distro-info:1.7build1 -// distro-info-data:0.60ubuntu0.2 -// dkms:3.0.11-1ubuntu13 -// dmidecode:3.5-3ubuntu0.1 -// dmsetup:2:1.02.185-3ubuntu3.2 -// dmz-cursor-theme:0.4.5ubuntu1 -// dns-root-data:2024071801~ubuntu0.24.04.1 -// dnsmasq-base:2.90-2build2 -// docbook-xml:4.5-12 -// docker-buildx-plugin:0.22.0-1~ubuntu.24.04~noble -// docker-ce:5:28.0.2-1~ubuntu.24.04~noble -// docker-ce-cli:5:28.0.2-1~ubuntu.24.04~noble -// docker-ce-rootless-extras:5:28.0.2-1~ubuntu.24.04~noble -// docker-compose-plugin:2.34.0-1~ubuntu.24.04~noble -// dosfstools:4.2-1.1build1 -// dpkg:1.22.6ubuntu6.1 -// dpkg-dev:1.22.6ubuntu6.1 -// dracut-install:060+5-1ubuntu3.3 -// dvisvgm:3.2.1+ds-1build1 -// e2fsprogs:1.47.0-2.4~exp1ubuntu4.1 -// e2fsprogs-l10n:1.47.0-2.4~exp1ubuntu4.1 -// eatmydata:131-1ubuntu1 -// ed:1.20.1-1 -// efibootmgr:18-1build2 -// eject:2.39.3-9ubuntu6.2 -// emacsen-common:3.0.5 -// enchant-2:2.3.3-2build2 -// eog:45.3-1ubuntu2 -// espeak-ng-data:1.51+dfsg-12build1 -// ethtool:1:6.7-1build1 -// evince:46.3.1-0ubuntu1 -// evince-common:46.3.1-0ubuntu1 -// evolution-data-server:3.52.3-0ubuntu1 -// evolution-data-server-common:3.52.3-0ubuntu1 -// fakeroot:1.33-1 -// fdisk:2.39.3-9ubuntu6.2 -// file:1:5.45-3build1 -// findutils:4.9.0-5build1 -// firefox:1:1snap1-0ubuntu5 -// firmware-sof-signed:2023.12.1-1ubuntu1.4 -// flex:2.6.4-8.2build1 -// fontconfig:2.15.0-1.1ubuntu2 -// fontconfig-config:2.15.0-1.1ubuntu2 -// fonts-dejavu-core:2.37-8 -// fonts-dejavu-extra:2.37-8 -// fonts-dejavu-mono:2.37-8 -// fonts-droid-fallback:1:6.0.1r16-1.1build1 -// fonts-liberation:1:2.1.5-3 -// fonts-liberation-sans-narrow:1:1.07.6-4 -// fonts-lmodern:2.005-1 -// fonts-noto-cjk:1:20230817+repack1-3 -// fonts-noto-color-emoji:2.047-0ubuntu0.24.04.1 -// fonts-noto-core:20201225-2 -// fonts-noto-mono:20201225-2 -// fonts-ubuntu:0.869+git20240321-0ubuntu1 -// fonts-urw-base35:20200910-8 -// foomatic-db-compressed-ppds:20230202-1 -// fprintd:1.94.3-1 -// friendly-recovery:0.2.42 -// ftp:20230507-2build3 -// fuse3:3.14.0-5build1 -// fwupd:1.9.28-0ubuntu1~24.04.1 -// fwupd-signed:1.52+1.4-1 -// g++:4:13.2.0-7ubuntu1 -// g++-13:13.3.0-6ubuntu2~24.04 -// g++-13-x86-64-linux-gnu:13.3.0-6ubuntu2~24.04 -// g++-x86-64-linux-gnu:4:13.2.0-7ubuntu1 -// gamemode:1.8.1-2build1 -// gamemode-daemon:1.8.1-2build1 -// gcc:4:13.2.0-7ubuntu1 -// gcc-13:13.3.0-6ubuntu2~24.04 -// gcc-13-base:13.3.0-6ubuntu2~24.04 -// gcc-13-x86-64-linux-gnu:13.3.0-6ubuntu2~24.04 -// gcc-14-base:14.2.0-4ubuntu2~24.04 -// gcc-x86-64-linux-gnu:4:13.2.0-7ubuntu1 -// gcr:3.41.2-1build3 -// gcr4:4.2.0-5 -// gdb:15.0.50.20240403-0ubuntu1 -// gdisk:1.0.10-1build1 -// gdm3:46.2-1ubuntu1~24.04.1 -// gds-tools-12-6:1.11.1.6-1 -// geoclue-2.0:2.7.0-3ubuntu7 -// geocode-glib-common:3.26.3-6build3 -// gettext-base:0.21-14ubuntu2 -// ghostscript:10.02.1~dfsg1-0ubuntu7.4 -// gir1.2-accountsservice-1.0:23.13.9-2ubuntu6 -// gir1.2-adw-1:1.5.0-1ubuntu2 -// gir1.2-atk-1.0:2.52.0-1build1 -// gir1.2-atspi-2.0:2.52.0-1build1 -// gir1.2-freedesktop:1.80.1-1 -// gir1.2-gck-2:4.2.0-5 -// gir1.2-gcr-4:4.2.0-5 -// gir1.2-gdesktopenums-3.0:46.1-0ubuntu1 -// gir1.2-gdkpixbuf-2.0:2.42.10+dfsg-3ubuntu3.1 -// gir1.2-gdm-1.0:46.2-1ubuntu1~24.04.1 -// gir1.2-geoclue-2.0:2.7.0-3ubuntu7 -// gir1.2-girepository-2.0:1.80.1-1 -// gir1.2-glib-2.0:2.80.0-6ubuntu3.2 -// gir1.2-gmenu-3.0:3.36.0-1.1ubuntu3 -// gir1.2-gnomeautoar-0.1:0.4.4-2build4 -// gir1.2-gnomebg-4.0:44.0-5build2 -// gir1.2-gnomebluetooth-3.0:46.0-1ubuntu1 -// gir1.2-gnomedesktop-3.0:44.0-5build2 -// gir1.2-gnomedesktop-4.0:44.0-5build2 -// gir1.2-graphene-1.0:1.10.8-3build2 -// gir1.2-gstreamer-1.0:1.24.2-1ubuntu0.1 -// gir1.2-gtk-3.0:3.24.41-4ubuntu1.2 -// gir1.2-gtk-4.0:4.14.2+ds-1ubuntu1 -// gir1.2-gweather-4.0:4.4.2-1build1 -// gir1.2-handy-1:1.8.3-1build2 -// gir1.2-harfbuzz-0.0:8.3.0-2build2 -// gir1.2-ibus-1.0:1.5.29-2 -// gir1.2-javascriptcoregtk-4.1:2.46.6-0ubuntu0.24.04.1 -// gir1.2-javascriptcoregtk-6.0:2.46.6-0ubuntu0.24.04.1 -// gir1.2-mutter-14:46.2-1ubuntu0.24.04.6 -// gir1.2-nm-1.0:1.46.0-1ubuntu2.2 -// gir1.2-nma4-1.0:1.10.6-3build2 -// gir1.2-notify-0.7:0.8.3-1build2 -// gir1.2-packagekitglib-1.0:1.2.8-2ubuntu1.2 -// gir1.2-pango-1.0:1.52.1+ds-1build1 -// gir1.2-peas-1.0:1.36.0-3build4 -// gir1.2-polkit-1.0:124-2ubuntu1.24.04.2 -// gir1.2-rsvg-2.0:2.58.0+dfsg-1build1 -// gir1.2-secret-1:0.21.4-1build3 -// gir1.2-snapd-2:1.64-0ubuntu5 -// gir1.2-soup-3.0:3.4.4-5ubuntu0.1 -// gir1.2-upowerglib-1.0:1.90.3-1 -// gir1.2-vte-2.91:0.76.0-1ubuntu0.1 -// gir1.2-webkit-6.0:2.46.6-0ubuntu0.24.04.1 -// gir1.2-webkit2-4.1:2.46.6-0ubuntu0.24.04.1 -// gir1.2-wnck-3.0:43.0-3build4 -// git:1:2.43.0-1ubuntu7.2 -// git-man:1:2.43.0-1ubuntu7.2 -// gjs:1.80.2-1build2 -// gkbd-capplet:3.28.1-1build3 -// glib-networking:2.80.0-1build1 -// glib-networking-common:2.80.0-1build1 -// glib-networking-services:2.80.0-1build1 -// gnome-accessibility-themes:3.28-2ubuntu5 -// gnome-bluetooth-3-common:46.0-1ubuntu1 -// gnome-bluetooth-sendto:46.0-1ubuntu1 -// gnome-calculator:1:46.1-1ubuntu1~24.04.1 -// gnome-characters:46.0-1build1 -// gnome-clocks:46.0-1build1 -// gnome-control-center:1:46.5-0ubuntu0.24.04.1 -// gnome-control-center-data:1:46.5-0ubuntu0.24.04.1 -// gnome-control-center-faces:1:46.5-0ubuntu0.24.04.1 -// gnome-desktop3-data:44.0-5build2 -// gnome-disk-utility:46.0-1ubuntu3 -// gnome-font-viewer:46.0-1build1 -// gnome-initial-setup:46.3-1ubuntu3~24.04.1 -// gnome-keyring:46.1-2build1 -// gnome-keyring-pkcs11:46.1-2build1 -// gnome-logs:45.0-1build1 -// gnome-menus:3.36.0-1.1ubuntu3 -// gnome-online-accounts:3.50.4-0ubuntu2 -// gnome-power-manager:43.0-2build2 -// gnome-remote-desktop:46.3-0ubuntu1 -// gnome-session-bin:46.0-1ubuntu4 -// gnome-session-canberra:0.30-10ubuntu10 -// gnome-session-common:46.0-1ubuntu4 -// gnome-settings-daemon:46.0-1ubuntu1 -// gnome-settings-daemon-common:46.0-1ubuntu1 -// gnome-shell:46.0-0ubuntu6~24.04.6 -// gnome-shell-common:46.0-0ubuntu6~24.04.6 -// gnome-shell-extension-appindicator:58-1ubuntu24.04.1 -// gnome-shell-extension-desktop-icons-ng:46+really47.0.9-1ubuntu1 -// gnome-shell-extension-ubuntu-dock:90ubuntu2 -// gnome-shell-extension-ubuntu-tiling-assistant:46-1ubuntu1.1 -// gnome-startup-applications:46.0-1ubuntu4 -// gnome-system-monitor:46.0-1build1 -// gnome-terminal:3.52.0-1ubuntu2 -// gnome-terminal-data:3.52.0-1ubuntu2 -// gnome-text-editor:46.3-0ubuntu2 -// gnome-themes-extra:3.28-2ubuntu5 -// gnome-themes-extra-data:3.28-2ubuntu5 -// gnome-user-docs:46.0-1ubuntu1 -// gnupg:2.4.4-2ubuntu17 -// gnupg-l10n:2.4.4-2ubuntu17 -// gnupg-utils:2.4.4-2ubuntu17 -// gpg:2.4.4-2ubuntu17 -// gpg-agent:2.4.4-2ubuntu17 -// gpg-wks-client:2.4.4-2ubuntu17 -// gpgconf:2.4.4-2ubuntu17 -// gpgsm:2.4.4-2ubuntu17 -// gpgv:2.4.4-2ubuntu17 -// grep:3.11-4build1 -// groff-base:1.23.0-3build2 -// grub-common:2.12-1ubuntu7.1 -// grub-efi-amd64:2.12-1ubuntu7.1 -// grub-efi-amd64-bin:2.12-1ubuntu7.1 -// grub-efi-amd64-signed:1.202.2+2.12-1ubuntu7.1 -// grub-gfxpayload-lists:0.7build2 -// grub-pc:2.12-1ubuntu7.1 -// grub-pc-bin:2.12-1ubuntu7.1 -// grub2-common:2.12-1ubuntu7.1 -// gsettings-desktop-schemas:46.1-0ubuntu1 -// gsettings-ubuntu-schemas:0.0.7+21.10.20210712-0ubuntu3 -// gstreamer1.0-alsa:1.24.2-1ubuntu0.2 -// gstreamer1.0-gl:1.24.2-1ubuntu0.2 -// gstreamer1.0-packagekit:1.2.8-2ubuntu1.2 -// gstreamer1.0-pipewire:1.0.5-1ubuntu3 -// gstreamer1.0-plugins-base:1.24.2-1ubuntu0.2 -// gstreamer1.0-plugins-base-apps:1.24.2-1ubuntu0.2 -// gstreamer1.0-plugins-good:1.24.2-1ubuntu1.1 -// gstreamer1.0-tools:1.24.2-1ubuntu0.1 -// gstreamer1.0-x:1.24.2-1ubuntu0.2 -// gtk-update-icon-cache:3.24.41-4ubuntu1.2 -// gtk2-engines-murrine:0.98.2-4 -// gtk2-engines-pixbuf:2.24.33-4ubuntu1.1 -// gvfs:1.54.0-1ubuntu2 -// gvfs-backends:1.54.0-1ubuntu2 -// gvfs-common:1.54.0-1ubuntu2 -// gvfs-daemons:1.54.0-1ubuntu2 -// gvfs-fuse:1.54.0-1ubuntu2 -// gvfs-libs:1.54.0-1ubuntu2 -// gzip:1.12-1ubuntu3 -// hdparm:9.65+ds-1build1 -// heif-gdk-pixbuf:1.17.6-1ubuntu4.1 -// heif-thumbnailer:1.17.6-1ubuntu4.1 -// hicolor-icon-theme:0.17-2 -// hostname:3.23+nmu2ubuntu2 -// hplip:3.23.12+dfsg0-0ubuntu5 -// hplip-data:3.23.12+dfsg0-0ubuntu5 -// humanity-icon-theme:0.6.16 -// hunspell-en-us:1:2020.12.07-2 -// hwdata:0.379-1 -// ibus:1.5.29-2 -// ibus-data:1.5.29-2 -// ibus-gtk:1.5.29-2 -// ibus-gtk3:1.5.29-2 -// ibus-gtk4:1.5.29-2 -// ibus-table:1.17.4-2 -// ibus-table-cangjie-big:1.8.12-1 -// ibus-table-cangjie3:1.8.12-1 -// ibus-table-cangjie5:1.8.12-1 -// ibverbs-providers:50.0-2build2 -// icu-devtools:74.2-1ubuntu3.1 -// ieee-data:20220827.1 -// iio-sensor-proxy:3.5-1build2 -// im-config:0.57-2 -// inetutils-telnet:2:2.5-3ubuntu4 -// info:7.1-3build2 -// init:1.66ubuntu1 -// init-system-helpers:1.66ubuntu1 -// initramfs-tools:0.142ubuntu25.5 -// initramfs-tools-bin:0.142ubuntu25.5 -// initramfs-tools-core:0.142ubuntu25.5 -// inputattach:1:1.8.1-2build1 -// install-info:7.1-3build2 -// intel-microcode:3.20250211.0ubuntu0.24.04.1 -// ipp-usb:0.9.24-0ubuntu3.2 -// iproute2:6.1.0-1ubuntu6 -// iptables:1.8.10-3ubuntu2 -// iputils-ping:3:20240117-1build1 -// iputils-tracepath:3:20240117-1build1 -// iso-codes:4.16.0-1 -// iucode-tool:2.3.1-3build1 -// java-common:0.75+exp1 -// javascript-common:11+nmu1 -// jq:1.7.1-3build1 -// kbd:2.6.4-2ubuntu2 -// kerneloops:0.12+git20140509-6ubuntu8 -// keyboard-configuration:1.226ubuntu1 -// keyboxd:2.4.4-2ubuntu17 -// klibc-utils:2.0.13-4ubuntu0.1 -// kmod:31+20240202-2ubuntu7.1 -// krb5-locales:1.20.1-6ubuntu2.5 -// language-pack-en:1:24.04+20250130 -// language-pack-en-base:1:24.04+20250130 -// language-pack-gnome-en:1:24.04+20250130 -// language-pack-gnome-en-base:1:24.04+20250130 -// language-selector-common:0.225 -// language-selector-gnome:0.225 -// laptop-detect:0.16 -// ldap-utils:2.6.7+dfsg-1~exp1ubuntu8.2 -// less:590-2ubuntu2.1 -// libaa1:1.4p5-51.1 -// libabsl20220623t64:20220623.1-3.1ubuntu3 -// libaccountsservice0:23.13.9-2ubuntu6 -// libacl1:2.3.2-1build1.1 -// libadwaita-1-0:1.5.0-1ubuntu2 -// libalgorithm-diff-perl:1.201-1 -// libalgorithm-diff-xs-perl:0.04-8build3 -// libalgorithm-merge-perl:0.08-5 -// libao-common:1.2.2+20180113-1.1ubuntu4 -// libao4:1.2.2+20180113-1.1ubuntu4 -// libaom3:3.8.2-2ubuntu0.1 -// libapparmor1:4.0.1really4.0.1-0ubuntu0.24.04.3 -// libappstream5:1.0.2-1build6 -// libapt-pkg6.0t64:2.7.14build2 -// libarchive13t64:3.7.2-2ubuntu0.3 -// libargon2-1:0~20190702+dfsg-4build1 -// libasan8:14.2.0-4ubuntu2~24.04 -// libasound2-data:1.2.11-1build2 -// libasound2t64:1.2.11-1build2 -// libaspell15:0.60.8.1-1build1 -// libassuan0:2.5.6-1build1 -// libasyncns0:0.8-6build4 -// libatasmart4:0.19-5build3 -// libatk-adaptor:2.52.0-1build1 -// libatk-bridge2.0-0t64:2.52.0-1build1 -// libatk-wrapper-java:0.40.0-3build2 -// libatk-wrapper-java-jni:0.40.0-3build2 -// libatk1.0-0t64:2.52.0-1build1 -// libatm1t64:1:2.5.1-5.1build1 -// libatomic1:14.2.0-4ubuntu2~24.04 -// libatopology2t64:1.2.11-1build2 -// libatspi2.0-0t64:2.52.0-1build1 -// libattr1:1:2.5.2-1build1.1 -// libaudit-common:1:3.1.2-2.1build1.1 -// libaudit1:1:3.1.2-2.1build1.1 -// libauthen-sasl-perl:2.1700-1 -// libavahi-client3:0.8-13ubuntu6 -// libavahi-common-data:0.8-13ubuntu6 -// libavahi-common3:0.8-13ubuntu6 -// libavahi-core7:0.8-13ubuntu6 -// libavahi-glib1:0.8-13ubuntu6 -// libavc1394-0:0.5.4-5build3 -// libayatana-appindicator3-1:0.5.93-1build3 -// libayatana-ido3-0.4-0:0.10.1-1build2 -// libayatana-indicator3-7:0.9.4-1build1 -// libbabeltrace1:1.5.11-3build3 -// libbasicobjects0t64:0.6.2-2.1build1 -// libbinutils:2.42-4ubuntu2.4 -// libblkid1:2.39.3-9ubuntu6.2 -// libblockdev-crypto3:3.1.1-1 -// libblockdev-fs3:3.1.1-1 -// libblockdev-loop3:3.1.1-1 -// libblockdev-mdraid3:3.1.1-1 -// libblockdev-nvme3:3.1.1-1 -// libblockdev-part3:3.1.1-1 -// libblockdev-swap3:3.1.1-1 -// libblockdev-utils3:3.1.1-1 -// libblockdev3:3.1.1-1 -// libbluetooth3:5.72-0ubuntu5.1 -// libbpf1:1:1.3.0-2build2 -// libbpfcc:0.29.1+ds-1ubuntu7 -// libbrlapi0.8:6.6-4ubuntu5 -// libbrotli-dev:1.1.0-2build2 -// libbrotli1:1.1.0-2build2 -// libbsd0:0.12.1-1build1.1 -// libbytesize-common:2.10-1ubuntu2 -// libbytesize1:2.10-1ubuntu2 -// libbz2-1.0:1.0.8-5.1build0.1 -// libbz2-dev:1.0.8-5.1build0.1 -// libc-bin:2.39-0ubuntu8.4 -// libc-dev-bin:2.39-0ubuntu8.4 -// libc-devtools:2.39-0ubuntu8.4 -// libc6:2.39-0ubuntu8.4 -// libc6-dbg:2.39-0ubuntu8.4 -// libc6-dev:2.39-0ubuntu8.4 -// libcaca0:0.99.beta20-4build2 -// libcairo-gobject-perl:1.005-4build3 -// libcairo-gobject2:1.18.0-3build1 -// libcairo-perl:1.109-4build1 -// libcairo-script-interpreter2:1.18.0-3build1 -// libcairo2:1.18.0-3build1 -// libcairomm-1.16-1:1.18.0-1build1 -// libcamel-1.2-64t64:3.52.3-0ubuntu1 -// libcanberra-gtk3-0t64:0.30-10ubuntu10 -// libcanberra-gtk3-module:0.30-10ubuntu10 -// libcanberra-pulse:0.30-10ubuntu10 -// libcanberra0t64:0.30-10ubuntu10 -// libcap-ng0:0.8.4-2build2 -// libcap2:1:2.66-5ubuntu2.2 -// libcap2-bin:1:2.66-5ubuntu2.2 -// libcares2:1.27.0-1.0ubuntu1 -// libcbor0.10:0.10.2-1.2ubuntu2 -// libcc1-0:14.2.0-4ubuntu2~24.04 -// libcdio-cdda2t64:10.2+2.0.1-1.1build2 -// libcdio-paranoia2t64:10.2+2.0.1-1.1build2 -// libcdio19t64:2.1.0-4.1ubuntu1.2 -// libcdparanoia0:3.10.2+debian-14build3 -// libchewing3:0.6.0-1build1 -// libchewing3-data:0.6.0-1build1 -// libclang-cpp18:1:18.1.3-1ubuntu1 -// libclang1-18:1:18.1.3-1ubuntu1 -// libclone-perl:0.46-1build3 -// libcollection4t64:0.6.2-2.1build1 -// libcolord-gtk4-1t64:0.3.1-1build2 -// libcolord2:1.4.7-1build2 -// libcolorhug2:1.4.7-1build2 -// libcom-err2:1.47.0-2.4~exp1ubuntu4.1 -// libcrack2:2.9.6-5.1build2 -// libcrypt-dev:1:4.4.36-4build1 -// libcrypt1:1:4.4.36-4build1 -// libcryptsetup12:2:2.7.0-1ubuntu4.2 -// libctf-nobfd0:2.42-4ubuntu2.4 -// libctf0:2.42-4ubuntu2.4 -// libcublas-12-6:12.6.4.1-1 -// libcublas-dev-12-6:12.6.4.1-1 -// libcue2:2.2.1-4.1build1 -// libcufft-12-6:11.3.0.4-1 -// libcufft-dev-12-6:11.3.0.4-1 -// libcufile-12-6:1.11.1.6-1 -// libcufile-dev-12-6:1.11.1.6-1 -// libcups2t64:2.4.7-1.2ubuntu7.3 -// libcupsfilters2-common:2.0.0-0ubuntu7.1 -// libcupsfilters2t64:2.0.0-0ubuntu7.1 -// libcupsimage2t64:2.4.7-1.2ubuntu7.3 -// libcurand-12-6:10.3.7.77-1 -// libcurand-dev-12-6:10.3.7.77-1 -// libcurl3t64-gnutls:8.5.0-2ubuntu10.6 -// libcurl4t64:8.5.0-2ubuntu10.6 -// libcusolver-12-6:11.7.1.2-1 -// libcusolver-dev-12-6:11.7.1.2-1 -// libcusparse-12-6:12.5.4.2-1 -// libcusparse-dev-12-6:12.5.4.2-1 -// libdaemon0:0.14-7.1ubuntu4 -// libdata-dump-perl:1.25-1 -// libdatrie1:0.2.13-3build1 -// libdb5.3t64:5.3.28+dfsg2-7 -// libdbus-1-3:1.14.10-4ubuntu4.1 -// libdbus-glib-1-2:0.112-3build2 -// libdbusmenu-glib4:18.10.20180917~bzr492+repack1-3.1ubuntu5 -// libdbusmenu-gtk3-4:18.10.20180917~bzr492+repack1-3.1ubuntu5 -// libdconf1:0.40.0-4build2 -// libde265-0:1.0.15-1build3 -// libdebconfclient0:0.271ubuntu3 -// libdebuginfod-common:0.190-1.1build4.1 -// libdebuginfod1t64:0.190-1.1build4.1 -// libdecor-0-0:0.2.2-1build2 -// libdecor-0-plugin-1-gtk:0.2.2-1build2 -// libdee-1.0-4:1.2.7+17.10.20170616-7build5 -// libdeflate0:1.19-1build1.1 -// libdevmapper1.02.1:2:1.02.185-3ubuntu3.2 -// libdhash1t64:0.6.2-2.1build1 -// libdjvulibre-text:3.5.28-2build4 -// libdjvulibre21:3.5.28-2build4 -// libdotconf0:1.3-0.3fakesync1build3 -// libdpkg-perl:1.22.6ubuntu6.1 -// libdrm-amdgpu1:2.4.122-1~ubuntu0.24.04.1 -// libdrm-common:2.4.122-1~ubuntu0.24.04.1 -// libdrm-intel1:2.4.122-1~ubuntu0.24.04.1 -// libdrm-nouveau2:2.4.122-1~ubuntu0.24.04.1 -// libdrm-radeon1:2.4.122-1~ubuntu0.24.04.1 -// libdrm2:2.4.122-1~ubuntu0.24.04.1 -// libduktape207:2.7.0+tests-0ubuntu3 -// libdv4t64:1.0.0-17.1build1 -// libdw1t64:0.190-1.1build4.1 -// libeatmydata1:131-1ubuntu1 -// libebackend-1.2-11t64:3.52.3-0ubuntu1 -// libebook-1.2-21t64:3.52.3-0ubuntu1 -// libebook-contacts-1.2-4t64:3.52.3-0ubuntu1 -// libecal-2.0-3:3.52.3-0ubuntu1 -// libedata-book-1.2-27t64:3.52.3-0ubuntu1 -// libedata-cal-2.0-2t64:3.52.3-0ubuntu1 -// libedataserver-1.2-27t64:3.52.3-0ubuntu1 -// libedataserverui-1.2-4t64:3.52.3-0ubuntu1 -// libedit2:3.1-20230828-1build1 -// libeditorconfig0:0.12.7-0.1 -// libefiboot1t64:38-3.1build1 -// libefivar1t64:38-3.1build1 -// libegl-mesa0:24.2.8-1ubuntu1~24.04.1 -// libegl1:1.7.0-1build1 -// libei1:1.2.1-1 -// libeis1:1.2.1-1 -// libelf1t64:0.190-1.1build4.1 -// libenchant-2-2:2.3.3-2build2 -// libencode-locale-perl:1.05-3 -// libepoxy0:1.5.10-1build1 -// liberror-perl:0.17029-2 -// libespeak-ng1:1.51+dfsg-12build1 -// libestr0:0.1.11-1build1 -// libevdev2:1.13.1+dfsg-1build1 -// libevdocument3-4t64:46.3.1-0ubuntu1 -// libevview3-3t64:46.3.1-0ubuntu1 -// libexempi8:2.6.5-1build1 -// libexif12:0.6.24-1build2 -// libexiv2-27:0.27.6-1build1 -// libexpat1:2.6.1-2ubuntu0.2 -// libexpat1-dev:2.6.1-2ubuntu0.2 -// libext2fs2t64:1.47.0-2.4~exp1ubuntu4.1 -// libextutils-depends-perl:0.8001-2 -// libfakeroot:1.33-1 -// libfastjson4:1.2304.0-1build1 -// libfdisk1:2.39.3-9ubuntu6.2 -// libffi8:3.4.6-1build1 -// libfftw3-single3:3.3.10-1ubuntu3 -// libfido2-1:1.14.0-1build3 -// libfile-basedir-perl:0.09-2 -// libfile-desktopentry-perl:0.22-3 -// libfile-fcntllock-perl:0.22-4ubuntu5 -// libfile-listing-perl:6.16-1 -// libfile-mimeinfo-perl:0.34-1 -// libfl-dev:2.6.4-8.2build1 -// libfl2:2.6.4-8.2build1 -// libflac12t64:1.4.3+ds-2.1ubuntu2 -// libflashrom1:1.3.0-2.1ubuntu2 -// libfont-afm-perl:1.20-4 -// libfontconfig-dev:2.15.0-1.1ubuntu2 -// libfontconfig1:2.15.0-1.1ubuntu2 -// libfontconfig1-dev:2.15.0-1.1ubuntu2 -// libfontenc1:1:1.1.8-1build1 -// libfprint-2-2:1:1.94.7+tod1-0ubuntu5~24.04.2 -// libfprint-2-tod1:1:1.94.7+tod1-0ubuntu5~24.04.2 -// libfreeaptx0:0.1.1-2build1 -// libfreerdp-server3-3:3.5.1+dfsg1-0ubuntu1 -// libfreerdp3-3:3.5.1+dfsg1-0ubuntu1 -// libfreetype-dev:2.13.2+dfsg-1build3 -// libfreetype6:2.13.2+dfsg-1build3 -// libfribidi0:1.0.13-3build1 -// libftdi1-2:1.5-6build5 -// libfuse3-3:3.14.0-5build1 -// libfwupd2:1.9.28-0ubuntu1~24.04.1 -// libgail-common:2.24.33-4ubuntu1.1 -// libgail18t64:2.24.33-4ubuntu1.1 -// libgamemode0:1.8.1-2build1 -// libgamemodeauto0:1.8.1-2build1 -// libgbm1:24.2.8-1ubuntu1~24.04.1 -// libgcc-13-dev:13.3.0-6ubuntu2~24.04 -// libgcc-s1:14.2.0-4ubuntu2~24.04 -// libgck-1-0:3.41.2-1build3 -// libgck-2-2:4.2.0-5 -// libgcr-4-4:4.2.0-5 -// libgcr-base-3-1:3.41.2-1build3 -// libgcr-ui-3-1:3.41.2-1build3 -// libgcrypt20:1.10.3-2build1 -// libgd3:2.3.3-9ubuntu5 -// libgdata-common:0.18.1-6build2 -// libgdata22:0.18.1-6build2 -// libgdbm-compat4t64:1.23-5.1build1 -// libgdbm6t64:1.23-5.1build1 -// libgdk-pixbuf-2.0-0:2.42.10+dfsg-3ubuntu3.1 -// libgdk-pixbuf2.0-bin:2.42.10+dfsg-3ubuntu3.1 -// libgdk-pixbuf2.0-common:2.42.10+dfsg-3ubuntu3.1 -// libgdm1:46.2-1ubuntu1~24.04.1 -// libgee-0.8-2:0.20.6-1build2 -// libgeoclue-2-0:2.7.0-3ubuntu7 -// libgeocode-glib-2-0:3.26.3-6build3 -// libgexiv2-2:0.14.2-2build3 -// libgif7:5.2.2-1ubuntu1 -// libgirepository-1.0-1:1.80.1-1 -// libgjs0g:1.80.2-1build2 -// libgl1:1.7.0-1build1 -// libgl1-amber-dri:21.3.9-0ubuntu2 -// libgl1-mesa-dri:24.2.8-1ubuntu1~24.04.1 -// libglapi-mesa:24.2.8-1ubuntu1~24.04.1 -// libgles2:1.7.0-1build1 -// libglib-object-introspection-perl:0.051-1build3 -// libglib-perl:3:1.329.3-3build3 -// libglib2.0-0t64:2.80.0-6ubuntu3.2 -// libglib2.0-bin:2.80.0-6ubuntu3.2 -// libglib2.0-data:2.80.0-6ubuntu3.2 -// libglibmm-2.68-1t64:2.78.1-2.2build2 -// libglu1-mesa:9.0.2-1.1build1 -// libglvnd0:1.7.0-1build1 -// libglx-mesa0:24.2.8-1ubuntu1~24.04.1 -// libglx0:1.7.0-1build1 -// libgmp10:2:6.3.0+dfsg-2ubuntu6.1 -// libgnome-autoar-0-0:0.4.4-2build4 -// libgnome-bg-4-2t64:44.0-5build2 -// libgnome-bluetooth-3.0-13:46.0-1ubuntu1 -// libgnome-bluetooth-ui-3.0-13:46.0-1ubuntu1 -// libgnome-desktop-3-20t64:44.0-5build2 -// libgnome-desktop-4-2t64:44.0-5build2 -// libgnome-menu-3-0:3.36.0-1.1ubuntu3 -// libgnome-rr-4-2t64:44.0-5build2 -// libgnomekbd-common:3.28.1-1build3 -// libgnomekbd8:3.28.1-1build3 -// libgnutls30t64:3.8.3-1.1ubuntu3.3 -// libgoa-1.0-0b:3.50.4-0ubuntu2 -// libgoa-1.0-common:3.50.4-0ubuntu2 -// libgoa-backend-1.0-2:3.50.4-0ubuntu2 -// libgomp1:14.2.0-4ubuntu2~24.04 -// libgpg-error-l10n:1.47-3build2.1 -// libgpg-error0:1.47-3build2.1 -// libgpgme11t64:1.18.0-4.1ubuntu4 -// libgphoto2-6t64:2.5.31-2.1build2 -// libgphoto2-l10n:2.5.31-2.1build2 -// libgphoto2-port12t64:2.5.31-2.1build2 -// libgpm2:1.20.7-11 -// libgprofng0:2.42-4ubuntu2.4 -// libgraphene-1.0-0:1.10.8-3build2 -// libgraphite2-3:1.3.14-2build1 -// libgs-common:10.02.1~dfsg1-0ubuntu7.4 -// libgs10:10.02.1~dfsg1-0ubuntu7.4 -// libgs10-common:10.02.1~dfsg1-0ubuntu7.4 -// libgsf-1-114:1.14.51-2ubuntu0.1 -// libgsf-1-common:1.14.51-2ubuntu0.1 -// libgsound0t64:1.0.3-3.2build2 -// libgspell-1-2:1.12.2-1build4 -// libgspell-1-common:1.12.2-1build4 -// libgssapi-krb5-2:1.20.1-6ubuntu2.5 -// libgssdp-1.6-0:1.6.3-1build3 -// libgstreamer-gl1.0-0:1.24.2-1ubuntu0.2 -// libgstreamer-plugins-base1.0-0:1.24.2-1ubuntu0.2 -// libgstreamer-plugins-good1.0-0:1.24.2-1ubuntu1.1 -// libgstreamer1.0-0:1.24.2-1ubuntu0.1 -// libgtk-3-0t64:3.24.41-4ubuntu1.2 -// libgtk-3-bin:3.24.41-4ubuntu1.2 -// libgtk-3-common:3.24.41-4ubuntu1.2 -// libgtk-4-1:4.14.2+ds-1ubuntu1 -// libgtk-4-bin:4.14.2+ds-1ubuntu1 -// libgtk-4-common:4.14.2+ds-1ubuntu1 -// libgtk-4-media-gstreamer:4.14.2+ds-1ubuntu1 -// libgtk2.0-0t64:2.24.33-4ubuntu1.1 -// libgtk2.0-bin:2.24.33-4ubuntu1.1 -// libgtk2.0-common:2.24.33-4ubuntu1.1 -// libgtk3-perl:0.038-3 -// libgtkmm-4.0-0:4.10.0-4build3 -// libgtksourceview-5-0:5.12.0-1build1 -// libgtksourceview-5-common:5.12.0-1build1 -// libgtop-2.0-11:2.41.3-1build4 -// libgtop2-common:2.41.3-1build4 -// libgudev-1.0-0:1:238-5ubuntu1 -// libgumbo2:0.12.0+dfsg-2build1 -// libgupnp-1.6-0:1.6.6-1build3 -// libgupnp-av-1.0-3:0.14.1-2build2 -// libgupnp-dlna-2.0-4:0.12.0-4build2 -// libgusb2:0.4.8-1build2 -// libgweather-4-0t64:4.4.2-1build1 -// libgweather-4-common:4.4.2-1build1 -// libgxps2t64:0.3.2-4build3 -// libhandy-1-0:1.8.3-1build2 -// libharfbuzz-gobject0:8.3.0-2build2 -// libharfbuzz-icu0:8.3.0-2build2 -// libharfbuzz0b:8.3.0-2build2 -// libheif-plugin-aomdec:1.17.6-1ubuntu4.1 -// libheif-plugin-aomenc:1.17.6-1ubuntu4.1 -// libheif-plugin-libde265:1.17.6-1ubuntu4.1 -// libheif1:1.17.6-1ubuntu4.1 -// libhogweed6t64:3.9.1-2.2build1.1 -// libhpmud0:3.23.12+dfsg0-0ubuntu5 -// libhtml-form-perl:6.11-1 -// libhtml-format-perl:2.16-2 -// libhtml-parser-perl:3.81-1build3 -// libhtml-tagset-perl:3.20-6 -// libhtml-tree-perl:5.07-3 -// libhttp-cookies-perl:6.11-1 -// libhttp-daemon-perl:6.16-1 -// libhttp-date-perl:6.06-1 -// libhttp-message-perl:6.45-1ubuntu1 -// libhttp-negotiate-perl:6.01-2 -// libhunspell-1.7-0:1.7.2+really1.7.2-10build3 -// libhwasan0:14.2.0-4ubuntu2~24.04 -// libhyphen0:2.8.8-7build3 -// libibus-1.0-5:1.5.29-2 -// libibverbs1:50.0-2build2 -// libical3t64:3.0.17-1.1build3 -// libice6:2:1.0.10-1build3 -// libicu-dev:74.2-1ubuntu3.1 -// libicu74:74.2-1ubuntu3.1 -// libidn12:1.42-1build1 -// libidn2-0:2.3.7-2build1.1 -// libiec61883-0:1.2.0-6build1 -// libieee1284-3t64:0.2.11-14.1build1 -// libijs-0.35:0.35-15.1build1 -// libimagequant0:2.18.0-1build1 -// libimobiledevice6:1.3.0-8.1build3 -// libini-config5t64:0.6.2-2.1build1 -// libinih1:55-1ubuntu2 -// libinput-bin:1.25.0-1ubuntu3 -// libinput10:1.25.0-1ubuntu3 -// libio-html-perl:1.004-3 -// libio-socket-ssl-perl:2.085-1 -// libio-stringy-perl:2.111-3 -// libip4tc2:1.8.10-3ubuntu2 -// libip6tc2:1.8.10-3ubuntu2 -// libipa-hbac0t64:2.9.4-1.1ubuntu6.2 -// libipc-system-simple-perl:1.30-2 -// libipt2:2.0.6-1build1 -// libisl23:0.26-3build1.1 -// libitm1:14.2.0-4ubuntu2~24.04 -// libiw30t64:30~pre9-16.1ubuntu2 -// libjansson4:2.14-2build2 -// libjavascriptcoregtk-4.1-0:2.46.6-0ubuntu0.24.04.1 -// libjavascriptcoregtk-6.0-1:2.46.6-0ubuntu0.24.04.1 -// libjbig0:2.1-6.1ubuntu2 -// libjbig2dec0:0.20-1build3 -// libjcat1:0.2.0-2build3 -// libjpeg-turbo8:2.1.5-2ubuntu2 -// libjpeg8:8c-2ubuntu11 -// libjq1:1.7.1-3build1 -// libjs-jquery:3.6.1+dfsg+~3.5.14-1 -// libjs-sphinxdoc:7.2.6-6 -// libjs-underscore:1.13.4~dfsg+~1.11.4-3 -// libjson-c5:0.17-1build1 -// libjson-glib-1.0-0:1.8.0-2build2 -// libjson-glib-1.0-common:1.8.0-2build2 -// libjsoncpp25:1.9.5-6build1 -// libk5crypto3:1.20.1-6ubuntu2.5 -// libkeyutils1:1.6.3-3build1 -// libklibc:2.0.13-4ubuntu0.1 -// libkmod2:31+20240202-2ubuntu7.1 -// libkpathsea6:2023.20230311.66589-9build3 -// libkrb5-3:1.20.1-6ubuntu2.5 -// libkrb5support0:1.20.1-6ubuntu2.5 -// libksba8:1.6.6-1build1 -// liblc3-1:1.0.4-3build1 -// liblcms2-2:2.14-2build1 -// liblcms2-utils:2.14-2build1 -// libldacbt-abr2:2.0.2.3+git20200429+ed310a0-4ubuntu2 -// libldacbt-enc2:2.0.2.3+git20200429+ed310a0-4ubuntu2 -// libldap-common:2.6.7+dfsg-1~exp1ubuntu8.2 -// libldap2:2.6.7+dfsg-1~exp1ubuntu8.2 -// libldb2:2:2.8.0+samba4.19.5+dfsg-4ubuntu9 -// liblerc4:4.0.0+ds-4ubuntu2 -// libllvm18:1:18.1.3-1ubuntu1 -// libllvm19:1:19.1.1-1ubuntu1~24.04.2 -// liblmdb0:0.9.31-1build1 -// liblocale-gettext-perl:1.07-6ubuntu5 -// liblouis-data:3.29.0-1build1 -// liblouis20:3.29.0-1build1 -// liblouisutdml-bin:2.12.0-3.1build1 -// liblouisutdml-data:2.12.0-3.1build1 -// liblouisutdml9t64:2.12.0-3.1build1 -// liblsan0:14.2.0-4ubuntu2~24.04 -// libltdl7:2.4.7-7build1 -// liblua5.4-0:5.4.6-3build2 -// liblwp-mediatypes-perl:6.04-2 -// liblwp-protocol-https-perl:6.13-1 -// liblz4-1:1.9.4-1build1.1 -// liblzma5:5.6.1+really5.4.5-1build0.1 -// liblzo2-2:2.10-2build4 -// libm17n-0:1.8.4-1build2 -// libmagic-mgc:1:5.45-3build1 -// libmagic1t64:1:5.45-3build1 -// libmailtools-perl:2.21-2 -// libmalcontent-0-0:0.11.1-1ubuntu1.1 -// libmanette-0.2-0:0.2.7-1build2 -// libmarisa0:0.2.6-14ubuntu4 -// libmaxminddb0:1.9.1-1build1 -// libmbim-glib4:1.31.2-0ubuntu3 -// libmbim-proxy:1.31.2-0ubuntu3 -// libmbim-utils:1.31.2-0ubuntu3 -// libmd0:1.1.0-2build1.1 -// libmediaart-2.0-0:1.9.6-1build2 -// libmm-glib0:1.23.4-0ubuntu2 -// libmnl0:1.0.5-2build1 -// libmount1:2.39.3-9ubuntu6.2 -// libmozjs-115-0t64:115.10.0-1 -// libmp3lame0:3.100-6build1 -// libmpc3:1.3.1-1build1.1 -// libmpfr6:4.2.1-1build1.1 -// libmpg123-0t64:1.32.5-1ubuntu1.1 -// libmsgraph-0-1:0.2.1-0ubuntu3 -// libmtdev1t64:1.1.6-1.1build1 -// libmtp-common:1.1.21-3.1build1 -// libmtp-runtime:1.1.21-3.1build1 -// libmtp9t64:1.1.21-3.1build1 -// libmujs3:1.3.3-3build2 -// libmutter-14-0:46.2-1ubuntu0.24.04.6 -// libnautilus-extension4:1:46.2-0ubuntu0.3 -// libncurses-dev:6.4+20240113-1ubuntu2 -// libncurses6:6.4+20240113-1ubuntu2 -// libncursesw6:6.4+20240113-1ubuntu2 -// libndp0:1.8-1fakesync1ubuntu0.24.04.1 -// libnet-dbus-perl:1.2.0-2build3 -// libnet-http-perl:6.23-1 -// libnet-smtp-ssl-perl:1.04-2 -// libnet-ssleay-perl:1.94-1build4 -// libnetfilter-conntrack3:1.0.9-6build1 -// libnetplan1:1.1.1-1~ubuntu24.04.1 -// libnettle8t64:3.9.1-2.2build1.1 -// libnewt0.52:0.52.24-2ubuntu2 -// libnfnetlink0:1.0.2-2build1 -// libnfs14:5.0.2-1build1 -// libnfsidmap1:1:2.6.4-3ubuntu5.1 -// libnftables1:1.0.9-1build1 -// libnftnl11:1.2.6-2build1 -// libnghttp2-14:1.59.0-1ubuntu0.2 -// libnl-3-200:3.7.0-0.3build1.1 -// libnl-genl-3-200:3.7.0-0.3build1.1 -// libnl-route-3-200:3.7.0-0.3build1.1 -// libnm0:1.46.0-1ubuntu2.2 -// libnma-common:1.10.6-3build2 -// libnma-gtk4-0:1.10.6-3build2 -// libnma0:1.10.6-3build2 -// libnotify-bin:0.8.3-1build2 -// libnotify4:0.8.3-1build2 -// libnpp-12-6:12.3.1.54-1 -// libnpp-dev-12-6:12.3.1.54-1 -// libnpth0t64:1.6-3.1build1 -// libnspr4:2:4.35-1.1build1 -// libnss-mdns:0.15.1-4build1 -// libnss-sss:2.9.4-1.1ubuntu6.2 -// libnss-systemd:255.4-1ubuntu8.6 -// libnss3:2:3.98-1build1 -// libntfs-3g89t64:1:2022.10.3-1.2ubuntu3 -// libnuma1:2.0.18-1build1 -// libnvfatbin-12-6:12.6.77-1 -// libnvfatbin-dev-12-6:12.6.77-1 -// libnvidia-cfg1-550:550.144.03-0ubuntu1 -// libnvidia-common-550:550.144.03-0ubuntu1 -// libnvidia-compute-550:550.144.03-0ubuntu1 -// libnvidia-decode-550:550.144.03-0ubuntu1 -// libnvidia-egl-wayland1:1:1.1.13-1build1 -// libnvidia-encode-550:550.144.03-0ubuntu1 -// libnvidia-extra-550:550.144.03-0ubuntu1 -// libnvidia-fbc1-550:550.144.03-0ubuntu1 -// libnvidia-gl-550:550.144.03-0ubuntu1 -// libnvjitlink-12-6:12.6.85-1 -// libnvjitlink-dev-12-6:12.6.85-1 -// libnvjpeg-12-6:12.3.3.54-1 -// libnvjpeg-dev-12-6:12.3.3.54-1 -// libnvme1t64:1.8-3ubuntu1 -// libogg0:1.3.5-3build1 -// libonig5:6.9.9-1build1 -// libopencc-data:1.1.7+ds1-1build1 -// libopencc1.1:1.1.7+ds1-1build1 -// libopengl0:1.7.0-1build1 -// libopenjp2-7:2.5.0-2ubuntu0.3 -// libopus0:1.4-1build1 -// liborc-0.4-0t64:1:0.4.38-1ubuntu0.1 -// libotf1:0.9.16-4build2 -// libp11-kit0:0.25.3-4ubuntu2.1 -// libpackagekit-glib2-18:1.2.8-2ubuntu1.2 -// libpam-cap:1:2.66-5ubuntu2.2 -// libpam-fprintd:1.94.3-1 -// libpam-gnome-keyring:46.1-2build1 -// libpam-modules:1.5.3-5ubuntu5.1 -// libpam-modules-bin:1.5.3-5ubuntu5.1 -// libpam-pwquality:1.4.5-3build1 -// libpam-runtime:1.5.3-5ubuntu5.1 -// libpam-sss:2.9.4-1.1ubuntu6.2 -// libpam-systemd:255.4-1ubuntu8.6 -// libpam0g:1.5.3-5ubuntu5.1 -// libpango-1.0-0:1.52.1+ds-1build1 -// libpangocairo-1.0-0:1.52.1+ds-1build1 -// libpangoft2-1.0-0:1.52.1+ds-1build1 -// libpangomm-2.48-1t64:2.52.0-1build1 -// libpangoxft-1.0-0:1.52.1+ds-1build1 -// libpaper-utils:1.1.29build1 -// libpaper1:1.1.29build1 -// libparted2t64:3.6-4build1 -// libpath-utils1t64:0.6.2-2.1build1 -// libpcap0.8t64:1.10.4-4.1ubuntu3 -// libpcaudio0:1.2-2build3 -// libpci3:1:3.10.0-2build1 -// libpciaccess0:0.17-3build1 -// libpcre2-32-0:10.42-4ubuntu2.1 -// libpcre2-8-0:10.42-4ubuntu2.1 -// libpcsclite1:2.0.3-1build1 -// libpeas-1.0-0:1.36.0-3build4 -// libpeas-common:1.36.0-3build4 -// libperl5.38t64:5.38.2-3.2build2.1 -// libphonenumber8:8.12.57+ds-4.2build3 -// libpinyin-data:2.8.1-1build3 -// libpinyin15:2.8.1-1build3 -// libpipeline1:1.5.7-2 -// libpipewire-0.3-0t64:1.0.5-1ubuntu3 -// libpipewire-0.3-common:1.0.5-1ubuntu3 -// libpipewire-0.3-modules:1.0.5-1ubuntu3 -// libpixman-1-0:0.42.2-1build1 -// libpkcs11-helper1t64:1.29.0-2.1build2 -// libpkgconf3:1.8.1-2build1 -// libplist-2.0-4:2.3.0-1~exp2build2 -// libplymouth5:24.004.60-1ubuntu7.1 -// libpng-dev:1.6.43-5build1 -// libpng-tools:1.6.43-5build1 -// libpng16-16t64:1.6.43-5build1 -// libpolkit-agent-1-0:124-2ubuntu1.24.04.2 -// libpolkit-gobject-1-0:124-2ubuntu1.24.04.2 -// libpoppler-cpp0t64:24.02.0-1ubuntu9.2 -// libpoppler-glib8t64:24.02.0-1ubuntu9.2 -// libpoppler134:24.02.0-1ubuntu9.2 -// libpopt0:1.19+dfsg-1build1 -// libportal-gtk4-1:0.7.1-5build5 -// libportal1:0.7.1-5build5 -// libpotrace0:1.16-2build1 -// libppd2:2:2.0.0-0ubuntu4.1 -// libppd2-common:2:2.0.0-0ubuntu4.1 -// libproc2-0:2:4.0.4-4ubuntu3.2 -// libprotobuf-c1:1.4.1-1ubuntu4 -// libprotobuf32t64:3.21.12-8.2build1 -// libproxy1-plugin-gsettings:0.5.4-4build1 -// libproxy1-plugin-networkmanager:0.5.4-4build1 -// libproxy1v5:0.5.4-4build1 -// libpsl5t64:0.21.2-1.1build1 -// libptexenc1:2023.20230311.66589-9build3 -// libpulse-mainloop-glib0:1:16.1+dfsg1-2ubuntu10.1 -// libpulse0:1:16.1+dfsg1-2ubuntu10.1 -// libpwquality-common:1.4.5-3build1 -// libpwquality1:1.4.5-3build1 -// libpython3-dev:3.12.3-0ubuntu2 -// libpython3-stdlib:3.12.3-0ubuntu2 -// libpython3.12-dev:3.12.3-1ubuntu0.5 -// libpython3.12-minimal:3.12.3-1ubuntu0.5 -// libpython3.12-stdlib:3.12.3-1ubuntu0.5 -// libpython3.12t64:3.12.3-1ubuntu0.5 -// libqmi-glib5:1.35.2-0ubuntu2 -// libqmi-proxy:1.35.2-0ubuntu2 -// libqmi-utils:1.35.2-0ubuntu2 -// libqpdf29t64:11.9.0-1.1build1 -// libqrtr-glib0:1.2.2-1ubuntu4 -// libquadmath0:14.2.0-4ubuntu2~24.04 -// libraqm0:0.10.1-1build1 -// libraw1394-11:2.1.2-2build3 -// libreadline-dev:8.2-4build1 -// libreadline8t64:8.2-4build1 -// libref-array1t64:0.6.2-2.1build1 -// librest-1.0-0:0.9.1-6build3 -// librhash0:1.4.3-3build1 -// libroc0.3:0.3.0+dfsg-7ubuntu2 -// librsvg2-2:2.58.0+dfsg-1build1 -// librsvg2-common:2.58.0+dfsg-1build1 -// librtmp1:2.4+20151223.gitfa8646d.1-2build7 -// librygel-core-2.8-0:0.42.5-1ubuntu3 -// librygel-db-2.8-0:0.42.5-1ubuntu3 -// librygel-renderer-2.8-0:0.42.5-1ubuntu3 -// librygel-server-2.8-0:0.42.5-1ubuntu3 -// libsamplerate0:0.2.2-4build1 -// libsane-common:1.2.1-7build4 -// libsane-hpaio:3.23.12+dfsg0-0ubuntu5 -// libsane1:1.2.1-7build4 -// libsasl2-2:2.1.28+dfsg1-5ubuntu3.1 -// libsasl2-modules:2.1.28+dfsg1-5ubuntu3.1 -// libsasl2-modules-db:2.1.28+dfsg1-5ubuntu3.1 -// libsasl2-modules-gssapi-mit:2.1.28+dfsg1-5ubuntu3.1 -// libsbc1:2.0-1build1 -// libseccomp2:2.5.5-1ubuntu3.1 -// libsecret-1-0:0.21.4-1build3 -// libsecret-common:0.21.4-1build3 -// libselinux1:3.5-2ubuntu2.1 -// libsemanage-common:3.5-1build5 -// libsemanage2:3.5-1build5 -// libsensors-config:1:3.6.0-9build1 -// libsensors5:1:3.6.0-9build1 -// libsepol2:3.5-2build1 -// libsframe1:2.42-4ubuntu2.4 -// libsharpyuv0:1.3.2-0.4build3 -// libshout3:2.4.6-1build2 -// libsigc++-3.0-0:3.6.0-2 -// libslang2:2.3.3-3build2 -// libslirp0:4.7.0-1ubuntu3 -// libsm6:2:1.2.3-1build3 -// libsmartcols1:2.39.3-9ubuntu6.2 -// libsmbclient0:2:4.19.5+dfsg-4ubuntu9 -// libsnapd-glib-2-1:1.64-0ubuntu5 -// libsndfile1:1.2.2-1ubuntu5.24.04.1 -// libsnmp-base:5.9.4+dfsg-1.1ubuntu3 -// libsnmp40t64:5.9.4+dfsg-1.1ubuntu3 -// libsonic0:0.2.0-13build1 -// libsoup-2.4-1:2.74.3-6ubuntu1.1 -// libsoup-3.0-0:3.4.4-5ubuntu0.1 -// libsoup-3.0-common:3.4.4-5ubuntu0.1 -// libsoup2.4-common:2.74.3-6ubuntu1.1 -// libsource-highlight-common:3.1.9-4.3build1 -// libsource-highlight4t64:3.1.9-4.3build1 -// libspa-0.2-bluetooth:1.0.5-1ubuntu3 -// libspa-0.2-modules:1.0.5-1ubuntu3 -// libspectre1:0.2.12-1build2 -// libspeechd2:0.12.0~rc2-2build3 -// libspeex1:1.2.1-2ubuntu2.24.04.1 -// libspeexdsp1:1.2.1-1ubuntu3 -// libsqlite3-0:3.45.1-1ubuntu2.1 -// libss2:1.47.0-2.4~exp1ubuntu4.1 -// libssh-4:0.10.6-2build2 -// libssl-dev:3.0.13-0ubuntu3.5 -// libssl3t64:3.0.13-0ubuntu3.5 -// libsss-certmap0:2.9.4-1.1ubuntu6.2 -// libsss-idmap0:2.9.4-1.1ubuntu6.2 -// libsss-nss-idmap0:2.9.4-1.1ubuntu6.2 -// libstartup-notification0:0.12-6build3 -// libstdc++-13-dev:13.3.0-6ubuntu2~24.04 -// libstdc++6:14.2.0-4ubuntu2~24.04 -// libstemmer0d:2.2.0-4build1 -// libsynctex2:2023.20230311.66589-9build3 -// libsysmetrics1:1.7.3ubuntu0.24.04.2 -// libsystemd-shared:255.4-1ubuntu8.6 -// libsystemd0:255.4-1ubuntu8.6 -// libtag1v5:1.13.1-1build1 -// libtag1v5-vanilla:1.13.1-1build1 -// libtalloc2:2.4.2-1build2 -// libtasn1-6:4.19.0-3ubuntu0.24.04.1 -// libtcl8.6:8.6.14+dfsg-1build1 -// libtdb1:1.4.10-1build1 -// libteamdctl0:1.31-1build3 -// libteckit0:2.5.12+ds1-1 -// libtevent0t64:0.16.1-2build1 -// libtexlua53-5:2023.20230311.66589-9build3 -// libtext-charwidth-perl:0.04-11build3 -// libtext-iconv-perl:1.7-8build3 -// libtext-wrapi18n-perl:0.06-10 -// libthai-data:0.1.29-2build1 -// libthai0:0.1.29-2build1 -// libtheora0:1.1.1+dfsg.1-16.1build3 -// libtie-ixhash-perl:1.23-4 -// libtiff6:4.5.1+git230720-4ubuntu2.2 -// libtimedate-perl:2.3300-2 -// libtinfo6:6.4+20240113-1ubuntu2 -// libtirpc-common:1.3.4+ds-1.1build1 -// libtirpc3t64:1.3.4+ds-1.1build1 -// libtotem-plparser-common:3.26.6-1build5 -// libtotem-plparser18:3.26.6-1build5 -// libtraceevent1:1:1.8.2-1ubuntu2 -// libtraceevent1-plugin:1:1.8.2-1ubuntu2 -// libtracefs1:1.8.0-1ubuntu1 -// libtracker-sparql-3.0-0:3.7.1-1build1 -// libtry-tiny-perl:0.31-2 -// libtsan2:14.2.0-4ubuntu2~24.04 -// libtss2-esys-3.0.2-0t64:4.0.1-7.1ubuntu5.1 -// libtss2-mu-4.0.1-0t64:4.0.1-7.1ubuntu5.1 -// libtss2-rc0t64:4.0.1-7.1ubuntu5.1 -// libtss2-sys1t64:4.0.1-7.1ubuntu5.1 -// libtss2-tcti-cmd0t64:4.0.1-7.1ubuntu5.1 -// libtss2-tcti-device0t64:4.0.1-7.1ubuntu5.1 -// libtss2-tcti-libtpms0t64:4.0.1-7.1ubuntu5.1 -// libtss2-tcti-mssim0t64:4.0.1-7.1ubuntu5.1 -// libtss2-tcti-spi-helper0t64:4.0.1-7.1ubuntu5.1 -// libtss2-tcti-swtpm0t64:4.0.1-7.1ubuntu5.1 -// libtss2-tctildr0t64:4.0.1-7.1ubuntu5.1 -// libtwolame0:0.4.0-2build3 -// libu2f-udev:1.1.10-3build3 -// libubsan1:14.2.0-4ubuntu2~24.04 -// libuchardet0:0.0.8-1build1 -// libudev1:255.4-1ubuntu8.6 -// libudisks2-0:2.10.1-6ubuntu1 -// libunistring5:1.1-2build1.1 -// libunity-protocol-private0:7.1.4+19.04.20190319-6build4 -// libunity-scopes-json-def-desktop:7.1.4+19.04.20190319-6build4 -// libunity9:7.1.4+19.04.20190319-6build4 -// libunwind8:1.6.2-3build1.1 -// libupower-glib3:1.90.3-1 -// liburcu8t64:0.14.0-3.1build1 -// liburi-perl:5.27-1 -// libusb-1.0-0:2:1.0.27-1 -// libusbmuxd6:2.0.2-4build3 -// libuuid1:2.39.3-9ubuntu6.2 -// libuv1t64:1.48.0-1.1build1 -// libv4l-0t64:1.26.1-4build3 -// libv4lconvert0t64:1.26.1-4build3 -// libvdpau1:1.5-2build1 -// libvisual-0.4-0:0.4.2-2build1 -// libvolume-key1:0.3.12-7build2 -// libvorbis0a:1.3.7-1build3 -// libvorbisenc2:1.3.7-1build3 -// libvorbisfile3:1.3.7-1build3 -// libvpx9:1.14.0-1ubuntu2.1 -// libvte-2.91-0:0.76.0-1ubuntu0.1 -// libvte-2.91-common:0.76.0-1ubuntu0.1 -// libvulkan1:1.3.275.0-1build1 -// libwacom-common:2.10.0-2 -// libwacom9:2.10.0-2 -// libwavpack1:5.6.0-1build1 -// libwayland-client0:1.22.0-2.1build1 -// libwayland-cursor0:1.22.0-2.1build1 -// libwayland-egl1:1.22.0-2.1build1 -// libwayland-server0:1.22.0-2.1build1 -// libwbclient0:2:4.19.5+dfsg-4ubuntu9 -// libwebkit2gtk-4.1-0:2.46.6-0ubuntu0.24.04.1 -// libwebkitgtk-6.0-4:2.46.6-0ubuntu0.24.04.1 -// libwebp7:1.3.2-0.4build3 -// libwebpdemux2:1.3.2-0.4build3 -// libwebpmux3:1.3.2-0.4build3 -// libwebrtc-audio-processing1:0.3.1-0ubuntu6 -// libwhoopsie-preferences0:23build3 -// libwhoopsie0:0.2.77build3 -// libwinpr3-3:3.5.1+dfsg1-0ubuntu1 -// libwireplumber-0.4-0:0.4.17-1ubuntu4 -// libwmf-0.2-7:0.2.13-1.1build3 -// libwmf-0.2-7-gtk:0.2.13-1.1build3 -// libwmf0.2-7-gtk:0.2.13-1.1build3 -// libwmflite-0.2-7:0.2.13-1.1build3 -// libwnck-3-0:43.0-3build4 -// libwnck-3-common:43.0-3build4 -// libwoff1:1.0.2-2build1 -// libwrap0:7.6.q-33 -// libwww-perl:6.76-1 -// libwww-robotrules-perl:6.02-1 -// libx11-6:2:1.8.7-1build1 -// libx11-data:2:1.8.7-1build1 -// libx11-protocol-perl:0.56-9 -// libx11-xcb1:2:1.8.7-1build1 -// libxatracker2:24.2.8-1ubuntu1~24.04.1 -// libxau6:1:1.0.9-1build6 -// libxaw7:2:1.0.14-1build2 -// libxcb-cursor0:0.1.4-1build1 -// libxcb-damage0:1.15-1ubuntu2 -// libxcb-dri2-0:1.15-1ubuntu2 -// libxcb-dri3-0:1.15-1ubuntu2 -// libxcb-glx0:1.15-1ubuntu2 -// libxcb-icccm4:0.4.1-1.1build3 -// libxcb-image0:0.4.0-2build1 -// libxcb-keysyms1:0.4.0-1build4 -// libxcb-present0:1.15-1ubuntu2 -// libxcb-randr0:1.15-1ubuntu2 -// libxcb-render-util0:0.3.9-1build4 -// libxcb-render0:1.15-1ubuntu2 -// libxcb-res0:1.15-1ubuntu2 -// libxcb-shape0:1.15-1ubuntu2 -// libxcb-shm0:1.15-1ubuntu2 -// libxcb-sync1:1.15-1ubuntu2 -// libxcb-util1:0.4.0-1build3 -// libxcb-xfixes0:1.15-1ubuntu2 -// libxcb-xinerama0:1.15-1ubuntu2 -// libxcb-xinput0:1.15-1ubuntu2 -// libxcb-xkb1:1.15-1ubuntu2 -// libxcb-xv0:1.15-1ubuntu2 -// libxcb1:1.15-1ubuntu2 -// libxcomposite1:1:0.4.5-1build3 -// libxcursor1:1:1.2.1-1build1 -// libxcvt0:0.1.2-1build1 -// libxdamage1:1:1.1.6-1build1 -// libxdmcp6:1:1.1.3-0ubuntu6 -// libxext6:2:1.3.4-1build2 -// libxfixes3:1:6.0.0-2build1 -// libxfont2:1:2.0.6-1build1 -// libxft2:2.3.6-1build1 -// libxi6:2:1.8.1-1build1 -// libxinerama1:2:1.1.4-3build1 -// libxkbcommon-x11-0:1.6.0-1build1 -// libxkbcommon0:1.6.0-1build1 -// libxkbfile1:1:1.1.0-1build4 -// libxkbregistry0:1.6.0-1build1 -// libxklavier16:5.4-5build2 -// libxml-parser-perl:2.47-1build3 -// libxml-twig-perl:1:3.52-2 -// libxml-xpathengine-perl:0.14-2 -// libxml2:2.9.14+dfsg-1.3ubuntu3.2 -// libxmlb2:0.3.18-1 -// libxmu6:2:1.1.3-3build2 -// libxmuu1:2:1.1.3-3build2 -// libxnvctrl0:570.124.06-0ubuntu1 -// libxpm4:1:3.5.17-1build2 -// libxrandr2:2:1.5.2-2build1 -// libxrender1:1:0.9.10-1.1build1 -// libxres1:2:1.2.1-1build1 -// libxshmfence1:1.3-1build5 -// libxslt1.1:1.1.39-0exp1ubuntu0.24.04.1 -// libxss1:1:1.2.3-1build3 -// libxt6t64:1:1.2.1-1.2build1 -// libxtables12:1.8.10-3ubuntu2 -// libxtst6:2:1.2.3-1.1build1 -// libxv1:2:1.0.11-1.1build1 -// libxvmc1:2:1.0.12-2build3 -// libxxf86dga1:2:1.1.5-1build1 -// libxxf86vm1:1:1.1.4-1build4 -// libxxhash0:0.8.2-2build1 -// libyaml-0-2:0.2.5-1build1 -// libyelp0:42.2-1build2 -// libzstd1:1.5.5+dfsg2-2build1.1 -// libzzip-0-13t64:0.13.72+dfsg.1-1.2build1 -// linux-base:4.5ubuntu9 -// linux-firmware:20240318.git3b128b60-0ubuntu2.10 -// linux-generic-hwe-24.04:6.11.0-19.19~24.04.1 -// linux-headers-6.11.0-19-generic:6.11.0-19.19~24.04.1 -// linux-headers-generic-hwe-24.04:6.11.0-19.19~24.04.1 -// linux-hwe-6.11-headers-6.11.0-19:6.11.0-19.19~24.04.1 -// linux-hwe-6.11-tools-6.11.0-19:6.11.0-19.19~24.04.1 -// linux-image-6.11.0-19-generic:6.11.0-19.19~24.04.1 -// linux-image-generic-hwe-24.04:6.11.0-19.19~24.04.1 -// linux-libc-dev:6.8.0-55.57 -// linux-modules-6.11.0-19-generic:6.11.0-19.19~24.04.1 -// linux-modules-extra-6.11.0-19-generic:6.11.0-19.19~24.04.1 -// linux-modules-nvidia-550-6.11.0-19-generic:6.11.0-19.19~24.04.1+1 -// linux-modules-nvidia-550-generic-hwe-24.04:6.11.0-19.19~24.04.1+1 -// linux-objects-nvidia-550-6.11.0-19-generic:6.11.0-19.19~24.04.1+1 -// linux-signatures-nvidia-6.11.0-19-generic:6.11.0-19.19~24.04.1+1 -// linux-sound-base:1.0.25+dfsg-0ubuntu7 -// linux-tools-6.11.0-19-generic:6.11.0-19.19~24.04.1 -// linux-tools-common:6.8.0-55.57 -// lmodern:2.005-1 -// locales:2.39-0ubuntu8.4 -// login:1:4.13+dfsg1-4ubuntu3.2 -// logrotate:3.21.0-2build1 -// logsave:1.47.0-2.4~exp1ubuntu4.1 -// lsb-release:12.0-2 -// lshw:02.19.git.2021.06.19.996aaad9c7-2build3 -// lsof:4.95.0-1build3 -// lto-disabled-list:47 -// m17n-db:1.8.5-1 -// m4:1.4.19-4build1 -// make:4.3-4.1build2 -// man-db:2.12.0-4build2 -// manpages:6.7-2 -// manpages-dev:6.7-2 -// mawk:1.3.4.20240123-1build1 -// media-types:10.1.0 -// memtest86+:7.00-1build1 -// mesa-libgallium:24.2.8-1ubuntu1~24.04.1 -// mesa-vdpau-drivers:24.2.8-1ubuntu1~24.04.1mesa-vulkan-drivers:24.2.8-1ubuntu1~24.04.1 -// mobile-broadband-provider-info:20230416-1 -// modemmanager:1.23.4-0ubuntu2 -// mokutil:0.6.0-2build3 -// mongodb-mongosh:2.4.2 -// mount:2.39.3-9ubuntu6.2 -// mousetweaks:3.32.0-4build2 -// mscompress:0.4-10build1 -// mtr-tiny:0.95-1.1ubuntu0.1 -// mupdf-tools:1.23.10+ds1-1build3 -// mutter-common:46.2-1ubuntu0.24.04.6 -// mutter-common-bin:46.2-1ubuntu0.24.04.6 -// nano:7.2-2ubuntu0.1 -// nautilus:1:46.2-0ubuntu0.3 -// nautilus-data:1:46.2-0ubuntu0.3 -// nautilus-extension-gnome-terminal:3.52.0-1ubuntu2 -// nautilus-sendto:3.8.6-7build2 -// ncurses-base:6.4+20240113-1ubuntu2 -// ncurses-bin:6.4+20240113-1ubuntu2 -// ncurses-term:6.4+20240113-1ubuntu2 -// net-tools:2.10-0.1ubuntu4 -// netbase:6.4 -// netcat-openbsd:1.226-1ubuntu2 -// netplan-generator:1.1.1-1~ubuntu24.04.1 -// netplan.io:1.1.1-1~ubuntu24.04.1 -// network-manager:1.46.0-1ubuntu2.2 -// network-manager-config-connectivity-ubuntu:1.46.0-1ubuntu2.2 -// network-manager-gnome:1.34.0-1ubuntu3 -// network-manager-openvpn:1.10.2-4build2 -// network-manager-openvpn-gnome:1.10.2-4build2 -// network-manager-pptp:1.2.12-3build2 -// network-manager-pptp-gnome:1.2.12-3build2 -// networkd-dispatcher:2.2.4-1 -// nftables:1.0.9-1build1 -// nsight-compute-2024.3.2:2024.3.2.3-1 -// nsight-systems-2024.5.1:2024.5.1.113-245134619542v0 -// ntfs-3g:1:2022.10.3-1.2ubuntu3 -// numactl:2.0.18-1build1 -// nvidia-compute-utils-550:550.144.03-0ubuntu1 -// nvidia-dkms-550:550.144.03-0ubuntu1 -// nvidia-driver-550:550.144.03-0ubuntu1 -// nvidia-firmware-550-550.120:550.120-0ubuntu0.24.04.1 -// nvidia-firmware-550-550.144.03:550.144.03-0ubuntu1 -// nvidia-kernel-common-550:550.144.03-0ubuntu1 -// nvidia-kernel-source-550:550.144.03-0ubuntu1 -// nvidia-prime:0.8.17.2 -// nvidia-settings:570.124.06-0ubuntu1 -// nvidia-utils-550:550.144.03-0ubuntu1 -// openjdk-21-jre:21.0.6+7-1~24.04.1 -// openjdk-21-jre-headless:21.0.6+7-1~24.04.1 -// openprinting-ppds:20230202-1 -// openssh-client:1:9.6p1-3ubuntu13.8 -// openssh-server:1:9.6p1-3ubuntu13.8 -// openssh-sftp-server:1:9.6p1-3ubuntu13.8 -// openssl:3.0.13-0ubuntu3.5 -// openvpn:2.6.12-0ubuntu0.24.04.1 -// orca:46.1-1ubuntu1 -// os-prober:1.81ubuntu4 -// p11-kit:0.25.3-4ubuntu2.1 -// p11-kit-modules:0.25.3-4ubuntu2.1 -// packagekit:1.2.8-2ubuntu1.2 -// packagekit-tools:1.2.8-2ubuntu1.2 -// packages-microsoft-prod:1.1-ubuntu24.04 -// parted:3.6-4build1 -// passwd:1:4.13+dfsg1-4ubuntu3.2 -// patch:2.7.6-7build3 -// pci.ids:0.0~2024.03.31-1 -// pciutils:1:3.10.0-2build1 -// pcmciautils:018-14build1 -// perl:5.38.2-3.2build2.1 -// perl-base:5.38.2-3.2build2.1 -// perl-modules-5.38:5.38.2-3.2build2.1 -// perl-openssl-defaults:7build3 -// pigz:2.8-1 -// pinentry-curses:1.2.1-3ubuntu5 -// pinentry-gnome3:1.2.1-3ubuntu5 -// pipewire:1.0.5-1ubuntu3 -// pipewire-alsa:1.0.5-1ubuntu3 -// pipewire-audio:1.0.5-1ubuntu3 -// pipewire-bin:1.0.5-1ubuntu3 -// pipewire-pulse:1.0.5-1ubuntu3 -// pipx:1.4.3-1 -// pkexec:124-2ubuntu1.24.04.2 -// pkg-config:1.8.1-2build1 -// pkgconf:1.8.1-2build1 -// pkgconf-bin:1.8.1-2build1 -// plymouth:24.004.60-1ubuntu7.1 -// plymouth-label:24.004.60-1ubuntu7.1 -// plymouth-theme-spinner:24.004.60-1ubuntu7.1 -// plymouth-theme-ubuntu-text:24.004.60-1ubuntu7.1 -// policykit-1:124-2ubuntu1.24.04.2 -// policykit-desktop-privileges:0.22 -// polkitd:124-2ubuntu1.24.04.2 -// poppler-data:0.4.12-1 -// poppler-utils:24.02.0-1ubuntu9.2 -// power-profiles-daemon:0.21-1 -// powermgmt-base:1.37 -// powershell:7.5.0-1.deb -// ppp:2.4.9-1+1.1ubuntu4 -// pptp-linux:1.10.0-1build4 -// printer-driver-brlaser:6-3build2 -// printer-driver-c2esp:27-11ubuntu7 -// printer-driver-foo2zjs:20200505dfsg0-2ubuntu6 -// printer-driver-foo2zjs-common:20200505dfsg0-2ubuntu6 -// printer-driver-hpcups:3.23.12+dfsg0-0ubuntu5 -// printer-driver-m2300w:0.51-15build2 -// printer-driver-min12xxw:0.0.9-11build3 -// printer-driver-pnm2ppa:1.13+nondbs-0ubuntu10 -// printer-driver-postscript-hp:3.23.12+dfsg0-0ubuntu5 -// printer-driver-ptouch:1.7-1build2 -// printer-driver-pxljr:1.4+repack0-6build2 -// printer-driver-sag-gdi:0.1-8 -// printer-driver-splix:2.0.0+svn315-7fakesync1ubuntu1 -// procps:2:4.0.4-4ubuntu3.2 -// psmisc:23.7-1build1 -// publicsuffix:20231001.0357-0.1 -// python-apt-common:2.7.7ubuntu4 -// python-babel-localedata:2.10.3-3build1 -// python-is-python3:3.11.4-1 -// python3:3.12.3-0ubuntu2 -// python3-apport:2.28.1-0ubuntu3.5 -// python3-apt:2.7.7ubuntu4 -// python3-aptdaemon:1.1.1+bzr982-0ubuntu44 -// python3-aptdaemon.gtk3widgets:1.1.1+bzr982-0ubuntu44 -// python3-argcomplete:3.1.4-1ubuntu0.1 -// python3-attr:23.2.0-2 -// python3-babel:2.10.3-3build1 -// python3-blinker:1.7.0-1 -// python3-bpfcc:0.29.1+ds-1ubuntu7 -// python3-brlapi:6.6-4ubuntu5 -// python3-cairo:1.25.1-2build2 -// python3-certifi:2023.11.17-1 -// python3-cffi-backend:1.16.0-2build1 -// python3-chardet:5.2.0+dfsg-1 -// python3-click:8.1.6-2 -// python3-colorama:0.4.6-4 -// python3-commandnotfound:23.04.0 -// python3-configobj:5.0.8-3 -// python3-cryptography:41.0.7-4ubuntu0.1 -// python3-cups:2.0.1-5build6 -// python3-cupshelpers:1.5.18-1ubuntu9 -// python3-dateutil:2.8.2-3ubuntu1 -// python3-dbus:1.3.2-5build3 -// python3-debconf:1.5.86ubuntu1 -// python3-debian:0.1.49ubuntu2 -// python3-defer:1.0.6-2.1ubuntu1 -// python3-dev:3.12.3-0ubuntu2 -// python3-distro:1.9.0-1 -// python3-distro-info:1.7build1 -// python3-distupgrade:1:24.04.26 -// python3-gdbm:3.12.3-0ubuntu1 -// python3-gi:3.48.2-1 -// python3-httplib2:0.20.4-3 -// python3-ibus-1.0:1.5.29-2 -// python3-idna:3.6-2ubuntu0.1 -// python3-jinja2:3.1.2-1ubuntu1.3 -// python3-json-pointer:2.0-0ubuntu1 -// python3-jsonpatch:1.32-3 -// python3-jsonschema:4.10.3-2ubuntu1 -// python3-jwt:2.7.0-1 -// python3-launchpadlib:1.11.0-6 -// python3-lazr.restfulclient:0.14.6-1 -// python3-lazr.uri:1.0.6-3 -// python3-louis:3.29.0-1build1 -// python3-markdown-it:3.0.0-2 -// python3-markupsafe:2.1.5-1build2 -// python3-mdurl:0.1.2-1 -// python3-minimal:3.12.3-0ubuntu2 -// python3-netaddr:0.8.0-2ubuntu1 -// python3-netifaces:0.11.0-2build3 -// python3-netplan:1.1.1-1~ubuntu24.04.1 -// python3-oauthlib:3.2.2-1 -// python3-olefile:0.46-3 -// python3-packaging:24.0-1 -// python3-pexpect:4.9-2 -// python3-pil:10.2.0-1ubuntu1 -// python3-pip-whl:24.0+dfsg-1ubuntu1.1 -// python3-pkg-resources:68.1.2-2ubuntu1.1 -// python3-platformdirs:4.2.0-1 -// python3-problem-report:2.28.1-0ubuntu3.5 -// python3-psutil:5.9.8-2build2 -// python3-ptyprocess:0.7.0-5 -// python3-pygments:2.17.2+dfsg-1 -// python3-pyparsing:3.1.1-1 -// python3-pyrsistent:0.20.0-1build2 -// python3-requests:2.31.0+dfsg-1ubuntu1 -// python3-rich:13.7.1-1 -// python3-serial:3.5-2 -// python3-setuptools-whl:68.1.2-2ubuntu1.1 -// python3-six:1.16.0-4 -// python3-software-properties:0.99.49.1 -// python3-speechd:0.12.0~rc2-2build3 -// python3-sss:2.9.4-1.1ubuntu6.2 -// python3-systemd:235-1build4 -// python3-typing-extensions:4.10.0-1 -// python3-tz:2024.1-2 -// python3-update-manager:1:24.04.9 -// python3-urllib3:2.0.7-1ubuntu0.1 -// python3-userpath:1.9.1-1 -// python3-venv:3.12.3-0ubuntu2 -// python3-wadllib:1.3.6-5 -// python3-xdg:0.28-2 -// python3-xkit:0.5.0ubuntu6 -// python3-yaml:6.0.1-2build2 -// python3.12:3.12.3-1ubuntu0.5 -// python3.12-dev:3.12.3-1ubuntu0.5 -// python3.12-minimal:3.12.3-1ubuntu0.5 -// python3.12-venv:3.12.3-1ubuntu0.5 -// readline-common:8.2-4build1 -// rfkill:2.39.3-9ubuntu6.2 -// rpcsvc-proto:1.4.2-0ubuntu7 -// rsync:3.2.7-1ubuntu1.2 -// rsyslog:8.2312.0-3ubuntu9 -// rtkit:0.13-5build1 -// rygel:0.42.5-1ubuntu3 -// samba-libs:2:4.19.5+dfsg-4ubuntu9 -// sane-airscan:0.99.29-0ubuntu4 -// sane-utils:1.2.1-7build4 -// sbsigntool:0.9.4-3.1ubuntu7 -// screen-resolution-extra:0.18.3 -// seahorse:43.0-3build2 -// secureboot-db:1.9build1 -// sed:4.9-2build1 -// sensible-utils:0.0.22 -// session-migration:0.3.9build1 -// sgml-base:1.31 -// sgml-data:2.0.11+nmu1 -// shared-mime-info:2.4-4 -// shim-signed:1.58+15.8-0ubuntu1 -// slirp4netns:1.2.1-1build2 -// snapd:2.67.1+24.04 -// software-properties-common:0.99.49.1 -// software-properties-gtk:0.99.49.1 -// sound-icons:0.1-8 -// sound-theme-freedesktop:0.8-2ubuntu1 -// speech-dispatcher:0.12.0~rc2-2build3 -// speech-dispatcher-audio-plugins:0.12.0~rc2-2build3 -// speech-dispatcher-espeak-ng:0.12.0~rc2-2build3 -// spice-vdagent:0.22.1-4build3 -// squashfs-tools:1:4.6.1-1build1 -// ssh-import-id:5.11-0ubuntu2.24.04.1 -// ssl-cert:1.1.2ubuntu1 -// sssd:2.9.4-1.1ubuntu6.2 -// sssd-ad:2.9.4-1.1ubuntu6.2 -// sssd-ad-common:2.9.4-1.1ubuntu6.2 -// sssd-common:2.9.4-1.1ubuntu6.2 -// sssd-ipa:2.9.4-1.1ubuntu6.2 -// sssd-krb5:2.9.4-1.1ubuntu6.2 -// sssd-krb5-common:2.9.4-1.1ubuntu6.2 -// sssd-ldap:2.9.4-1.1ubuntu6.2 -// sssd-proxy:2.9.4-1.1ubuntu6.2 -// strace:6.8-0ubuntu2 -// sudo:1.9.15p5-3ubuntu5 -// switcheroo-control:2.6-2build2 -// sysstat:12.6.1-2 -// system-config-printer-common:1.5.18-1ubuntu9 -// system-config-printer-udev:1.5.18-1ubuntu9 -// systemd:255.4-1ubuntu8.6 -// systemd-dev:255.4-1ubuntu8.6 -// systemd-hwe-hwdb:255.1.4 -// systemd-oomd:255.4-1ubuntu8.6 -// systemd-resolved:255.4-1ubuntu8.6 -// systemd-sysv:255.4-1ubuntu8.6 -// systemd-timesyncd:255.4-1ubuntu8.6 -// sysvinit-utils:3.08-6ubuntu3 -// t1utils:1.41-4build3 -// tar:1.35+dfsg-3build1 -// tcl:8.6.14build1 -// tcl8.6:8.6.14+dfsg-1build1 -// tcpdump:4.99.4-3ubuntu4 -// tecla:46.0-1build1 -// telnet:0.17+2.5-3ubuntu4 -// tex-common:6.18 -// texlive-base:2023.20240207-1 -// texlive-binaries:2023.20230311.66589-9build3 -// thermald:2.5.6-2ubuntu0.24.04.2 -// time:1.9-0.2build1 -// tnftp:20230507-2build3 -// tpm-udev:0.6ubuntu1 -// trace-cmd:3.2-1ubuntu2 -// tracker:3.7.1-1build1 -// tracker-extract:3.7.1-1build1 -// tracker-miner-fs:3.7.1-1build1 -// tzdata:2024b-0ubuntu0.24.04.1 -// ubuntu-advantage-desktop-daemon:1.11ubuntu0.1 -// ubuntu-desktop-minimal:1.539.2 -// ubuntu-docs:24.04.2 -// ubuntu-drivers-common:1:0.9.7.6ubuntu3.1 -// ubuntu-kernel-accessories:1.539.2 -// ubuntu-keyring:2023.11.28.1 -// ubuntu-minimal:1.539.2 -// ubuntu-mono:24.04-0ubuntu1 -// ubuntu-pro-client:34~24.04 -// ubuntu-pro-client-l10n:34~24.04 -// ubuntu-release-upgrader-core:1:24.04.26 -// ubuntu-release-upgrader-gtk:1:24.04.26 -// ubuntu-report:1.7.3ubuntu0.24.04.2 -// ubuntu-session:46.0-1ubuntu4 -// ubuntu-settings:24.04.5 -// ubuntu-standard:1.539.2 -// ubuntu-wallpapers:24.04.2 -// ubuntu-wallpapers-noble:24.04.2 -// ucf:3.0043+nmu1 -// udev:255.4-1ubuntu8.6 -// udisks2:2.10.1-6ubuntu1 -// ufw:0.36.2-6 -// unattended-upgrades:2.9.1+nmu4ubuntu1 -// unzip:6.0-28ubuntu4.1 -// update-inetd:4.53 -// update-manager:1:24.04.9 -// update-manager-core:1:24.04.9 -// update-notifier:3.192.68build3 -// update-notifier-common:3.192.68build3 -// upower:1.90.3-1 -// usb-modeswitch:2.6.1-3ubuntu3 -// usb-modeswitch-data:20191128-6 -// usb.ids:2024.03.18-1 -// usbmuxd:1.1.1-5~exp3ubuntu2 -// usbutils:1:017-3build1 -// util-linux:2.39.3-9ubuntu6.2 -// uuid-dev:2.39.3-9ubuntu6.2 -// uuid-runtime:2.39.3-9ubuntu6.2 -// vdpau-driver-all:1.5-2build1 -// vim-common:2:9.1.0016-1ubuntu7.6 -// vim-tiny:2:9.1.0016-1ubuntu7.6 -// wamerican:2020.12.07-2 -// wbritish:2020.12.07-2 -// webp-pixbuf-loader:0.2.4-2build2 -// wget:1.21.4-1ubuntu4.1 -// whiptail:0.52.24-2ubuntu2 -// whoopsie:0.2.77build3 -// whoopsie-preferences:23build3 -// wireless-regdb:2024.07.04-0ubuntu1~24.04.1 -// wireless-tools:30~pre9-16.1ubuntu2 -// wireplumber:0.4.17-1ubuntu4 -// wpasupplicant:2:2.10-21ubuntu0.2 -// x11-apps:7.7+11build3 -// x11-common:1:7.7+23ubuntu3 -// x11-session-utils:7.7+6build2 -// x11-utils:7.7+6build2 -// x11-xkb-utils:7.7+8build2 -// x11-xserver-utils:7.7+10build2 -// xauth:1:1.1.2-1build1 -// xbitmaps:1.1.1-2.2 -// xbrlapi:6.6-4ubuntu5 -// xcursor-themes:1.0.6-0ubuntu1 -// xcvt:0.1.2-1build1 -// xdg-dbus-proxy:0.1.5-1build2 -// xdg-desktop-portal:1.18.4-1ubuntu2.24.04.1 -// xdg-desktop-portal-gnome:46.2-0ubuntu1 -// xdg-desktop-portal-gtk:1.15.1-1build2 -// xdg-user-dirs:0.18-1build1 -// xdg-user-dirs-gtk:0.11-1build2 -// xdg-utils:1.1.3-4.1ubuntu3 -// xfonts-base:1:1.0.5+nmu1 -// xfonts-encodings:1:1.0.5-0ubuntu2 -// xfonts-scalable:1:1.0.3-1.3 -// xfonts-utils:1:7.7+6build3 -// xfsprogs:6.6.0-1ubuntu2.1 -// xinit:1.4.1-0ubuntu5 -// xinput:1.6.4-1build1 -// xkb-data:2.41-2ubuntu1.1 -// xml-core:0.19 -// xorg:1:7.7+23ubuntu3 -// xorg-docs-core:1:1.7.1-1.2 -// xserver-common:2:21.1.12-1ubuntu1.2 -// xserver-xephyr:2:21.1.12-1ubuntu1.2 -// xserver-xorg:1:7.7+23ubuntu3 -// xserver-xorg-core:2:21.1.12-1ubuntu1.2 -// xserver-xorg-input-all:1:7.7+23ubuntu3 -// xserver-xorg-input-libinput:1.4.0-1build1 -// xserver-xorg-input-wacom:1:1.2.0-1ubuntu2 -// xserver-xorg-legacy:2:21.1.12-1ubuntu1.2 -// xserver-xorg-video-all:1:7.7+23ubuntu3 -// xserver-xorg-video-amdgpu:23.0.0-1build1 -// xserver-xorg-video-ati:1:22.0.0-1build1 -// xserver-xorg-video-fbdev:1:0.5.0-2build2 -// xserver-xorg-video-intel:2:2.99.917+git20210115-1build1 -// xserver-xorg-video-nouveau:1:1.0.17-2build1 -// xserver-xorg-video-nvidia-550:550.144.03-0ubuntu1 -// xserver-xorg-video-qxl:0.1.6-1build1 -// xserver-xorg-video-radeon:1:22.0.0-1build1 -// xserver-xorg-video-vesa:1:2.6.0-1 -// xserver-xorg-video-vmware:1:13.4.0-1build1 -// xwayland:2:23.2.6-1ubuntu0.4 -// xxd:2:9.1.0016-1ubuntu7.6 -// xz-utils:5.6.1+really5.4.5-1build0.1 -// yaru-theme-gnome-shell:24.04.2-0ubuntu1 -// yaru-theme-gtk:24.04.2-0ubuntu1 -// yaru-theme-icon:24.04.2-0ubuntu1 -// yaru-theme-sound:24.04.2-0ubuntu1 -// yelp:42.2-1build2 -// yelp-xsl:42.1-2 -// zenity:4.0.1-1build3 -// zenity-common:4.0.1-1build3 -// zip:3.0-13ubuntu0.2 -// zlib1g:1:1.3.dfsg-3.1ubuntu2.1 -// zlib1g-dev:1:1.3.dfsg-3.1ubuntu2.1 -// zstd:1.5.5+dfsg2-2build1.1 +func TestGetPackageWithSpecialCharactersInVersion(t *testing.T) { + logger := hclog.New(&hclog.LoggerOptions{ + Level: hclog.Error, + JSONFormat: true, + }) + packages := getPackages(logger, "mycoolpackage 1.2.3-1~ubuntu1\n") + + version := packages["mycoolpackage"].(string) + assert.Equal(t, version, "1.2.3") + + packages = getPackages(logger, "mycoolpackage 1.2-1ubuntu1+foo\n") + + version = packages["mycoolpackage"].(string) + assert.Equal(t, version, "1.2.0") + + packages = getPackages(logger, "mycoolpackage 25.2.35+ubuntu1\n") + + version = packages["mycoolpackage"].(string) + assert.Equal(t, version, "25.2.35") +} + +func TestGetPackageWithStringCharsInVersion(t *testing.T) { + logger := hclog.New(&hclog.LoggerOptions{ + Level: hclog.Error, + JSONFormat: true, + }) + packages := getPackages(logger, "mycoolpackage 1.2.3ubuntu1\n") + + version := packages["mycoolpackage"].(string) + assert.Equal(t, version, "1.2.3") + + packages = getPackages(logger, "mycoolpackage 25.22ubuntu1\n") + + version = packages["mycoolpackage"].(string) + assert.Equal(t, version, "25.22.0") + + packages = getPackages(logger, "mycoolpackage 25.22ubuntu1.44mystring1\n") + + version = packages["mycoolpackage"].(string) + assert.Equal(t, version, "25.22.44") +} + +func TestGetPackageWithLeadingZeroesInVersion(t *testing.T) { + logger := hclog.New(&hclog.LoggerOptions{ + Level: hclog.Error, + JSONFormat: true, + }) + packages := getPackages(logger, "mycoolpackage 01.2.3\n") + + version := packages["mycoolpackage"].(string) + assert.Equal(t, version, "1.2.3") + + packages = getPackages(logger, "mycoolpackage 25.02\n") + + version = packages["mycoolpackage"].(string) + assert.Equal(t, version, "25.2.0") +} + +func TestGetPackageWithoutThreeNumsInVersion(t *testing.T) { + logger := hclog.New(&hclog.LoggerOptions{ + Level: hclog.Error, + JSONFormat: true, + }) + packages := getPackages(logger, "mycoolpackage 1.2\n") + + version := packages["mycoolpackage"].(string) + assert.Equal(t, version, "1.2.0") + + packages = getPackages(logger, "mycoolpackage 25.2.5.1.6\n") + + version = packages["mycoolpackage"].(string) + assert.Equal(t, version, "25.2.5") +} + +func TestGetMultiplePackagesFromRealExamples(t *testing.T) { + // Setup + logger := hclog.New(&hclog.LoggerOptions{ + Level: hclog.Error, + JSONFormat: true, + }) + + packageStrings := []string{ + "accountsservice 23.13.9-2ubuntu6", + "acl 2.3.2-1build1.1", + "adduser 3.137ubuntu1", + "adwaita-icon-theme 46.0-1", + "alsa-base 1.0.25+dfsg-0ubuntu7", + "amd64-microcode 3.20231019.1ubuntu2.1", + "apg 2.2.3.dfsg.1-5build3", + "g++ 4:13.2.0-7ubuntu1", + "g++-13-x86-64-linux-gnu 13.3.0-6ubuntu2~24.04", + "gir1.2-gmenu-3.0 3.36.0-1.1ubuntu3", + "gir1.2-upowerglib-1.0 1.90.3-1", + "heif-gdk-pixbuf 1.17.6-1ubuntu4.1", + "libatomic1 14.2.0-4ubuntu2~24.04", + "libatopology2t64 1.2.11-1build2", + "libatspi2.0-0t64 2.52.0-1build1", + "libattr1 1:2.5.2-1build1.1", + "libaudit-common 1:3.1.2-2.1build1.1", + "libcairo-gobject-perl 1.005-4build3", + "libdbusmenu-glib4 18.10.20180917~bzr492+repack1-3.1ubuntu5", // TODO: Should we have 20180917 as a patch? + "libjavascriptcoregtk-4.1-0 2.46.6-0ubuntu0.24.04.1", + "libplymouth5 24.004.60-1ubuntu7.1", // TODO: Should we definitely remove leading zeros on the 004? + "libplist-2.0-4 2.3.0-1~exp2build2", + "make 4.3-4.1build2", + "mongodb-mongosh 2.4.2", + "nano 7.2-2ubuntu0.1", + "nvidia-driver-550 550.144.03-0ubuntu1", + "openjdk-21-jre 21.0.6+7-1~24.04.1", + "openssh-server 1:9.6p1-3ubuntu13.8", + "printer-driver-foo2zjs 20200505dfsg0-2ubuntu6", + } + + // Get the packages + packages := getPackages(logger, strings.Join(packageStrings, "\n")) + + // Assertions + assert.Equal(t, len(packages), len(packageStrings)) + + // Check the correct packages are in the map + for expectedPkg, expectedVersion := range map[string]string{ + "accountsservice": "23.13.9", + "acl": "2.3.2", + "adduser": "3.137.0", + "adwaita-icon-theme": "46.0.0", + "alsa-base": "1.0.25", + "amd64-microcode": "3.20231019.1", + "apg": "2.2.3", + "g++": "13.2.0", + "g++-13-x86-64-linux-gnu": "13.3.0", + "gir1.2-gmenu-3.0": "3.36.0", + "gir1.2-upowerglib-1.0": "1.90.3", + "heif-gdk-pixbuf": "1.17.6", + "libatomic1": "14.2.0", + "libatopology2t64": "1.2.11", + "libatspi2.0-0t64": "2.52.0", + "libattr1": "2.5.2", + "libaudit-common": "3.1.2", + "libcairo-gobject-perl": "1.5.0", + "libdbusmenu-glib4": "18.10.20180917", + "libjavascriptcoregtk-4.1-0": "2.46.6", + "libplist-2.0-4": "2.3.0", + "libplymouth5": "24.4.60", + "make": "4.3.0", + "mongodb-mongosh": "2.4.2", + "nano": "7.2.0", + "nvidia-driver-550": "550.144.3", + "openjdk-21-jre": "21.0.6", + "openssh-server": "9.6.0", + "printer-driver-foo2zjs": "20200505.0.0", + } { + assert.Contains(t, packages, expectedPkg) + version := packages[expectedPkg].(string) + assert.Equal(t, version, expectedVersion) + } +} From 64f5c974d6abde1e3823617deafb62bcbfe9ffa6 Mon Sep 17 00:00:00 2001 From: Steven Trotter Date: Wed, 26 Mar 2025 12:47:05 +0000 Subject: [PATCH 3/4] Minor tweak, missed the steps for data collection previously --- internal/packages.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/internal/packages.go b/internal/packages.go index 08abed0..6e63858 100644 --- a/internal/packages.go +++ b/internal/packages.go @@ -14,6 +14,12 @@ import ( func GetInstalledPackages(logger hclog.Logger) (map[string]any, []*proto.Step, error) { steps := make([]*proto.Step, 0) + steps = append(steps, &proto.Step{ + Title: "Get installed packages", + Description: "Get the list of installed package names and versions on the host using the `dpkg-query` command. This will be used to evaluate the versions of installed packages against the policies supplied.", + Remarks: StringAddressed("`dpkg-query -W -f='${Package} ${Version}' is used to collect the installed packages and their versions."), + }) + command := `dpkg-query -W -f='${Package} ${Version}\n'` logger.Debug(fmt.Sprintf("RUNNING COMMAND: %s", command)) dpkgCmd := exec.Command("bash", "-c", command) From 7329dab59b47987e5cd843f0fa844120080c9449 Mon Sep 17 00:00:00 2001 From: Steven Trotter Date: Wed, 26 Mar 2025 13:29:34 +0000 Subject: [PATCH 4/4] Added more steps to indicate the successful parsing of versions --- internal/packages.go | 15 ++++++++++---- internal/packages_test.go | 43 ++++++++++++++++++++++++++------------- 2 files changed, 40 insertions(+), 18 deletions(-) diff --git a/internal/packages.go b/internal/packages.go index 6e63858..491be06 100644 --- a/internal/packages.go +++ b/internal/packages.go @@ -17,7 +17,7 @@ func GetInstalledPackages(logger hclog.Logger) (map[string]any, []*proto.Step, e steps = append(steps, &proto.Step{ Title: "Get installed packages", Description: "Get the list of installed package names and versions on the host using the `dpkg-query` command. This will be used to evaluate the versions of installed packages against the policies supplied.", - Remarks: StringAddressed("`dpkg-query -W -f='${Package} ${Version}' is used to collect the installed packages and their versions."), + Remarks: StringAddressed("`dpkg-query -W -f='${Package} ${Version}'` is used to collect the installed packages and their versions."), }) command := `dpkg-query -W -f='${Package} ${Version}\n'` @@ -40,12 +40,13 @@ func GetInstalledPackages(logger hclog.Logger) (map[string]any, []*proto.Step, e } // Parse the output into a map - packages := getPackages(logger, dpkgStdout.String()) + packages, newSteps := getPackages(logger, dpkgStdout.String()) + steps = append(steps, newSteps...) return packages, steps, nil } -func getPackages(logger hclog.Logger, packageData string) map[string]any { +func getPackages(logger hclog.Logger, packageData string) (map[string]any, []*proto.Step) { packages := make(map[string]any) for _, line := range strings.Split(packageData, "\n") { @@ -65,7 +66,13 @@ func getPackages(logger hclog.Logger, packageData string) map[string]any { packages[packageName] = packageVersion } - return packages + step := &proto.Step{ + Title: "Retrieved all installed packages and normalised versions", + Description: "Retrieved all the installed packages and their versions on the host. The versions are all normalised to a standard format for comparison of the format `x.y.z` where `x`, `y` and `z` are all integers and intended to match the standard SemVer pattern of `major.minor.patch`.", + Remarks: StringAddressed(fmt.Sprintf("Normalized %d package versions", len(packages))), + } + + return packages, []*proto.Step{step} } func getVersion(version string) string { diff --git a/internal/packages_test.go b/internal/packages_test.go index 5e84be7..808bc07 100644 --- a/internal/packages_test.go +++ b/internal/packages_test.go @@ -13,10 +13,11 @@ func TestGetSimplePackage(t *testing.T) { Level: hclog.Error, JSONFormat: true, }) - packages := getPackages(logger, "mycoolpackage 1.2.3\n") + packages, steps := getPackages(logger, "mycoolpackage 1.2.3\n") version := packages["mycoolpackage"].(string) assert.Equal(t, version, "1.2.3") + assert.Len(t, steps, 1) } func TestGetPackageWithEpochVersion(t *testing.T) { @@ -24,15 +25,17 @@ func TestGetPackageWithEpochVersion(t *testing.T) { Level: hclog.Error, JSONFormat: true, }) - packages := getPackages(logger, "mycoolpackage 2:1.2.3\n") + packages, steps := getPackages(logger, "mycoolpackage 2:1.2.3\n") version := packages["mycoolpackage"].(string) assert.Equal(t, version, "1.2.3") + assert.Len(t, steps, 1) - packages = getPackages(logger, "mycoolpackage 24:1.2\n") + packages, steps = getPackages(logger, "mycoolpackage 24:1.2\n") version = packages["mycoolpackage"].(string) assert.Equal(t, version, "1.2.0") + assert.Len(t, steps, 1) } func TestGetPackageWithSpecialCharactersInVersion(t *testing.T) { @@ -40,17 +43,19 @@ func TestGetPackageWithSpecialCharactersInVersion(t *testing.T) { Level: hclog.Error, JSONFormat: true, }) - packages := getPackages(logger, "mycoolpackage 1.2.3-1~ubuntu1\n") + packages, steps := getPackages(logger, "mycoolpackage 1.2.3-1~ubuntu1\n") version := packages["mycoolpackage"].(string) assert.Equal(t, version, "1.2.3") + assert.Len(t, steps, 1) - packages = getPackages(logger, "mycoolpackage 1.2-1ubuntu1+foo\n") + packages, steps = getPackages(logger, "mycoolpackage 1.2-1ubuntu1+foo\n") version = packages["mycoolpackage"].(string) assert.Equal(t, version, "1.2.0") + assert.Len(t, steps, 1) - packages = getPackages(logger, "mycoolpackage 25.2.35+ubuntu1\n") + packages, steps = getPackages(logger, "mycoolpackage 25.2.35+ubuntu1\n") version = packages["mycoolpackage"].(string) assert.Equal(t, version, "25.2.35") @@ -61,20 +66,23 @@ func TestGetPackageWithStringCharsInVersion(t *testing.T) { Level: hclog.Error, JSONFormat: true, }) - packages := getPackages(logger, "mycoolpackage 1.2.3ubuntu1\n") + packages, steps := getPackages(logger, "mycoolpackage 1.2.3ubuntu1\n") version := packages["mycoolpackage"].(string) assert.Equal(t, version, "1.2.3") + assert.Len(t, steps, 1) - packages = getPackages(logger, "mycoolpackage 25.22ubuntu1\n") + packages, steps = getPackages(logger, "mycoolpackage 25.22ubuntu1\n") version = packages["mycoolpackage"].(string) assert.Equal(t, version, "25.22.0") + assert.Len(t, steps, 1) - packages = getPackages(logger, "mycoolpackage 25.22ubuntu1.44mystring1\n") + packages, steps = getPackages(logger, "mycoolpackage 25.22ubuntu1.44mystring1\n") version = packages["mycoolpackage"].(string) assert.Equal(t, version, "25.22.44") + assert.Len(t, steps, 1) } func TestGetPackageWithLeadingZeroesInVersion(t *testing.T) { @@ -82,15 +90,17 @@ func TestGetPackageWithLeadingZeroesInVersion(t *testing.T) { Level: hclog.Error, JSONFormat: true, }) - packages := getPackages(logger, "mycoolpackage 01.2.3\n") + packages, steps := getPackages(logger, "mycoolpackage 01.2.3\n") version := packages["mycoolpackage"].(string) assert.Equal(t, version, "1.2.3") + assert.Len(t, steps, 1) - packages = getPackages(logger, "mycoolpackage 25.02\n") + packages, steps = getPackages(logger, "mycoolpackage 25.02\n") version = packages["mycoolpackage"].(string) assert.Equal(t, version, "25.2.0") + assert.Len(t, steps, 1) } func TestGetPackageWithoutThreeNumsInVersion(t *testing.T) { @@ -98,15 +108,17 @@ func TestGetPackageWithoutThreeNumsInVersion(t *testing.T) { Level: hclog.Error, JSONFormat: true, }) - packages := getPackages(logger, "mycoolpackage 1.2\n") + packages, steps := getPackages(logger, "mycoolpackage 1.2\n") version := packages["mycoolpackage"].(string) assert.Equal(t, version, "1.2.0") + assert.Len(t, steps, 1) - packages = getPackages(logger, "mycoolpackage 25.2.5.1.6\n") + packages, steps = getPackages(logger, "mycoolpackage 25.2.5.1.6\n") version = packages["mycoolpackage"].(string) assert.Equal(t, version, "25.2.5") + assert.Len(t, steps, 1) } func TestGetMultiplePackagesFromRealExamples(t *testing.T) { @@ -149,7 +161,7 @@ func TestGetMultiplePackagesFromRealExamples(t *testing.T) { } // Get the packages - packages := getPackages(logger, strings.Join(packageStrings, "\n")) + packages, steps := getPackages(logger, strings.Join(packageStrings, "\n")) // Assertions assert.Equal(t, len(packages), len(packageStrings)) @@ -190,4 +202,7 @@ func TestGetMultiplePackagesFromRealExamples(t *testing.T) { version := packages[expectedPkg].(string) assert.Equal(t, version, expectedVersion) } + + assert.Len(t, steps, 1) + assert.Contains(t, steps[0].GetRemarks(), "29 package") }