1
1
mirror of https://pagure.io/fedora-kickstarts.git synced 2024-11-29 02:13:09 +00:00

container-toolbox: Install all languages (part 2)

This is a continuation from commit 69555b7b91, which tried to
ensure that all languages are present in the fedora-toolbox OCI image by
removing --inst-langs=en from fedora-container-toolbox.ks.  Sadly, this
wasn't enough.

The image was still missing various localization bits like translations
for programs and manuals.  All translations for all programs, such as
LC_MESSAGES and LC_TIME, were missing, except for those coming from
glibc-all-langpacks.  eg., see:
  $ LANG=cs_CZ.UTF-8 cp foo bar
  cp: cannot stat 'foo': Adresář nebo soubor neexistuje

Only the part coming from glibc is translated.  The part coming from
coreutils isn't.  There are lots and lots of such packages.  eg., bash,
coreutils, dnf, grep, rpm, sed, tar, etc..

Any package with translated manuals marked with %lang() in their %files
section were missing them.  eg., man-db, passwd, psmisc, etc..

Finally, even though the %pre section in fedora-container-toolbox.ks
removes %_install_langs from /etc/rpm/macros.image-language-conf, it was
still set to en_US in the final image.

This was happening because fedora-container-toolbox.ks includes
fedora-container-common.ks, and some unintended bits from the latter
were leaking into the fedora-toolbox OCI image's build.

The image was still being built with '%packages --inst-langs=en',
possibly since fedora-container-common.ks has '%package --instLangs=en'.
That option wasn't just being applied to the packages being installed by
fedora-container-common.ks, but also to those being installed by
fedora-container-toolbox.ks [1].

Secondly, fedora-container-common.ks sets %_install_langs to en_US in
its %post section.  This will strip out all non-English languages from
future RPM transactions in containers created from the image.

To address this, fedora-container-toolbox.ks has now been decoupled from
fedora-container-common.ks, by copying over the relevant bits.

[1] https://koji.fedoraproject.org/koji/buildinfo?buildID=2311452
    https://kojipkgs.fedoraproject.org//packages/Fedora-Container-Toolbox/Rawhide/20231025.n.0/images/fedora-container-toolbox.ks
    https://kojipkgs.fedoraproject.org//packages/Fedora-Container-Toolbox/Rawhide/20231025.n.0/images/koji-f40-build-108073454-base.ks
    https://kojipkgs.fedoraproject.org//packages/Fedora-Container-Toolbox/Rawhide/20231025.n.0/data/logs/image/oz-aarch64.log

https://bugzilla.redhat.com/show_bug.cgi?id=2244503
https://pagure.io/fedora-kickstarts/pull-request/1002
This commit is contained in:
Debarshi Ray 2023-10-18 19:50:51 +02:00
parent 04e1ba3b6e
commit 30f76d387d

View File

@ -1,9 +1,20 @@
# Kickstart file for Fedora Toolbox # Kickstart file for Fedora Toolbox
# See fedora-container-common.ks for details on how to hack on container image kickstarts # See fedora-container-common.ks for details on how to hack on container image kickstarts
# This base is a standard Fedora image with python3 and dnf
%include fedora-container-common.ks text # don't use cmdline -- https://github.com/rhinstaller/anaconda/issues/931
bootloader --disabled
timezone --isUtc Etc/UTC
timesource --ntp-disable
rootpw --lock --iscrypted locked
keyboard us
network --bootproto=dhcp --device=link --activate --onboot=on
reboot
# boot partitions are irrelevant as the final docker image is a tarball
zerombr
clearpart --all
autopart --noboot --nohome --noswap --nolvm
# Install packages # Install packages
%packages --nocore %packages --nocore
@ -12,6 +23,7 @@ bash
bash-completion bash-completion
bc bc
bzip2 bzip2
coreutils
coreutils-common coreutils-common
curl curl
default-editor default-editor
@ -19,9 +31,13 @@ diffutils
dnf dnf
dnf-yum # https://fedorahosted.org/fesco/ticket/1312#comment:29 dnf-yum # https://fedorahosted.org/fesco/ticket/1312#comment:29
dnf-plugins-core dnf-plugins-core
-dosfstools
-e2fsprogs
fedora-release-container
findutils findutils
flatpak-spawn flatpak-spawn
fpaste fpaste
-fuse-libs
gawk gawk
git git
-glibc-minimal-langpack -glibc-minimal-langpack
@ -29,15 +45,18 @@ glibc-all-langpacks
gnupg2 gnupg2
gnupg2-smime gnupg2-smime
grep grep
-grubby
gvfs-client gvfs-client
gzip gzip
hostname hostname
iproute iproute
iputils iputils
-kernel
keyutils keyutils
krb5-libs krb5-libs
less less
libcap libcap
-libss
lsof lsof
man-db man-db
man-pages man-pages
@ -51,6 +70,7 @@ p11-kit
pam pam
passwd passwd
pigz pigz
-pinentry
procps-ng procps-ng
python3 python3
rootfiles rootfiles
@ -58,6 +78,8 @@ rpm
rsync rsync
sed sed
shadow-utils shadow-utils
-shared-mime-info
-sssd-client
sudo sudo
systemd systemd
tar # https://bugzilla.redhat.com/show_bug.cgi?id=1409920 tar # https://bugzilla.redhat.com/show_bug.cgi?id=1409920
@ -65,6 +87,8 @@ tcpdump
time time
traceroute traceroute
tree tree
-trousers
tzdata
unzip unzip
util-linux util-linux
util-linux-core util-linux-core
@ -75,6 +99,7 @@ wget
which which
whois whois
words words
-xkeyboard-config
xorg-x11-xauth xorg-x11-xauth
xz xz
zip zip
@ -93,6 +118,31 @@ sed -i '/tsflags=nodocs/d' /mnt/sysimage/etc/dnf/dnf.conf
%end %end
%post --erroronfail --log=/root/anaconda-post.log %post --erroronfail --log=/root/anaconda-post.log
set -eux
# https://bugzilla.redhat.com/show_bug.cgi?id=1727489
echo 'LANG="C.UTF-8"' > /etc/locale.conf
# https://bugzilla.redhat.com/show_bug.cgi?id=1400682
echo "Import RPM GPG key"
releasever=$(rpm --eval '%{?fedora}')
# When building ELN containers, we don't have the %{fedora} macro
if [ -z $releasever ]; then
releasever=eln
fi
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-primary
echo "# fstab intentionally empty for containers" > /etc/fstab
# Remove machine-id on pre generated images
rm -f /etc/machine-id
touch /etc/machine-id
echo "# resolv placeholder" > /etc/resolv.conf
chmod 644 /etc/resolv.conf
# https://bugzilla.redhat.com/show_bug.cgi?id=1343138 # https://bugzilla.redhat.com/show_bug.cgi?id=1343138
# Fix /run/lock breakage since it's not tmpfs in docker # Fix /run/lock breakage since it's not tmpfs in docker
# This unmounts /run (tmpfs) and then recreates the files # This unmounts /run (tmpfs) and then recreates the files