По крайней мере по дебам можно сильно упростить
Например
Пакет openssh-server в списках apt выглядит так:
Package: openssh-server
Version: 1:8.9p1-3
Multi-Arch: foreign
Section: net
Source: openssh
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian OpenSSH Maintainers <debian-ssh@lists.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 1501
Provides: ssh-server
Pre-Depends: init-system-helpers (>= 1.54~)
Depends: adduser (>= 3.9), dpkg (>= 1.9.0), libpam-modules (>= 0.72-9), libpam-runtime (>= 0.76-14), lsb-base (>= 4.1+Debian3), openssh-client (= 1:8.9p1-3), openssh-sftp-server, procps, ucf (>= 0.28), debconf (>= 0.5) | debconf-2.0, libaudit1 (>= 1:2.2.1), libc6 (>= 2.34), libcom-err2 (>= 1.43.9), libcrypt1 (>= 1:4.1.0), libgssapi-krb5-2 (>= 1.17), libkrb5-3 (>= 1.13~alpha1+dfsg), libpam0g (>= 0.99.7.1), libselinux1 (>= 3.1~), libssl3 (>= 3.0.1), libsystemd0, libwrap0 (>= 7.6-4~), zlib1g (>= 1:1.1.4)
Recommends: default-logind | logind | libpam-systemd, ncurses-term, xauth, ssh-import-id
Suggests: molly-guard, monkeysphere, ssh-askpass, ufw
Conflicts: sftp, ssh-socks, ssh2
Replaces: openssh-client (<< 1:7.9p1-8), ssh, ssh-krb5
Filename: pool/main/o/openssh/openssh-server_8.9p1-3_amd64.deb
Size: 434398
MD5sum: 6573e8afd252817d276f333e94ec5dfe
SHA1: 753dd2bcb18a50a9a4526283ca44d81799f29ace
SHA256: 1e1d83c5325f1379b199990619827778209ad1f0994505fd8e27016e1527e525
SHA512: b63ab280ed8817ecaa5715e631ec4c130ac454bc118cadcc0401f04727e716d755ad6b78e52c2e26984a96286f0757892560f792d6350077f246f41d39c48087
Homepage: http://www.openssh.com/
Description: secure shell (SSH) server, for secure access from remote machines
Task: cloud-image, openssh-server
Description-md5: 842cc998cae371b9d8106c1696373919
однострочник
sed -n '/^Package/p; /^Depends/p; /^Filename/p; /^Size/p' Packages | sed 's/ ([^)]*)//g' | sed 's/Package://g; s/Depends:/|/g; s/Filename:/|/g; s/Size:/|/g' | sed ':a; N; $!ba; s/\n|/|/g' | tr -d ' ' | grep "^openssh-server|"
выдаст 4 блока, разделенных "|"
openssh-server|adduser,dpkg,libpam-modules,libpam-runtime,lsb-base,openssh-client,openssh-sftp-server,procps,ucf,debconf|debconf-2.0,libaudit1,libc6,libcom-err2,libcrypt1,libgssapi-krb5-2,libkrb5-3,libpam0g,libselinux1,libssl3,libsystemd0,libwrap0,zlib1g|pool/main/o/openssh/openssh-server_8.9p1-3_amd64.deb|434398
где
1 блок - имя пакета
2 - зависимости
3 - ссыка на пакет
4 - размер в байтах
Таким же образом проходимся по зависимостям и через sort -u пишем их либо в массив, либо в файл. Когда массив перестает изменяться - выкачиваем и обрабатываем. К примеру тем же pfs-utils
Для ускорения процесса лучше сразу списки apt преобразовать. У Барри это слишком долго происходит. Не ковырял, почему.
Меня другая проблема интересует больше, нежели зависимости. При создании модуля, а не его установке - добавление пользователей и групп, ну и вообще выполнение постинсталляционных файлов. При простой установке это проблем не вызывает. При создании модуля - я хз, как это сделать