attempt to solve /usr/sbin upgrade error when owning directory to symlink [release 2.3-10mamba;Tue Sep 05 2023]

This commit is contained in:
Silvan Calarco 2024-01-05 22:18:26 +01:00
parent b453e3369f
commit 4704809907

View File

@ -2,7 +2,7 @@
Name: filesystem
Version: 2.3
Release: 9mamba
Release: 10mamba
Summary: The basic directory layout for a Linux system
Group: System/Configuration
Vendor: openmamba
@ -78,6 +78,35 @@ ln -s ../run %{buildroot}/var/run
#%pre
#[ -L /usr/local/man ] && rm -f /usr/local/man || :
%pretrans -p <lua>
-- Remove /usr/sbin early to avoid error due to package upgrade from owned dir to symlink
path = "/usr/sbin"
st = posix.stat(path)
if st and st.type == "directory" then
status = os.rename(path, path .. ".rpmmoved")
if not status then
suffix = 0
while not status do
suffix = suffix + 1
status = os.rename(path .. ".rpmmoved", path .. ".rpmmoved." .. suffix)
end
os.rename(path, path .. ".rpmmoved")
end
end
path = "/usr/local/sbin"
st = posix.stat(path)
if st and st.type == "directory" then
status = os.rename(path, path .. ".rpmmoved")
if not status then
suffix = 0
while not status do
suffix = suffix + 1
status = os.rename(path .. ".rpmmoved", path .. ".rpmmoved." .. suffix)
end
os.rename(path, path .. ".rpmmoved")
end
end
%pre
[ -L /var/run ] || {
# /var/run -> /run migration
@ -88,18 +117,18 @@ ln -s ../run %{buildroot}/var/run
done
}
# /usr/sbin -> /usr/bin merge
[ -L /usr/sbin ] || {
[ -e /usr/sbin.rpmmoved ] && {
echo "Migrating /usr/sbin to /usr/bin..."
for d in /usr/sbin /usr/local/sbin; do
for f in $d/*; do
dest=${d/sbin/bin}/`basename $f`
if [ -e $dest ]; then
for f in $d.rpmmoved/*; do
dest="${d/sbin/bin}/`basename $f`"
if [ -e "$dest" ]; then
#echo "$f exists as $dest"
if [ -L $f ]; then
linkdest=`readlink $f`
#echo "$f is a symlink to $linkdest"
/usr/bin/rm -f $f
elif [ -L $dest ]; then
elif [ -L "$dest" ]; then
linkdest=`readlink $dest`
#echo "$dest is a symlink to $linkdest"
/usr/bin/rm -f $dest && mv $f $dest
@ -108,7 +137,7 @@ ln -s ../run %{buildroot}/var/run
/usr/bin/rm -f $f
fi
else
if [ -L $f ]; then
if [ -L "$f" ]; then
linkdest=`readlink $f`
if [ "${linkdest:0:3}" = "../" ]; then
fulllinkdest=`readlink -f $f`
@ -123,7 +152,7 @@ ln -s ../run %{buildroot}/var/run
fi
fi
done
/usr/bin/rmdir $d || /usr/bin/mv $d $d.notmigrated
/usr/bin/rmdir $d.rpmmoved || /usr/bin/mv $d.rpmmoved $d.notmigrated
/usr/bin/ln -s bin $d
done
}
@ -295,6 +324,9 @@ fi
/usr/tmp
%changelog
* Tue Sep 05 2023 Silvan Calarco <silvan.calarco@mambasoft.it> 2.3-10mamba
- attempt to solve /usr/sbin upgrade error when owning directory to symlink
* Mon Sep 04 2023 Silvan Calarco <silvan.calarco@mambasoft.it> 2.3-9mamba
- own lib and lib64 dirs and symlinks