Guys,

I've updated my find duplicates script to work with the .xz packages. There are actually 2 scripts involved:

'fduparch.sh' is the wrapper script that just sets the directories and options for the actual duplicate finding script 'fduppkg'.

        In its current configuration fduparch.sh actually calls fduppkg twice.

PASS 1:

it calls fduppkg to scan /var/cache/pacman/pkg and move any duplicates found to '/home/backup/pkg-old'. Packages with the same name are then checked by DATE and any older packages are moved /home/backup/pkg-old. This leaves only the current packages in /var/cache/pacman/pkg making it much easing to move your install from machine-to-machine without copying unneeded duplicates. Second, it frees up space on / by moving duplicates to the /home partition.

PASS 2:

it calls fduppkg a second time to scan '/home/backup/pkg-old' and move any duplicates found to '/home/backup/pkg-older'.

That way you have the latest packages in the normal '/var/cache/pacman/pkg' and you have a duplicate-free set of the last packages before update in '/home/backup/pkg-old'. All older versions are kept in '/home/backup/pkg-older'

The way I use the scripts is to create softlinks to the scripts in /usr/local/bin (making sure /usr/local/bin is in your PATH) as follows:

ln -s /wherever/you/put/fduparch.sh /usr/local/bin/fduparch
ln -s /wherever/you/put/fduppkg /usr/local/bin/fduppkg

then I simply call fduparch after each update to clean the duplicates out of /var/cache/pacman/pkg.

running fduppkg without arguments gives the general usage:

01:16 nirvana:/srv/http/dl/Archlinux/scripts> sh fduppkg

        Usage: fduppkg <search dir> [ -d dup_dir -l logfile -s -v ]

Searches <search dir> for duplicate pkgs and moves duplicate files to [dup_dir] or <search dir>/duplicates by default.

  -d | --dupdir    Used to specify directory to hold duplicate rpms
  -l | --logfile   Specify the log file name (default ./duplicates.log)
  -s | --silent    Don't output anything to stdout, just log results
  -v | --verbose   Output information showing which files are kept and not moved

However, to change the default duplicate directories, just edit the wrapper script 'fduparch' and set the directories you want there. I have used a wrapper script to keep fduppkg as flexible as possible so I can simply run it on any package directory to find and move duplicates. (the split setup was originally developed to handle suse's archane cache directory structure, but it handles Arch's simple setup as well)

        Grab the duplicate scripts at:

http://www.3111skyline.com/dl/Archlinux/scripts/fduparch.sh
http://www.3111skyline.com/dl/Archlinux/scripts/fduppkg

Finally, I have developed a script for determining which packages in /var/cache/pacman/pkg are 'Installed' or not. The script is 'chkinstpkgs.sh' and is available here:

http://www.3111skyline.com/dl/Archlinux/scripts/chkinstpkgs.sh

Running the script without argument will check the status of all packages in /var/cache/pacman/pkg and provide you with a concise list of installed/uninstalled packages in the following format:

01:24 alchemy:~/scr/arch> sh chkinstpkgs.sh

  Determining installed/orphaned packages in /var/cache/pacman/pkg...

    Initializing the package-information arrays
    Checking installed packages

    Total Number of Packages : 2713
    Total Number Installed   : 2225
    Total Number Orphaned    : 488

    Updating the installed package array with installed/orphaned info
    ( be patient, time required is: [~30 sec/1000 pkgs] )

ORPHANS (pkg in /var/cache/pacman/pkg but not installed):

 Total packages orphaned:  488

 Package                                                    Arch          
Installed
----------------------------------------------------------------------------
 a2ps-4.14-1                                                x86_64        no
 acct-6.5.1-1                                               x86_64        no
 acpi-1.4-2                                                 x86_64        no
<snip>

INSTALLED PACKAGES:

 Total packages installed:  2225

Package Arch Installed
----------------------------------------------------------------------------
 a52dec-0.7.4-4                                             x86_64        yes
 aalib-1.4rc5-6                                             x86_64        yes
<snip>


I find all 3 scripts useful in managing my Arch boxes and for moving installs to new arch boxes. The chkinstpkgs.sh script is great for checking what I have forgotten to install on a new box.

Enjoy!


--
David C. Rankin, J.D.,P.E.
Rankin Law Firm, PLLC
510 Ochiltree Street
Nacogdoches, Texas 75961
Telephone: (936) 715-9333
Facsimile: (936) 715-9339
www.rankinlawfirm.com

Reply via email to