Skip to content

Commit 93bb842

Browse files
committed
feat: add Package::Dpkg module to project
So you can easily get desktop config Add Ubuntu manifest samples
1 parent 2c2973a commit 93bb842

16 files changed

+14618
-0
lines changed

lib/rootfs/package.rb

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# frozen_string_literal: true
2+
3+
require_relative "package/dpkg"
4+
5+
module RootFS
6+
module Package
7+
end
8+
end

lib/rootfs/package/dpkg.rb

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# frozen_string_literal: true
2+
3+
require "libexec"
4+
5+
module RootFS
6+
module Package
7+
module Dpkg
8+
# https://manpages.ubuntu.com/manpages/jammy/man1/dpkg-query.1.html
9+
def installed
10+
list = []
11+
Libexec.each_line("dpkg-query -f '${binary:Package}\n' -W") do |line|
12+
list.push(line.chomp)
13+
end
14+
list
15+
end
16+
17+
def installed_by_user
18+
list = []
19+
Libexec.each_line("apt-mark showmanual") do |line|
20+
list.push(line.chomp)
21+
end
22+
list
23+
end
24+
25+
def generate_manifest(file = nil)
26+
if file
27+
Libexec.run("dpkg-query -f '${binary:Package}\t${Version}\n' -W > #{file}")
28+
else
29+
Libexec.run("dpkg-query -f '${binary:Package}\t${Version}\n' -W")
30+
end
31+
end
32+
33+
def parse_manifest(file, &block)
34+
IO.readlines(file, &block)
35+
end
36+
37+
def manifest_package(file)
38+
list = []
39+
IO.readlines(file).each do |line|
40+
pkg = line.include?("\t") ? line.split("\t")[0] : line.split(" ")[0]
41+
list.push(pkg)
42+
end
43+
list
44+
end
45+
end
46+
end
47+
end

