glibc40/locale_uninstall.sh
2019-04-27 10:09:03 +00:00

76 lines
2.4 KiB
Bash

#!/bin/bash
# this script is to be called when a locale is removed from the sistem;
# so translations in the language(s) of the locale are no longer installed
if [ "$1" = 'ENCODINGS' ]; then
# remove encoding files used by locales
ENCODINGS="CP1251 ISO-8859-1 ISO-8859-13 ISO-8859-14 ISO-8859-15 \
ISO-8859-2 ISO-8859-3 ISO-8859-4 ISO-8859-5 ISO-8859-7 \
ISO-8859-9 KOI8-R KOI8-U UTF-8"
for enc in $ENCODINGS; do
if [ -d "/etc/locale/$enc" ]; then
for i in LC_ADDRESS LC_COLLATE LC_CTYPE \
LC_IDENTIFICATION LC_MEASUREMENT LC_MONETARY \
LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE \
LC_TIME LC_MESSAGES/SYS_LC_MESSAGES
do
rm -f "/etc/locale/$enc/$i"
done
rmdir "/etc/locale/$enc/LC_MESSAGES" > /dev/null 2>&1
rmdir "/etc/locale/$enc" > /dev/null 2>&1
fi
done
exit 0
fi
# the list of languages that rpm installs their translations
if [ -r /etc/rpm/macros ]; then
RPM_INSTALL_LANG="$(grep '^%_install_langs' /etc/rpm/macros | cut -d' ' -f2-)"
fi
[ -z "$RPM_INSTALL_LANG" ] && RPM_INSTALL_LANG=C
OLD_RPM_INSTALL_LANG="$RPM_INSTALL_LANG"
for i in "$@"; do
langs="$i"
for j in /usr/share/locale/$i.*; do
[ -d "$j" ] || continue
lng="$(basename $j)"
# sanity check
echo "$lng" | grep -q "$i" || continue
langs="$langs $lng"
done
for k in $langs; do
# remove the LC_* of the all system locales from /etc/locale,
# copied by locale_install.sh
if [ -d "/etc/locale/$k" ]; then
for j in LC_ADDRESS LC_IDENTIFICATION LC_MONETARY \
LC_PAPER LC_COLLATE LC_MEASUREMENT LC_NAME \
LC_TELEPHONE LC_CTYPE LC_NUMERIC LC_TIME \
LC_MESSAGES/SYS_LC_MESSAGES
do
rm -f "/etc/locale/$k/$j"
done
rmdir "/etc/locale/$k/LC_MESSAGES" > /dev/null 2>&1
rmdir "/etc/locale/$k" > /dev/null 2>&1
fi
done
# remove the locale from the list known to rpm (so translations in that
# language are no more installed), and from the menu system
if [ "$RPM_INSTALL_LANG" != "all" ]; then
RPM_INSTALL_LANG="$(echo $RPM_INSTALL_LANG |sed -e 's,$i,,' |tr ':' '\n' |grep -v '^$' |sort |tr '\n' ':' |sed -e 's,:$,,')"
fi
langs="$(localedef --list-archive | grep \"$i\")"
for lng in $langs; do
localedef --delete-from-archive "$lng"
done
done
if [ "$OLD_RPM_INSTALL_LANG" != "$RPM_INSTALL_LANG" ]; then
# update /etc/rpm/macros file
if [ -w /etc/rpm/macros ]; then
sed -i -e "s/^%_install_langs .*/%_install_langs $RPM_INSTALL_LANG/" /etc/rpm/macros
fi
fi