Category Archives: usage

Originally posted on akh's Fink Blog:

I just discovered that XQuartz on Mountain Lion does some annoying things to my PATH, changing:


in a Terminal window to


in an xterm.

The duplicate entries aren’t so bad, but moving the system directories in front of Fink’s is annoying.  Running again doesn’t change this, unfortunately.  I came up with a script which lets me reorder the PATH by blocks and remove via a pattern match any items I don’t want.  As an afterthought, it removes duplicates, too.  By running

export PATH=` --delete=X11R6`

I am able to restore the PATH settings to the xterm that I have in my Terminal window. The script follows:

#!/usr/bin/env perl -w # Read in the PATH environment variable and # 1) Strip out duplicate entries # 2) Delete entries matching a pattern given by instances of the --delete flag # 3)…

View original 85 more words

Downgrading packages

You may find that you need to use an earlier version of a package than you currently have installed, e.g. if the update causes a build issue in another package. Fortunately, this can be accomplished in a fairly straightforward set of operations.  We’ll use the example of gmp5.

  1. In a terminal window, run
    fink scanpackages ; sudo apt-get update

    to bring your local package list up to date.

  2. Verify what binary versions (locally built or otherwise) are known by using apt-cache policy, for example:
    $ apt-cache policy gmp5
      Installed: 5.1.0-1
      Candidate: 5.1.0-1
      Version Table:
     *** 5.1.0-1 0
            100 /sw/var/lib/dpkg/status
         5.0.5-4 0
            500 file: stable/main Packages

    In this case, version 5.0.5-4 is present.

  3. If an older version of the package is available, then you can install that. For example, for gmp5, we’d want to downgrade the library packages as well as the main (headers):
    $ sudo apt-get install gmp5=5.0.5-4 gmp5-shlibs=5.0.5-4 
    Reading Package Lists... Done
    Building Dependency Tree... Done
    The following packages will be DOWNGRADED
    gmp5 gmp5-shlibs libgmpxx5-shlibs
    0 packages upgraded, 0 newly installed, 3 downgraded,
    0 to remove and 9 not upgraded.
    Need to get 0B/1282kB of archives. After unpacking 
    336kB will be freed.
    Do you want to continue? [Y/n]

    Note that when using apt-get the versioned package format is

  4. If, on the other hand, you only show one version as available, you can download an earlier version of the package description files from the CVS browser.  To help you figure out where to browse, you can use fink dumpinfo -finfofile to show the section where the package you are interested in resides.  For example:
    $ fink dumpinfo -finfofile gmp5
    Information about 6665 packages read in 2 seconds.
    infofile: /sw/fink/dists/stable/main/finkinfo/libs/
  5.  Navigate to the appropriate location in the CVS browser.  If you are on 10.5 or 10.6, first go to the 10.4 directory, and  if you are on 10.7 or 10.8, then start in the 10.7 directory.  Then follow the path from item 4 above, e.g. stable/main/finkinfo/libs for gmp5.
  6. Pick an appropriate version of the .info file via the browser, i.e. check the Version field, and download it by viewing it with the Download option and saving the text file (make sure to leave the extension as .info).  For example, one can see the various iterations of in the 10.7 tree here.
  7. Move the .info file to /sw/fink/dists/local/main/finkinfo. If the package has a .patch file, then depending on whether that was updated after the .info file you downloaded, you will want either to download an appropriate version of from the CVS browser, or copy it from your stable/main/finkinfo directory if it’s new enough. Following the example of gmp5, to install version 5.0.5-4 from source, you would download the .info file and the current .patch file, which still applies, then use e.g.
    mv ~/Downloads/gmp5.* /sw/fink/dists/local/main/finkinfo

    to put the files in your local tree.

  8. Use “fink dumpinfo -fallversions” to verify that the version you just moved into your local tree is available. Using gmp5 as the example again, we verify that gmp5-5.0.5-4 is among the known versions:
    $ fink dumpinfo -fallversions gmp5
    Scanning package description files..........
    Information about 6665 packages read in 1 seconds.
    bi 5.1.0-1
  9. Downgrade by using “fink install” including the package versions.  Again using gmp5 for the example:
    fink install gmp5-5.0.5-4 gmp5-shlibs-5.0.5-4

    Note that when using a fink command, the versioned package format is

  10. Build anything that needs the older version.  A word of caution: you stand the risk of having link failures in other packages when you downgrade to a library with an older compatibility version.

General SourceForge Outage

Check the Operations feed for updates. is still up, but updates will be posted here rather than there since the website source resides in our SourceForge CVS repository, too.

  • If you’re using selfupdate-cvs, that won’t work
  • selfupdate-rsync will still work, but until cvs is back online there won’t be any new packages.
  • Developers can’t commit packages currently, so users aren’t actually missing out on much.
  • The mailing lists and bug tracker are out, so please post bug reports for unmaintained packages here.  If a package has a listed maintainer, contact them, and then post here in a few days (1) if you haven’t gotten a response in a few days, and (2) if the mailing lists aren’t back up.

Originally posted on akh's Fink Blog:

Tired of manually migrating your Fink Perl/Python/Octave … modules to match the latest Fink version of Perl/Python/Octave?

Hate having to check whether all of your installed modules are also available for the new version?

Have we got a script for you!  (I like it, anyway):

#!/usr/bin/env perl # Copyright (c) 2012 Alexander Hansen # # 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…

View original 209 more words

Handy one-liner for maintainers

I maintain a large enough collection of Fink packages that I sometimes forget to check for upstream updates regularly. I’ve come up with a one-line script that meets my needs:

for URL in `fink list -t -m alexkhansen | cut -f2 \
| xargs fink dumpinfo -fhomepage | cut -d\  -f2 | sort \
| uniq | grep -v undefined | grep -v Obsolete ` ; \
do open $URL ; read LINE ; done

This grabs a list of my packages, finds their home pages, removes duplicates, entries that show “undefined”, e.g. bundles, and Obsolete, i.e. packages that are obsolete.  It then opens one page at a time–since I don’t want to bring my machine to a crawl by opening all of them. :-)