lib/rootfs/package/dpkg_test.rb

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# frozen_string_literal: true
2+
3+
require_relative "dpkg"
4+
5+
class MyClass
6+
extend RootFS::Package::Dpkg
7+
include RootFS::Package::Dpkg
8+
end
9+
10+
u = MyClass.new
11+
12+
# pp u.installed
13+
# u.generate_manifest
14+
# u.generate_manifest(".rspec_status")
15+
# u.parse_manifest(".rspec_status").each do |line|
16+
# puts line.split("\t").first
17+
# end
18+
# puts u.manifest_package(".rspec_status") - u.installed_by_user
19+
20+
# raspi_server_pkgs = u.manifest_package("manifest/rel/ubuntu-22.04.1-preinstalled-server-arm64+raspi.manifest")
21+
# raspi_desktop_pkgs = u.manifest_package("manifest/rel/ubuntu-22.04.1-preinstalled-desktop-arm64+raspi.manifest")
22+
23+
# raspi_desktop = raspi_desktop_pkgs - raspi_server_pkgs
24+
# puts raspi_desktop
25+
# puts server_pkgs - desktop_pkgs
26+
27+
# comm_desktop = raspi_desktop.filter do |pkg|
28+
# pkg != "pi-bluetooth" &&
29+
# !pkg.include?("raspi") &&
30+
# !pkg.include?("oem") &&
31+
# !pkg.include?("rpi")
32+
# end
33+
# puts comm_desktop
34+
35+
base_pkg = u.manifest_package("manifest/jammy-base-arm64.manifest")
36+
live_server_pkgs = u.manifest_package("manifest/jammy-live-server-arm64.manifest")
37+
live_desktop_pkgs = u.manifest_package("manifest/jammy-desktop-arm64.manifest")
38+
39+
server = live_server_pkgs - base_pkg
40+
desktop = live_desktop_pkgs - base_pkg
41+
42+
# puts server
43+
puts desktop
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
adduser 3.118ubuntu5
2+
apt 2.4.8
3+
base-files 12ubuntu4.2
4+
base-passwd 3.5.52build1
5+
bash 5.1-6ubuntu1
6+
bsdutils 1:2.37.2-4ubuntu3
7+
coreutils 8.32-4.1ubuntu1
8+
dash 0.5.11+git20210903+057cd650a4ed-3build1
9+
debconf 1.5.79ubuntu1
10+
debianutils 5.5-1ubuntu2
11+
diffutils 1:3.8-0ubuntu2
12+
dpkg 1.21.1ubuntu2.1
13+
e2fsprogs 1.46.5-2ubuntu1.1
14+
findutils 4.8.0-1ubuntu3
15+
gcc-12-base:arm64 12.1.0-2ubuntu1~22.04
16+
gpgv 2.2.27-3ubuntu2.1
17+
grep 3.7-1build1
18+
gzip 1.10-4ubuntu4.1
19+
hostname 3.23ubuntu2
20+
init-system-helpers 1.62
21+
libacl1:arm64 2.3.1-1
22+
libapt-pkg6.0:arm64 2.4.8
23+
libattr1:arm64 1:2.5.1-1build1
24+
libaudit-common 1:3.0.7-1build1
25+
libaudit1:arm64 1:3.0.7-1build1
26+
libblkid1:arm64 2.37.2-4ubuntu3
27+
libbz2-1.0:arm64 1.0.8-5build1
28+
libc-bin 2.35-0ubuntu3.1
29+
libc6:arm64 2.35-0ubuntu3.1
30+
libcap-ng0:arm64 0.7.9-2.2build3
31+
libcap2:arm64 1:2.44-1build3
32+
libcom-err2:arm64 1.46.5-2ubuntu1.1
33+
libcrypt1:arm64 1:4.4.27-1
34+
libdb5.3:arm64 5.3.28+dfsg1-0.8ubuntu3
35+
libdebconfclient0:arm64 0.261ubuntu1
36+
libext2fs2:arm64 1.46.5-2ubuntu1.1
37+
libffi8:arm64 3.4.2-4
38+
libgcc-s1:arm64 12.1.0-2ubuntu1~22.04
39+
libgcrypt20:arm64 1.9.4-3ubuntu3
40+
libgmp10:arm64 2:6.2.1+dfsg-3ubuntu1
41+
libgnutls30:arm64 3.7.3-4ubuntu1.1
42+
libgpg-error0:arm64 1.43-3
43+
libgssapi-krb5-2:arm64 1.19.2-2
44+
libhogweed6:arm64 3.7.3-1build2
45+
libidn2-0:arm64 2.3.2-2build1
46+
libk5crypto3:arm64 1.19.2-2
47+
libkeyutils1:arm64 1.6.1-2ubuntu3
48+
libkrb5-3:arm64 1.19.2-2
49+
libkrb5support0:arm64 1.19.2-2
50+
liblz4-1:arm64 1.9.3-2build2
51+
liblzma5:arm64 5.2.5-2ubuntu1
52+
libmount1:arm64 2.37.2-4ubuntu3
53+
libncurses6:arm64 6.3-2
54+
libncursesw6:arm64 6.3-2
55+
libnettle8:arm64 3.7.3-1build2
56+
libnsl2:arm64 1.3.0-2build2
57+
libp11-kit0:arm64 0.24.0-6build1
58+
libpam-modules:arm64 1.4.0-11ubuntu2
59+
libpam-modules-bin 1.4.0-11ubuntu2
60+
libpam-runtime 1.4.0-11ubuntu2
61+
libpam0g:arm64 1.4.0-11ubuntu2
62+
libpcre2-8-0:arm64 10.39-3ubuntu0.1
63+
libpcre3:arm64 2:8.39-13ubuntu0.22.04.1
64+
libprocps8:arm64 2:3.3.17-6ubuntu2
65+
libseccomp2:arm64 2.5.3-2ubuntu2
66+
libselinux1:arm64 3.3-1build2
67+
libsemanage-common 3.3-1build2
68+
libsemanage2:arm64 3.3-1build2
69+
libsepol2:arm64 3.3-1build1
70+
libsmartcols1:arm64 2.37.2-4ubuntu3
71+
libss2:arm64 1.46.5-2ubuntu1.1
72+
libssl3:arm64 3.0.2-0ubuntu1.7
73+
libstdc++6:arm64 12.1.0-2ubuntu1~22.04
74+
libsystemd0:arm64 249.11-0ubuntu3.6
75+
libtasn1-6:arm64 4.18.0-4build1
76+
libtinfo6:arm64 6.3-2
77+
libtirpc-common 1.3.2-2ubuntu0.1
78+
libtirpc3:arm64 1.3.2-2ubuntu0.1
79+
libudev1:arm64 249.11-0ubuntu3.6
80+
libunistring2:arm64 1.0-1
81+
libuuid1:arm64 2.37.2-4ubuntu3
82+
libxxhash0:arm64 0.8.1-1
83+
libzstd1:arm64 1.4.8+dfsg-3build1
84+
login 1:4.8.1-2ubuntu2.1
85+
logsave 1.46.5-2ubuntu1.1
86+
lsb-base 11.1.0ubuntu4
87+
mawk 1.3.4.20200120-3
88+
mount 2.37.2-4ubuntu3
89+
ncurses-base 6.3-2
90+
ncurses-bin 6.3-2
91+
passwd 1:4.8.1-2ubuntu2.1
92+
perl-base 5.34.0-3ubuntu1.1
93+
procps 2:3.3.17-6ubuntu2
94+
sed 4.8-1ubuntu2
95+
sensible-utils 0.0.17
96+
sysvinit-utils 3.01-1ubuntu1
97+
tar 1.34+dfsg-1build3
98+
ubuntu-keyring 2021.03.26
99+
usrmerge 25ubuntu2
100+
util-linux 2.37.2-4ubuntu3
101+
zlib1g:arm64 1:1.2.11.dfsg-2ubuntu9.2

0 commit comments

Comments
 (0)