index : pacman | |
Archlinux32 fork of pacman | gitolite user |
summaryrefslogtreecommitdiff |
author | Dan McGee <dan@archlinux.org> | 2007-07-06 18:43:24 -0400 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2007-07-06 18:43:24 -0400 |
commit | b5f8a44bebc906bf6a29d30c159802b0c1a7dbb1 (patch) | |
tree | b5096ea45a1a8b48e12dd14c446dda346c71688a /scripts/pacman-optimize.in | |
parent | 49f447d02c803e5a2f63582ce78cabb850ebfa89 (diff) |
-rw-r--r-- | scripts/pacman-optimize.in | 158 |
diff --git a/scripts/pacman-optimize.in b/scripts/pacman-optimize.in deleted file mode 100644 index d4c926d8..00000000 --- a/scripts/pacman-optimize.in +++ /dev/null @@ -1,158 +0,0 @@ -#!/bin/bash -# -# pacman-optimize -# @configure_input@ -# -# Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org> -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -# USA. -# - -# gettext initialization -export TEXTDOMAIN='pacman' -export TEXTDOMAINDIR='@localedir@' - -myver='@PACKAGE_VERSION@' -dbroot='@localstatedir@/lib/pacman/' -lockfile="${dbroot}db.lck" - -msg() { - local mesg=$1; shift - printf "==> ${mesg}\n" "$@" >&2 -} - -error () { - local mesg=$1; shift - printf "==> ERROR: ${mesg}\n" "$@" >&2 -} - -usage() { - printf "pacman-optimize (pacman) %s\n" "$myver" - echo - printf "$(gettext "Usage: %s[pacman_db_root]")\n" "$0" - echo - echo "$(gettext "pacman-optimize is a little hack that should improve the performance")" - echo "$(gettext "of pacman when reading/writing to its filesystem-based database.")" - echo - echo "$(gettext "Because pacman uses many small files to keep track of packages,")" - echo "$(gettext "there is a tendency for these files to become fragmented over time.")" - echo "$(gettext "This script attempts to relocate these small files into one")" - echo "$(gettext "continuous location on your hard drive. The result is that the hard")" - echo "$(gettext "drive should be able to read them faster, since the hard drive head")" - echo "$(gettext "does not have to move around the disk as much.")" - echo -} - -version() { - printf "pacman-optimize (pacman) %s\n" "$myver" - printf "Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\n" - echo - printf "This is free software; see the source for copying conditions.\n" - printf "There is NO WARRANTY, to the extent permitted by law.\n" - echo -} - -die() { - error $@ - exit 1 -} - -die_r() { - rm -f $lockfile - die $@ -} - -if [ "$1" = "-h" -o "$1" = "--help" ]; then - usage - exit 0 -fi - -if [ "$1" = "-V" -o "$1" = "--version" ]; then - version - exit 0 -fi - -if [ "$1" != "" ]; then - dbroot="$1" -fi - -# make sure pacman isn't running -if [ -f $lockfile ]; then - die "$(gettext "Pacman lockfile was found. Cannot run while pacman is running.")" -fi - -if [ ! -d "$dbroot" ]; then - die "$(gettext "%s does not exist or is not a directory.")" "$dbroot" -fi - -if [ ! -w "$dbroot" ]; then - die "$(gettext "You must have correct permissions to optimize the database.")" -fi - -# do not let pacman run while we do this -touch $lockfile - -# step 1: sum the old db -msg "$(gettext "MD5sum'ing the old database...")" -find $dbroot -type f | sort | xargs md5sum > /tmp/pacsums.old - -# step 2: tar it up -msg "$(gettext "Tar'ing up %s...")" "$dbroot" -cd $dbroot -tar -czf /tmp/pacmanDB.tgz ./ -if [ $? -ne 0 ]; then - rm -f /tmp/pacmanDB.tgz /tmp/pacsums.old - die_r "$(gettext "Tar'ing up %s failed.")" "$dbroot" -fi - -# step 3: make and sum the new db -msg "$(gettext "Making and MD5sum'ing the new db...")" -mkdir $dbroot.new -tar -zxpf /tmp/pacmanDB.tgz -C $dbroot.new/ -if [ $? -ne 0 ]; then - rm -f /tmp/pacmanDB.tgz /tmp/pacsums.old - rm -rf "$dbroot.new" - die_r "$(gettext "Untar'ing $dbroot failed.")" -fi -find "$dbroot.new" -type f | sort | sed -e 's/pacman.new/pacman/g' | \ - xargs md5sum > /tmp/pacsums.new - -# step 4: compare the sums -msg "$(gettext "Checking integrity...")" -diff /tmp/pacsums.old /tmp/pacsums.new >/dev/null 2>&1 -if [ $? -ne 0 ]; then - # failed - # leave /tmp/pacsums.old and .new for checking to see what doesn't match up - rm -rf "$dbroot.new" $lockfile /tmp/pacmanDB.tgz - die_r "$(gettext "integrity check FAILED, reverting to old database.")" -fi - -# step 5: remove the new temporary database and the old one -# and use the .tgz to replace the old one -msg "$(gettext "Putting the new database in place...")" -rm -rf "$dbroot.new" "$dbroot"/* -tar -zxpf /tmp/pacmanDB.tgz -C "$dbroot"/ - -# remove the lock file, sum files, and .tgz of database -rm -f $lockfile /tmp/pacsums.old /tmp/pacsums.new /tmp/pacmanDB.tgz - -echo -echo "$(gettext "Finished. Your pacman database has been optimized.")" -echo - -exit 0 - -# vim: set ts=2 sw=2 noet: |