[arch-dev-public] Best way to force file overwrites in a package?

Thayer Williams thayer at archlinux.org
Mon Jun 2 18:43:53 EDT 2008


I'm putting together a kmenu icon set to replace the default icons.
Upon installation I want it to backup the existing icons and copy the
new ones.  I tried doing this with an install file, but I still get a
"conflicting files" error when I try to install the package. Ideally,
I'd like this to work without forcing the user to pacman -f the
package.  Is this possible?

I've included the install file below... is there a cleaner way of
performing this task? Should I even bother with backing up the old
stuff? A post_remove message could instruct the user to reinstall the
'kdelibs' package instead.

pre_install() {
  #backup existing kmenu icons
  mv /opt/kde/share/icons/crystalsvg/16x16/apps/kmenu.png \
  /opt/kde/share/icons/crystalsvg/16x16/apps/kmenu.png.backup

  mv /opt/kde/share/icons/crystalsvg/22x22/apps/kmenu.png \
  /opt/kde/share/icons/crystalsvg/22x22/apps/kmenu.png.backup

  mv /opt/kde/share/icons/crystalsvg/32x32/apps/kmenu.png \
  /opt/kde/share/icons/crystalsvg/32x32/apps/kmenu.png.backup

  mv /opt/kde/share/icons/crystalsvg/48x48/apps/kmenu.png \
  /opt/kde/share/icons/crystalsvg/48x48/apps/kmenu.png.backup

  mv /opt/kde/share/icons/crystalsvg/64x64/apps/kmenu.png \
  /opt/kde/share/icons/crystalsvg/64x64/apps/kmenu.png.backup

  mv /opt/kde/share/icons/crystalsvg/128x128/apps/kmenu.png \
  /opt/kde/share/icons/crystalsvg/128x128/apps/kmenu.png.backup

  mv /opt/kde/share/icons/crystalsvg/scalable/apps/kmenu.svgz \
  /opt/kde/share/icons/crystalsvg/scalable/apps/kmenu.svgz.backup
  }

post_install() {
  echo "==> Archlinux KDE theme files can be enabled via kcontrol"
  }

  # restore original kmenu icons
  mv /opt/kde/share/icons/crystalsvg/16x16/apps/kmenu.png.backup \
  /opt/kde/share/icons/crystalsvg/16x16/apps/kmenu.png

  mv /opt/kde/share/icons/crystalsvg/22x22/apps/kmenu.png.backup \
  /opt/kde/share/icons/crystalsvg/22x22/apps/kmenu.png

  mv /opt/kde/share/icons/crystalsvg/32x32/apps/kmenu.png.backup \
  /opt/kde/share/icons/crystalsvg/32x32/apps/kmenu.png

  mv /opt/kde/share/icons/crystalsvg/48x48/apps/kmenu.png.backup \
  /opt/kde/share/icons/crystalsvg/48x48/apps/kmenu.png

  mv /opt/kde/share/icons/crystalsvg/64x64/apps/kmenu.png.backup \
  /opt/kde/share/icons/crystalsvg/64x64/apps/kmenu.png

  mv /opt/kde/share/icons/crystalsvg/128x128/apps/kmenu.png.backup \
  /opt/kde/share/icons/crystalsvg/128x128/apps/kmenu.png

  mv /opt/kde/share/icons/crystalsvg/scalable/apps/kmenu.svgz.backup \
  /opt/kde/share/icons/crystalsvg/scalable/apps/kmenu.svgz
  }




More information about the arch-dev-public mailing list