view release on metacpan or search on metacpan
# BEST PRACTICES
Especially external packages often haven't all their real dependencies
configured. For those it is often necessary to manually add some packages
and bind mount points like the following:
## additional packages
Note that the examples are from Debian.
- fontconfig-config (select `/usr/share/fontconfig`)
- locales (select `/usr/share/locale/locale.alias`)
## additional bind mounts
Note that again the examples are from Debian.
- `/usr/share/fonts`
# KNOWN BUGS
Currently the package only supports Debian based distributions. If you're
using something different please get in touch to extend the support. (The
framework is already there, but the specific commands are missing, and
that's where I need some help.) Everything derived from Debian should be
easy to add. For RPM based distributions I've also already some ideas.
Also only X11 graphic and pulseaudio/pipewire sound has been tested so far.
lib/App/LXC/Container.pm view on Meta::CPAN
Especially external packages often haven't all their real dependencies
configured. For those it is often necessary to manually add some packages
and bind mount points like the following:
=head2 additional packages
Note that the examples are from Debian.
=over
=item fontconfig-config (select C</usr/share/fontconfig>)
=item locales (select C</usr/share/locale/locale.alias>)
=back
=head2 additional bind mounts
Note that again the examples are from Debian.
=over
=item C</usr/share/fonts>
=back
=head1 KNOWN BUGS
Currently the package only supports Debian based distributions. If you're
using something different please get in touch to extend the support. (The
framework is already there, but the specific commands are missing, and
that's where I need some help.) Everything derived from Debian should be
easy to add. For RPM based distributions I've also already some ideas.
lib/App/LXC/Container/Data/common.pm view on Meta::CPAN
_check_singleton(shift);
my @output =
('# This is an additional mount configuration file for X11 applications.',
'# See 40-MNT-default.mounts for more explanations.',
'',
'# common:',
'/dev/dri create=dir,rw,bind,optional',
'/usr/share/icons',
'/usr/share/mime',
'/usr/share/pixmaps',
'/var/cache/fontconfig',
'/var/lib/dbus');
return @output
}
#########################################################################
=head2 B<content_x11_packages> - return package configuration for X11
internal object-oriented implementation of the function
L<App::LXC::Container::Data::content_x11_packages>
=cut
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
sub content_x11_packages($)
{
_check_singleton(shift);
my @output =
('# list of mandatory packages needed for X11',
'# See 30-PKG-default.packages for more explanations.',
'fontconfig-config');
return @output;
}
#########################################################################
=head2 depends_on - find package of file
internal object-oriented implementation of the function
L<App::LXC::Container::Data::depends_on>
t/02-init.t view on Meta::CPAN
check_config_file('minimal default filter configuration',
$root_dir . '/conf/50-NOT-default.filter',
600,
\&App::LXC::Container::Data::content_default_filter,
'^# common:$.*^/usr/lib\s+nomerge$.*'
. '^/var/backups\s+ignore$.*^/var/log\s+empty$');
check_config_file('minimal X11 package configuration',
$root_dir . '/conf/60-PKG-X11.packages',
100,
\&App::LXC::Container::Data::content_x11_packages,
'^fontconfig-config$');
check_config_file('minimal X11 mount configuration',
$root_dir . '/conf/61-MNT-X11.mounts',
200,
\&App::LXC::Container::Data::content_x11_mounts,
'^/usr/share/icons$');
check_config_file('minimal audio package configuration',
$root_dir . '/conf/70-PKG-audio.packages',
100,
\&App::LXC::Container::Data::content_audio_packages,
'^# list of mandatory packages needed for audio$');
t/06-update.t view on Meta::CPAN
'31-PKG-network.packages',
'60-PKG-X11.packages',
'70-PKG-audio.packages',
'u2-PKG-update-test-2.packages',
'u1-PKG-update-test-1.packages'],
'packages test 4 has correct source list');
if (9 == @{$_->{packages}})
{
is_deeply($_->{packages},
[qw(coreutils dash libc-bin util-linux iproute2
fontconfig-config pulseaudio-utils chromium evince)],
'packages test 4 has correct content');
}
else
{
diag(join(' ', 'PACKAGES:', @{$_->{packages}}));
is_deeply($_->{packages},
[qw(coreutils libc-bin util-linux iproute2
fontconfig-config pulseaudio-utils chromium evince)],
'packages test 4a has correct content');
}
is($_->{package_source}{evince}, 'u2-PKG-update-test-2.packages',
'packages test 4 evince entry is correct');
is($_->{package_source}{'pulseaudio-utils'}, '70-PKG-audio.packages',
'packages test 4 evince entry is correct');
#########################################################################
# test for mounts files:
my $path2something = TMP_PATH . '/usr/bin/2something';
t/06-update.t view on Meta::CPAN
'lxc\.mount\.entry = /.+/bin/2something none create=file,ro,bind 0 0',
'',
'#+ 30-PKG-default\.packages #+',
'# coreutils',
'# dash',
'# libc-bin',
'# util-linux',
'#+ 31-PKG-network.packages #+',
'# iproute2',
'#+ 60-PKG-X11.packages #+',
'# fontconfig-config',
'#+ 70-PKG-audio\.packages #+',
'# pulseaudio-utils',
'#+ u2-PKG-update-test-2\.packages #+',
'# chromium',
'# evince',
'#+ u1-PKG-update-test-1\.packages #+',
'',
'#+ empty filters #+',
'lxc\.mount\.entry = tmpfs .+/tmp/var/log tmpfs create=dir,rw 0 0',
'lxc\.mount\.entry = tmpfs var/log tmpfs create=dir,rw 0 0',
t/mockup-files/dpkg.status view on Meta::CPAN
Package: bubblewrap
Status: install ok installed
Architecture: amd64
Depends: libc6 (>= 2.34), libcap2 (>= 1:2.10), libselinux1 (>= 3.1~)
Recommends: procps
Package: chromium-common
Status: install ok installed
Architecture: amd64
Depends: libc6 (>= 2.34), libdouble-conversion3 (>= 2.0.0), libjsoncpp25 (>= 1.9.5), libstdc++6 (>= 12), libx11-6, libxnvctrl0, zlib1g (>= 1:1.2.2), x11-utils, xdg-utils
Recommends: upower, libu2f-udev, libgl1-mesa-dri, chromium-sandbox, fonts-liberation, notification-daemon, system-config-printer
Package: dash
Essential: yes
Status: install ok installed
Architecture: amd64
Depends: debianutils (>= 5.6-0.1), dpkg (>= 1.19.1)
Pre-Depends: libc6 (>= 2.34)
Package: dconf-gsettings-backend
Status: install ok installed
t/mockup-files/dpkg.status view on Meta::CPAN
Architecture: amd64
Depends: evince-common (>= 43.1-2), gsettings-desktop-schemas, libevdocument3-4 (= 43.1-2+b1), libevview3-3 (= 43.1-2+b1), shared-mime-info, dconf-gsettings-backend | gsettings-backend, libatk1.0-0 (>= 1.12.4), libc6 (>= 2.34), libcairo-gobject2 (>= ...
Recommends: default-dbus-session-bus | dbus-session-bus
Suggests: gvfs, nautilus-sendto, poppler-data, unrar
Enhances: nautilus
Package: evince-common
Status: install ok installed
Architecture: all
Package: fontconfig
Status: install ok installed
Architecture: amd64
Depends: libc6 (>= 2.34), libfontconfig1 (>= 2.13.0), libfreetype6 (>= 2.2.1), fontconfig-config
Package: fontconfig-config
Status: install ok installed
Architecture: amd64
Depends: debconf (>= 0.5) | debconf-2.0, fonts-dejavu-core | ttf-bitstream-vera | fonts-liberation | fonts-liberation2 | fonts-croscore | fonts-freefont-otf | fonts-freefont-ttf | fonts-urw-base35 | fonts-texgyre
Package: fonts-croscore
Status: install ok installed
Architecture: all
Suggests: fonts-crosextra-caladea, fonts-crosextra-carlito
Package: fonts-dejavu-core
Status: install ok installed
Architecture: all
Package: fonts-freefont-otf
Status: install ok installed
Architecture: all
Package: fonts-freefont-ttf
Status: install ok installed
Architecture: all
Package: fonts-liberation
Status: install ok installed
Architecture: all
Package: fonts-liberation2
Status: install ok installed
Architecture: all
Package: fonts-texgyre
Status: install ok installed
Architecture: all
Recommends: fonts-texgyre-math (= 20180621-6)
Package: fonts-urw-base35
Status: install ok installed
Architecture: all
Depends: xfonts-utils
Suggests: fonts-freefont-otf | fonts-freefont-ttf, fonts-texgyre
Package: gcc-12-base
Status: install ok installed
Architecture: amd64
Package: gnome-desktop3-data
Status: install ok installed
Architecture: all
Package: gsettings-desktop-schemas
t/mockup-files/dpkg.status view on Meta::CPAN
Suggests: glibc-doc, debconf | debconf-2.0, libc-l10n, locales, libnss-nis, libnss-nisplus
Package: libcairo-gobject2
Status: install ok installed
Architecture: amd64
Depends: libcairo2 (= 1.16.0-7), libglib2.0-0 (>= 2.14.0)
Package: libcairo2
Status: install ok installed
Architecture: amd64
Depends: libc6 (>= 2.35), libfontconfig1 (>= 2.12.6), libfreetype6 (>= 2.9.1), libpixman-1-0 (>= 0.30.0), libpng16-16 (>= 1.6.2-1), libx11-6, libxcb-render0, libxcb-shm0, libxcb1 (>= 1.6), libxext6, libxrender1, zlib1g (>= 1:1.1.4)
Package: libcap-ng0
Status: install ok installed
Architecture: amd64
Depends: libc6 (>= 2.33)
Package: libcap2
Status: install ok installed
Architecture: amd64
Depends: libc6 (>= 2.34)
t/mockup-files/dpkg.status view on Meta::CPAN
Package: libfile-find-rule-perl
Status: install ok installed
Architecture: all
Depends: perl:any, libnumber-compare-perl, libtext-glob-perl
Package: libflac12
Status: install ok installed
Architecture: amd64
Depends: libc6 (>= 2.33), libogg0 (>= 1.0rc3)
Package: libfontconfig1
Status: install ok installed
Architecture: amd64
Depends: libc6 (>= 2.33), libexpat1 (>= 2.0.1), libfreetype6 (>= 2.9.1), fontconfig-config (>= 2.14.1-4)
Package: libfontenc1
Status: install ok installed
Architecture: amd64
Depends: libc6 (>= 2.14), zlib1g (>= 1:1.1.4)
Package: libfreetype6
Status: install ok installed
Architecture: amd64
Depends: libbrotli1 (>= 0.6.0), libc6 (>= 2.33), libpng16-16 (>= 1.6.2-1), zlib1g (>= 1:1.1.4)
Package: libfribidi0
t/mockup-files/dpkg.status view on Meta::CPAN
Architecture: amd64
Depends: libc6 (>= 2.14)
Package: libgs-common
Status: install ok installed
Architecture: all
Package: libgs10
Status: install ok installed
Architecture: amd64
Depends: libgs10-common (= 10.0.0~dfsg-9), poppler-data, libc6 (>= 2.34), libcups2 (>= 2.3~b6), libfontconfig1 (>= 2.12.6), libfreetype6 (>= 2.10.1), libidn12 (>= 1.13), libijs-0.35 (>= 0.35), libjbig2dec0 (>= 0.16+20190905), libjpeg62-turbo (>= 1.3....
Package: libgs10-common
Status: install ok installed
Architecture: all
Depends: fonts-urw-base35 (>= 20200910), libgs-common
Recommends: fonts-droid-fallback
Package: libgspell-1-2
Status: install ok installed
Architecture: amd64
Depends: libgspell-1-common (>= 1.12.0-1), libatk1.0-0 (>= 1.12.4), libc6 (>= 2.4), libcairo-gobject2 (>= 1.10.0), libcairo2 (>= 1.2.4), libenchant-2-2 (>= 2.2.3), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.44), libgtk-3-0 (>= 3.20), libharf...
Package: libgspell-1-common
Status: install ok installed
Architecture: all
t/mockup-files/dpkg.status view on Meta::CPAN
Package: libgstreamer1.0-0
Status: install ok installed
Architecture: amd64
Depends: libc6 (>= 2.34), libcap2 (>= 1:2.10), libdw1 (>= 0.126), libglib2.0-0 (>= 2.70.0), libunwind8, libcap2-bin
Suggests: gstreamer1.0-tools
Package: libgtk-3-0
Status: install ok installed
Architecture: amd64
Depends: adwaita-icon-theme, hicolor-icon-theme, shared-mime-info, libatk-bridge2.0-0 (>= 2.15.1), libatk1.0-0 (>= 2.35.1), libc6 (>= 2.34), libcairo-gobject2 (>= 1.14.0), libcairo2 (>= 1.14.0), libcolord2 (>= 0.1.10), libcups2 (>= 1.7.0), libepoxy0 ...
Recommends: libgtk-3-bin, librsvg2-common
Suggests: gvfs
Package: libgtk-3-common
Status: install ok installed
Architecture: all
Depends: dconf-gsettings-backend | gsettings-backend
Recommends: libgtk-3-0
Package: libgxps2
t/mockup-files/dpkg.status view on Meta::CPAN
Package: libpam0g
Status: install ok installed
Architecture: amd64
Depends: libaudit1 (>= 1:2.2.1), libc6 (>= 2.34), debconf (>= 0.5) | debconf-2.0
Suggests: libpam-doc
Package: libpango-1.0-0
Status: install ok installed
Architecture: amd64
Depends: fontconfig (>= 2.13.0), libc6 (>= 2.14), libfribidi0 (>= 1.0.6), libglib2.0-0 (>= 2.67.3), libharfbuzz0b (>= 5.1.0), libthai0 (>= 0.1.25)
Package: libpangocairo-1.0-0
Status: install ok installed
Architecture: amd64
Depends: libc6 (>= 2.4), libcairo2 (>= 1.12.10), libfontconfig1 (>= 2.13.0), libglib2.0-0 (>= 2.62.0), libharfbuzz0b (>= 2.6.0), libpango-1.0-0 (= 1.50.12+ds-1), libpangoft2-1.0-0 (= 1.50.12+ds-1)
Package: libpangoft2-1.0-0
Status: install ok installed
Architecture: amd64
Depends: libc6 (>= 2.14), libfontconfig1 (>= 2.13.0), libfreetype6 (>= 2.2.1), libglib2.0-0 (>= 2.67.3), libharfbuzz0b (>= 5.1.0), libpango-1.0-0 (= 1.50.12+ds-1)
Package: libpaper1
Status: install ok installed
Architecture: amd64
Depends: libc6 (>= 2.14), debconf (>= 0.5) | debconf-2.0, ucf (>= 0.28), dpkg (>= 1.17.2)
Recommends: libpaper-utils
Package: libpciaccess0
Status: install ok installed
Architecture: amd64
t/mockup-files/dpkg.status view on Meta::CPAN
Depends: libc6 (>= 2.29), zlib1g (>= 1:1.2.11.dfsg)
Package: libpoppler-glib8
Status: install ok installed
Architecture: amd64
Depends: libpoppler126 (= 22.12.0-2+b1), libc6 (>= 2.34), libcairo2 (>= 1.12.0), libfreetype6 (>= 2.2.1), libglib2.0-0 (>= 2.67.1), libstdc++6 (>= 11)
Package: libpoppler126
Status: install ok installed
Architecture: amd64
Depends: libc6 (>= 2.35), libfontconfig1 (>= 2.12.6), libfreetype6 (>= 2.2.1), libjpeg62-turbo (>= 1.3.1), liblcms2-2 (>= 2.7), libnspr4 (>= 2:4.9-2~), libnss3 (>= 2:3.16), libopenjp2-7 (>= 2.0.0), libpng16-16 (>= 1.6.2-1), libstdc++6 (>= 11), libtif...
Recommends: poppler-data
Package: libproc2-0
Status: install ok installed
Architecture: amd64
Depends: libc6 (>= 2.34), libsystemd0 (>= 209)
Package: libpulse0
Status: install ok installed
Architecture: amd64
t/mockup-files/dpkg.status view on Meta::CPAN
Depends: libc6 (>= 2.14), libx11-6 (>= 2:1.6.0)
Package: libxfixes3
Status: install ok installed
Architecture: amd64
Depends: libc6 (>= 2.14), libx11-6 (>= 2:1.6.0)
Package: libxft2
Status: install ok installed
Architecture: amd64
Depends: libc6 (>= 2.14), libfontconfig1 (>= 2.12.6), libfreetype6 (>= 2.3.5), libx11-6, libxrender1
Package: libxi6
Status: install ok installed
Architecture: amd64
Depends: libc6 (>= 2.14), libx11-6 (>= 2:1.6.0), libxext6
Package: libxinerama1
Status: install ok installed
Architecture: amd64
Depends: libc6 (>= 2.4), libx11-6 (>= 2:1.6.0), libxext6
t/mockup-files/dpkg.status view on Meta::CPAN
Package: lsb-base
Status: install ok installed
Architecture: all
Depends: sysvinit-utils (>= 3.05-4~)
Package: poppler-data
Status: install ok installed
Architecture: all
Pre-Depends: dpkg (>= 1.15.6~)
Suggests: poppler-utils, ghostscript, fonts-japanese-mincho | fonts-ipafont-mincho, fonts-japanese-gothic | fonts-ipafont-gothic, fonts-arphic-ukai, fonts-arphic-uming, fonts-nanum (>= 20131007~)
Enhances: ghostscript
Package: procps
Status: install ok installed
Architecture: amd64
Depends: libc6 (>= 2.34), libncursesw6 (>= 6), libproc2-0 (>= 2:4.0.2), libtinfo6 (>= 6), init-system-helpers (>= 1.29~)
Recommends: psmisc
Package: pulseaudio-utils
Status: install ok installed
t/mockup-files/dpkg.status view on Meta::CPAN
Depends: libaudit1 (>= 1:2.2.1), libc6 (>= 2.34), libsmartcols1 (>= 2.38)
Package: x11-common
Status: install ok installed
Architecture: all
Depends: lsb-base (>= 1.3-9ubuntu2)
Package: x11-utils
Status: install ok installed
Architecture: amd64
Depends: libc6 (>= 2.15), libfontconfig1 (>= 2.12.6), libfontenc1, libgl1, libx11-6, libx11-xcb1 (>= 2:1.6.9), libxaw7, libxcb-shape0, libxcb1 (>= 1.6), libxcomposite1 (>= 1:0.3-1), libxext6, libxft2 (>> 2.1.1), libxi6, libxinerama1, libxkbfile1, lib...
Suggests: mesa-utils
Package: xdg-utils
Status: install ok installed
Architecture: all
Recommends: libfile-mimeinfo-perl, libnet-dbus-perl, libx11-protocol-perl, x11-utils, x11-xserver-utils
Package: xfonts-encodings
Status: install ok installed
Architecture: all
Depends: x11-common
Package: xfonts-utils
Status: install ok installed
Architecture: amd64
Depends: libc6 (>= 2.14), libfontenc1, libfreetype6 (>= 2.2.1), zlib1g (>= 1:1.1.4), x11-common, xfonts-encodings
Package: xkb-data
Status: install ok installed
Architecture: all
Package: zlib1g
Status: install ok installed
Architecture: amd64
Depends: libc6 (>= 2.14)