Available Languages: | English | Español | Français | 日本語 (Nihongo) | Русский (Russkiy) | 中文 (简) (Simplified Chinese) |

The Fink F.A.Q.

This is the list of frequently asked questions about Fink. Like in most FAQs, some questions are taken from real life and some are made up. It's really more like a documentation written in an ad-hoc, question and answer style.

The FAQ consists of several pages, one for each section. All questions are listed and linked in the table of contents below.

Contents

1 General Questions

Q1.1: What is Fink?

A: Fink wants to bring more Unix software to Mac OS X, which results in two main goals:

Goal number one is porting software to Mac OS X. That means we take commodity Open Source Unix software and fix whatever is necessary so that it will compile and run on Mac OS X. Sometimes that's easy, but it can also be very hard or even impossible for some packages. We're trying to provide tools and documentation to make this easier.

Goal number two is making the results available to casual users. For this, we build a distribution using package management tools ported over from Linux, namely dpkg and apt-get, written by and for the Debian GNU/Linux project. The binary distribution uses the .deb package format. For building packages from source, we have our own tool, named fink, which creates those .deb package files.

Q1.2: What does the name Fink stand for?

A: Nothing, it's just a name. It's not even an acronym.

Well, actually Fink is the German name for Finch, a kind of bird. I was looking for a name for the project, and the name of the OS, Darwin, led me to think about Charles Darwin, the Galapagos Islands and evolution. I remembered a piece about the so-called Darwin Finches and their beaks from school, and well, that's it...

Q1.3: How is Fink different from the BSD port mechanism (this includes OpenPackages and GNU-Darwin)?

A: Some main advantages:

Q1.4: Why doesn't Fink install into /usr/local?

A: There are several reasons, but the common line is "because breakage will occur".

Reason One: Third-party software. /usr/local is the well-established place to put software that is not part of the system shipped by the original vendor. This means that it is a good place to put stuff. However, it also means that other people will put stuff there, too. Most install routines will just overwrite what's there - this also applies to dpkg. One can, of course, choose not to install third-party software in /usr/local. Unfortunately, most installers don't tell you beforehand what they will install where.

Reason Two: /usr/local/bin is in the default PATH. This means that your shell will find the installed programs without additional measures. But it also means that you do have to take additional measures if you do not want to use the programs. In extreme cases, this can also affect the system itself - many parts depend on shell scripts.

Reason Three: The compiler tool chain searches /usr/local by default. The compiler searches /usr/local/include for header files and the linker searches /usr/local/lib for libraries. Again, this is sometimes a welcome convenience, but it's very hard to disable should the need arise. You can easily disable the compiler by putting a garbage file called stdio.h into /usr/local/include.

All that said, it is possible to install Fink into /usr/local. The installation script will warn you explicitly, but proceed once you acknowledge that you're doing this at your own risk.

Q1.5: Then why did you choose /sw?

A: That choice is quite arbitrary, but is likely to stay for the foreseeable future for practical (upgrade) issues as well as the fact that it's safe from conflicting with other packaging systems.

2 Relations with Other Projects

Q2.1: Do you contribute your patches back to the upstream maintainers?

A: We're trying to. Sometimes sending patches back is easy and everyone is happy once the next release of the package is out. Unfortunately with most packages it's not that easy. Some common problems:

Q2.2: What is your relation with the Debian project? Are you porting Debian Linux to Mac OS X?

A: There is no formal relation between Fink and Debian. Fink is not a port of the Debian GNU/Linux distribution. We have ported Debian's package management tools (dpkg, dselect, apt-get) though, and use these tools and the .deb binary package format. The actual packages are tailor-made for Mac OS X / Darwin and don't use the Debian source package format.

Q2.3: What is your relation with Apple?

A: Apple is aware of Fink and has given us some support as part of their Open Source relations efforts. In the summer and fall of 2001, they provided us with pre-release seeds of new Mac OS X versions in the hope that Fink packages can be adapted in time for the release. Quote: "Hopefully it underscores the commitment that many suspect we're not willing to provide. We'll get better at the open source game over time." Thanks Apple!

Q2.4: What is your relation with Darwinports?

A: Darwinports and Fink are complementary projects. There is some overlap between the two projects, and several people contribute to both the Fink and DarwinPorts projects. For example, Benjamin Reed is doing the KDE packages for both. Darwinports and Fink are free to make use of each other's patches, and we have discussed collaboration on a new dependency engine.

DarwinPorts started from scratch to try a different approach to a packaging system. Read the statement on the DarwinPorts homepage for details.

3 Fink mirrors

Q3.1: What are Fink Mirrors?

A: Fink mirrors are rsync servers mirroring the current and stable description files that Fink uses to build packages from source.

Q3.2: Why should I use rsync mirrors?

A: Rsync is a very fast protocol. It will update the description files faster than the old CVS update method. Furthermore, CVS updates are always done from sourceforge.net while rsync updates can be done from a mirror close to you.

Q3.3: Where can I find more information about Fink mirrors?

A: All Fink mirrors are consolidated under the finkmirrors.net domain. The Web-Site at http://finkmirrors.net/ has more information.

Q3.4: I cannot connect to rsync server, what should I do?

A: Sometimes very strict firewalls forbid you to connect to rsync services. If that is the case simply continue using the CVS method

Q3.5: I have switched to the rsync method now all info files from the unused trees are gone

A: This is normal. The rsync update method will only update your active tree, e.g. 10.3, and it will also delete the CVS subdirectories.

Q3.6: How can I switch back and forth between methods.

A: By using fink selfupdate-rsync or fink selfupdate-cvs to switch to rsync or CVS, respectively.

Q3.7: Can I see what the current status of rsync mirrors is?

A: Yes, go to http://finkmirrors.net/status.html

Q3.8: What is a Distfiles mirror?

A: Sometimes it is hard to fetch a certain version of sources from the Internet. Distfile mirrors hold and mirror the source packages needed by fink to build its source packages.

4 Upgrading Fink (version-specific troubleshooting)

Q4.1: I just upgraded to 0.16.0 and it tells me "Your version of the gcc 3.3 compiler is out of date." What do I do?

A: As of the release of Panther, Fink has been updated to understand the newer gcc 3.3 compiler. In order to be able to support users on both 10.2 (Jaguar) and 10.3 (Panther), we are requiring all users to install the latest gcc 3.3 update (August 2003 Updater, and the Panther XCode tools, respectively). You will get this warning if you installed the earlier XCode beta updater for Mac OS X 10.2's December 2002 developer tools. If you're on 10.2, the command:

gcc --version

should tell you what version you have. As of October 24th, 2003, we require build 1493 or higher.

10.2 users can download the August 2003 Updater from Apple Developer Connection (free registration required).

10.3 users should upgrade to a Panther-compatible developer tools release (i.e. XCode). A CD with XCode should have been provided with your Panther media.

Q4.2: I haven't had any package updates from Fink in a while.

A: Check your version:

fink --version

There is a known problem with fink-0.22.0 wherein rsync selfupdating stopped working. To fix this, switch to CVS selfupdating via

fink selfupdate-cvs	

This will bring you a newer fink version. After you do this we recommend switching back to rsync selfupdating:

fink selfupdate-rsync

5 Installing, Using and Maintaining Fink

Q5.1: How can I find out what packages Fink supports?

A: Since Fink 0.2.3, there is the list command. It produces a list of all packages known to your Fink installation. Example:

fink list

If you're using the binary distribution, dselect gives you a nice browsable listing of available packages. Note that you must run it as root if you want to select and install packages from within dselect.

There's also the package database at the website.

Q5.2: I'm behind a firewall. How do I configure Fink to use an HTTP proxy?

A: The fink command supports explicit proxy settings that are passed on to wget/curl. If you were not asked for proxies on first time installation, you can run fink configure to set it up. You can also run that command at any time to reconfigure the fink command. If you followed the instructions in the installation guide, and use /sw/bin/init.csh (or /sw/bin/init.sh), then apt-get and dselect also will use these proxy settings. Make sure that you put the protocol in front of the proxy, e.g.

ftp://proxy.yoursite.somewhere

If you are still having problems, go into System Preferences, select the Network pane, select the Proxies tab, and make sure that the box labeled "Use Passive FTP Mode (PASV)" is checked.

Q5.3: How do I update available packages from CVS when I am behind a firewall?

A: The package cvs-proxy can tunnel through HTTP proxies.

If fink is not configured to use your proxy, change the settings using:

fink configure.

Q5.4: Can I move Fink to another location after installation?

A: No. Well, of course you can move the files using mv or the Finder, but 99% of the programs will stop working when you do. That's because basically all Unix software depends on hardcoded paths to find data files, libraries and other stuff.

Q5.5: If I move Fink after installation and provide a symlink from the old location, will it work?

A: Maybe. The general expectation is that it should work, but there may be hidden traps somewhere.

Q5.6: How can I uninstall all of Fink?

A: Almost all files installed by Fink are in /sw (or wherever you chose to install it). Thus in order to get rid of Fink, enter this command:

sudo rm -rf /sw

The only exception to this rule is XFree86 or X.org. If you installed an X server through Fink (i.e., you installed the xfree86, xfree86-rootless, or xorg packages, instead of using system-xfree86) and want to remove it, you will need additionally to enter this:

sudo rm -rf /usr/X11R6 /etc/X11 /Applications/XDarwin.app

If you aren't planning to reinstall Fink you also will want to remove the "source /sw/bin/init.csh" line you added to your .cshrc file or the "source /sw/bin/init.sh" line you added to your .bashrc file, whichever is appropriate to your setup, using a text editor.

Q5.7: The package database at the website lists package xxx, but apt-get and dselect know nothing about it. Who's lying?

A: Both are correct. The package database knows about every package, including those that are still in the unstable section. The dselect and apt-get tools on the other hand only know about the packages available as precompiled binary packages. Many packages are not available in precompiled form through these tools for a variety of reasons. A package must be in the "stable" section of the latest point release to be considered, and it must pass additional checks for policy compliance as well as licensing and patent restrictions.

If you want to install a package that is not available via dselect / apt-get, you have to compile it from source using fink install packagename . Make sure you have the Developer Tools installed before you try this. (If there is no installer for the Developer Tools in your /Applications folder, you can get them from the Apple Developer Connection after free registration.) See also the question about unstable below.

Q5.8: There's this package in unstable that I want to install, but the fink command just says 'no package found'. How can I install it?

A: First make sure you understand what 'unstable' means. Packages in the unstable tree are not in stable for any number of reasons. It could be because there are known issues, validation errors, or just not enough people giving feedback that the package works for them. For that reason, Fink doesn't search the unstable tree by default.

If you do enable unstable, please remember to e-mail the maintainer if something works (or even if it doesn't). Feedback from users like you is what we use to determine if something is ready for stable! To find out the maintainer of a package, run fink info packagename.

New in fink-0.26: If you run fink configure one of the questions will ask whether you want to turn the unstable trees on. You will need to run fink selfupdate; fink index; fink scanpackages afterward. Note: you must have either rsync or cvs updating turned on to get new package descriptions.

To configure Fink to use unstable when you have an earlier version of the fink tool than 0.26, edit /sw/etc/fink.conf, add unstable/main and unstable/crypto to the Trees: line, and then run fink selfupdate; fink index; fink scanpackages. Rsync or cvs updating is required as above.

Also note, if you don't want to install any more from unstable than your specific package(s) and its (their) dependencies, don't use the update-all command until you turn the unstable tree back off.

Q5.9: Do I really need to enable all of unstable just to install one unstable package that I want?

A: No, but it is highly recommended you do. Mixing and matching can cause unforeseen issues that make it difficult to debug problems when they do arise.

That said, if you only want one or two specific packages, and nothing else from unstable, then you need to switch over to CVS updating (i.e. use fink selfupdate-cvs), because rsync only updates the trees that are active in your fink.conf. Edit /sw/etc/fink.conf and add local/main to the Trees: line, if not present. Then you'll need to run fink selfupdate to download the package description files. Now copy the relevant .info files (and their associated .patch files, if there are any) from /sw/fink/dists/unstable/main/finkinfo (or /sw/fink/dists/unstable/crypto/finkinfo) to /sw/fink/dists/local/main/finkinfo. However, note that your package may depend on other packages (or particular versions) which are also only in unstable. You will have to move their .info and .patch files as well. After you move all of the files, make sure to run fink index, so that Fink's record of available packages is updated. Once you're done you can switch back to rsync (fink selfupdate-rsync) if you want.

Q5.10: I'm tired of typing my password into sudo again and again. Is there a way around this?

A: If you're not paranoid, you can configure sudo to not ask you for a password. To do this, run visudo as root and add a line like this:

username ALL = NOPASSWD: ALL

Replace username with your actual username, of course. This line allows you to run any command via sudo without typing your password.

Q5.11: When I try to run init.csh or init.sh, I get a "Permission denied" error. What am I doing wrong?

A: init.csh and init.sh are not supposed to be run like normal commands. These files set environment variables like PATH and MANPATH in your shell. To have a lasting effect on the shell, it must be processed with the source command for csh/tcsh, or with the . command for bash/zsh, like this:

for csh/tcsh:

source /sw/bin/init.csh

for bash/zsh:

. /sw/bin/init.sh

Q5.12: Help! I used the "[A]ccess" menu entry in dselect and now I can't download packages any more!

A: You probably pointed apt at a Debian mirror, which of course doesn't have the Fink files. You can fix this manually or through dselect. To fix it manually, edit the file /sw/etc/apt/sources.list in a text editor as root. Remove lines that mention debian.org and replace them with these:

deb http://us.dl.sourceforge.net/fink/direct_download release main crypto
deb http://us.dl.sourceforge.net/fink/direct_download current main crypto

(Or if you live in Europe, you can use eu.dl.sourceforge.net instead of us.dl.sourceforge.net)

To fix it through dselect, run "[A]ccess" again, choose the "apt" method and enter the following info:

URL: http://us.dl.sourceforge.net/fink/direct_download - Distribution: release - Components: main crypto

Then, say you want to add another source and repeat the process with "current" instead of "release".

A fixed version of the apt package (which provides the configuration script as a plug-in for dselect) is making it's way through CVS now.

Q5.13: When I try to run fink selfupdate or "fink selfupdate-cvs", I get the error "Updating using CVS failed. Check the error messages above."

A: If the message is

Can't exec "cvs": No such file or directory at 
/sw/lib/perl5/Fink/Services.pm line 216, <STDIN> line 3.
### execution of cvs failed, exit code -1

then you need to install the Developer Tools.

If, on the other hand, the last line is

### execution of su failed, exit code 1

you'll need to look further back in the output to see the error. If you see a message that your connection was refused:

(Logging in to anonymous@fink.cvs.sourceforge.net)
CVS password:
cvs [login aborted]: connect to fink.cvs.sourceforge.net:2401 failed: 
Connection refused
### execution of su failed, exit code 1
Failed: Logging into the CVS server for anonymous read-only access failed.

or a message like the following:

cvs [update aborted]: recv() from server fink.cvs.sourceforge.net: 
Connection reset by peer 
### execution of su failed, exit code 1 
Failed: Updating using CVS failed. Check the error messages above.

or

cvs [update aborted]: End of file received from server

or

cvs [update aborted]: received broken pipe signal

then it's likely that the cvs servers are overloaded and you have to try the update later.

Another possibility is that you have some bad permissions in your CVS directories, in which case you get "Permission denied" messages:

cvs update: in directory 10.2/stable/main: 
cvs update: cannot open CVS/Entries for reading: No such file or directory
cvs server: Updating 10.2/stable/main 
cvs update: cannot write 10.2/stable/main/.cvsignore: Permission denied
cvs [update aborted]: cannot make directory 10.2/stable/main/finkinfo: 
No such file or directory 
### execution of su failed, exit code 1 Failed: 
Updating using CVS failed. Check the error messages above.

In this case you need to reset your cvs directories. Use the command:

sudo find /sw/fink -type d -name 'CVS' -exec rm -rf {}\
; fink selfupdate-cvs

If, you don't see either of the above messages, then this almost always means you've modified a file in your /sw/fink/dists tree and now the maintainer has changed it. Look further back in the selfupdate-cvs output for lines that start with "C", like so:

C 10.2/unstable/main/finkinfo/libs/db31-3.1.17-6.info 
... (other info and patch files) ... 
### execution of su failed, exit code 1 
Failed: Updating using CVS failed. Check the error messages above.

The "C" means CVS had a conflict in trying to update the latest version. The fix is to delete any files that show up as starting with "C" in the output of selfupdate-cvs, and try again:

sudo rm /sw/fink/10.2/unstable/main/finkinfo/libs/db31-3.1.17-6.info
fink selfupdate-cvs

Q5.14: When I use Fink, my whole machine freezes up/kernel panics/dies. Help!

A: A number of reports in fall, 2002 on the fink-users mailing list indicated problems (including kernel panics and infinite hangs during patching) when using Fink to compile packages while anti-virus software is installed. You may need to switch off any anti-virus software before using Fink.

Q5.15: I'm trying to install a package, but Fink can't download it. The download site shows a later version number of the package than what Fink has. What do I do?

A: The package sources get moved around by the upstream sites when new versions are released.

The first thing you should do is run fink selfupdate. It may be that the package maintainer has already fixed this, and you will get an updated package description with either a more recent version or a revised download URL.

If this doesn't work, most sources are available on http://distfiles.master.finkmirrors.net/ (thanks to Rob Braun) , and you can run fink configure to choose to search "Master" source mirrors so that Fink will automatically look there.

If this doesn't work, please let the package maintainer (available from "fink describe packagename ") know that the URL is broken; not all maintainers read the mailing lists all of the time.

To get a usable source, first try hunting around the remote site in other directories for the same version of the source that Fink wants (e.g. in an "old" directory). Keep in mind, though, that some remote sites like to trash the old versions of their packages. If the official site doesn't have it, then try a web search--sometimes there are unofficial sites that have the tarball you want. Another place to look is http://us.dl.sourceforge.net/fink/direct_download/source/, which is where Fink stores sourcefiles from packages that have been released in binary form. If all of the above fail, then you might consider posting on the fink-users mailing list to ask if anybody has the old source available to give you.

Once you locate the proper source tarball, download it manually, and then move the file into your Fink source location (i.e. for a default Fink install, "sudo mv package-source.tar.gz /sw/src/". Then use 'fink install packagename ' as normal.

If you can't get the source file, then you'll have to wait for the maintainer to deal with the problem. They may either post a link to the old source, or update the .info and .patch files to use the newer version.

Q5.16: I get "command not found" errors when I run Fink or anything that I installed with Fink.

A: If this always happens, then you may have inadvertently modified (or failed to modify) your startup scripts. Run the /sw/bin/pathsetup.sh script in a terminal window. This program will attempt to detect your default shell and add a command to load Fink's shell initialization script into your shell's configuration. You'll then need to open a new terminal session so that your environment settings are loaded. Note: Some older versions fink called this script pathsetup.command instead of pathsetup.sh. Alternately, you can run the pathsetup.app application on the Fink binary distribution disk image.

On the other hand, if you only have problems in the Apple X11 terminal, the easy solution is to modify the "Terminal" entry in the X11 Application menu via the Applications->Customize Menu... option. Instead of just

xterm

change the command field to read

xterm -ls

ls here means login shell, and the result is that your full login setup gets used (just like the OS X Terminal).

These /sw/bin/init.* scripts do much more than just add /sw/bin to your PATH. Many packages will not work correctly without these additional actions.

Q5.17: I want to hide /sw in the Finder to keep users from damaging the Fink setup.

A: You can indeed do this. If you have the Development Tools installed, then you can run the following command:

sudo /Developer/Tools/SetFile -a V /sw

This makes /sw invisible, just like the standard system folders (/usr, etc.). If you don't have the Developer Tools, there are various third-party applications that let you manipulate file attributes--you need to set /sw to be invisible.

Q5.18: I can't install anything, because I get the following error: "install-info: unrecognized option `--infodir=/sw/share/info'"

A: This usually is due to a problem in your PATH. In a terminal window type:

printenv PATH

If /sw/sbin doesn't appear at all, then you need to set your environment up as per the instructions in the Users Guide. If /sw/sbin is there, but there are other directories ahead of it (e.g. /usr/local/bin), then you will either want to reorder your PATH so that /sw/sbin is near the beginning. Or if you really need the other directory to be before /sw/sbin, and this former directory includes another install-info directory, then you'll want to temporarily rename this install-info subdirectory when you use Fink.

Q5.19: I can't install or remove anything, because of a problem with a "files list file".

A: Typically these errors take the form:

files list file for package packagename contains empty filename

or

files list file for package packagename is missing final newline

This can be fixed, with a little work. If you have the .deb file for the offending package currently available on your system, then check its integrity by running

dpkg --contents full-path-to-debfile
        

e.g.

dpkg --contents /sw/fink/debs/libgnomeui2-dev_2.0.6-2_darwin-powerpc.deb

If you get back a listing of directories and files, then your .deb is OK. If the output is something other than directories and files, or if you don't have the .deb file, you can still proceed because the error doesn't interfere with builds.

If you have been installing from the binary distribution or you know for sure that the version in the binary distribution is the same as what you have installed (e.g. by checking the package database), then you can get a .deb file by running sudo apt=get install --reinstall --download-only packagename . Otherwise you can build one yourself by running fink rebuild packagename , but it won't install yet.

Once you have a valid .deb file, then you can reconstitute the file. First become root by using sudo -s (enter your administrative user password if necessary), and then use the following command:

dpkg -c full-path-to-debfile | awk '{if ($6 == "./"){ print "/."; } \
else if (substr($6, length($6), 1) == "/")\
{print substr($6, 2, length($6) - 2); } \
else { print substr($6, 2, length($6) - 1);}}'\ 
> /sw/var/lib/dpkg/info/packagename.list

e.g.

dpkg -c /sw/fink/debs/libgnomeui2-dev_2.0.6-2_darwin-powerpc.deb | awk \
'{if ($6 == "./") { print "/."; } \
else if (substr($6, length($6), 1) == "/") \
{print substr($6, 2, length($6) - 2); } \
else { print substr($6, 2, length($6) - 1);}}' \ 
> /sw/var/lib/dpkg/info/libgnomeui2-dev.list

What this does is to extract the contents of the .deb file, remove everything but the filenames, and write these to the .list file.

Q5.20: I get a bunch of garbage when I select packages in dselect. How can I use it?

A: There are issues between dselect and Terminal.app. A workaround is to enter the following command

tcsh users:

setenv TERM xterm-color

bash users:

export TERM=xterm-color

before you run dselect. You may want to put this in your startup file (e.g. .cshrc | .profile) so that it gets run all of the time.

Q5.21: Why do I get a bunch of "dyld: perl undefined symbols" errors when I run Fink commands?

A: Obsolete

If you see an error sequence like the following:

dyld: perl Undefined symbols: 
_Perl_safefree
_Perl_safemalloc 
_Perl_saferealloc 
_Perl_sv_2pv 
_perl_call_sv
_perl_eval_sv 
_perl_get_sv

then what has probably happened is that you updated Perl to a new version and now storable-pm needs to be updated. You should update Fink. During the process you will be prompted to install either perl-core or system-perl; choose the latter. In addition, storable-pm should also get updated.

For OS 10.1.x, perform the following commands (you'll need the Developer Tools):

sudo mv /sw/lib/perl5/darwin/Storable.pm /tmp 
sudo mv /sw/lib/perl5/darwin/auto/Storable /tmp 
fink rebuild storable-pm 
fink selfupdate-cvs

Q5.22: I can't seem to update Fink's version.

A: If neither running fink selfupdate nor sudo apt-get update ; sudo apt-get dist-upgrade updates you to a newer Fink release, then you may need to download a newer version of the fink package manually. The relevant commands are:

Q5.23: Can I put Fink in a volume or directory with a space in its name?

A: We recommend against putting your Fink directory tree inside a directory with spaces in its name. It's just not worth the hassle.

Q5.24: When I try to do a binary update, there are many messages with "File not found" or "Couldn't stat package source list file".

A: If you see something like the following:

Err file: local/main Packages 
File not found 
Ign file: local/main Release 
Err file: stable/main Packages 
File not found 
Ign file: stable/main Release 
Err file: stable/crypto Packages 
File not found 
Ign file: stable/crypto Release 
...
Failed to fetch file:/sw/fink/dists/local/main/binary-darwin-powerpc/Packages
File not found 
Failed to fetch file:/sw/fink/dists/stable/main/binary-darwin-powerpc/Packages
File not found
Failed to fetch file:/sw/fink/dists/stable/crypto/binary-darwin-powerpc/Packages
File not found 
Reading Package Lists... Done 
Building Dependency Tree...Done 
E: Some index files failed to download, 
they have been ignored, or old ones used instead. 
update available list script returned error exit status 1.

then all you need to do is run fink scanpackages. This generates the files that aren't being found.

If you get an error of the following form:

W: Couldn't stat source package list file: unstable/main Packages
(/sw/var/lib/apt/lists/_sw_fink_dists_unstable_main_binary-darwin-
powerpc_Packages) - stat (2 No such file or directory)

then you should run

sudo apt-get update
fink scanpackages

to fix it.

Q5.25: I've changed my OS | Developer Tools, but Fink doesn't recognize the change.

A: When changing the Fink distribution (of which the source and binary distros are subsets), Fink needs to be told that this has happened. To do this, you can run a script that normally gets run when you first install Fink:

/sw/lib/fink/postinstall.pl

Doing this will point Fink to the correct place.

Q5.26: I get errors with gzip | dpkg-debI applications from the fileutils package! Help!

A: Errors of the form:

gzip -dc /sw/src/dpkg-1.10.9.tar.gz | /sw/bin/tar -xf - 
### execution of gzip failed, exit code 139

or

gzip -dc /sw/src/aquaterm-0.3.0a.tar.gz | /sw/bin/tar -xf -
gzip: stdout: Broken pipe 
### execution of gzip failed, exit code 138

or

dpkg-deb -b root-base-files-1.9.0-1 /sw/fink/dists/unstable/main/binary-darwin-powerpc/base

### execution of dpkg-deb failed, exit code 1
Failed: can't create package base-files_1.9.0-1_darwin-powerpc.deb

or segmentation faults when running utilities from fileutils, e.g. ls or mv, are likely to be due to a prebinding error in a library, and can be fixed by running

sudo /sw/var/lib/fink/prebound/update-package-prebinding.pl -f

Q5.27: When I open a Terminal window, I get a message that "Your environment seems to be correctly set up for Fink already.", and it logs out.

A: What happened is that somehow the OSX Terminal program has been told to run /sw/bin/pathsetup.command every time you log in. You can fix this by removing the Preferences file, ~/Library/Preferences/com.apple.Terminal.plist.

If you have other preferences that you want to keep, you can edit the file with a text editor and remove the reference to /sw/bin/pathsetup.command.

Q5.28: I have Fink installed away from the main partition and I can't update the fink package from source. There are errors involving chowname.

A: If your error looks like:

This first test is designed to die, so please ignore the error
message on the next line.
# Looks like your test died before it could output anything.
./00compile............................ok
./Base/initialize......................ok
./Base/param...........................ok
./Base/param_boolean...................ok
./Command/cat..........................ok
./Command/chowname.....................#     
Failed test (./Command/chowname.t at line 27)
#          got: 'root'
#     expected: 'nobody'

then you need to run Get Info on the drive/partition where Fink is installed and unselect the "Ignore ownership" button.

Q5.29: Fink won't update my packages because it says it can't find the 'gnu' mirror.

A: If you get an error that ends with

Failed: No mirror site list file found for mirror 'gnu'.

then most likely you need to update the fink-mirrors package, e.g. via:

fink install fink-mirrors

Q5.30: I can't update Fink, because it can't move /sw/fink out of the way.

A: This error:

Failed: Can't move "/sw/fink" out of the way.

is usually due, in spite of what it says, to permissions errors in one of the temporary directories that get created during a selfupdate. Remove these:

sudo rm -rf /sw/fink.tmp /sw/fink.old

Q5.31: I keep getting 403 errors when I use apt-get or dselect or the Fink Commander Binary menu.

A: There have been problems with the Sourceforge download servers, and therefore we are moving the binary distribution repository for this very reason.

Q5.32: I get a message that says "No fonts found".

A: If you see the following (so far only seen on OS 10.4):

No fonts found; this probably means that the fontconfig
library is not correctly configured. You may need to
edit the fonts.conf configuration file. More information
about fontconfig can be found in the fontconfig(3) manual
page and on http://fontconfig.org.

then you can fix it by running

sudo fc-cache

Q5.33: I can't install Fink via the Installer package, because I get "volume doesn't support symlinks" errors.

A: This message commonly means that you've tried to run the Fink installer as user who doesn't have administrative privileges. Make sure to log in at the login screen as such a user or switch to such a user in the Finder (i.e. fast user switching) before starting the Fink installer.

If you're having trouble even when using an admin account, then it's likely a problem with the permissions on your top-level directory. Use Apple's Disk Utility (from the Utilities sub-folder in your Applications folder), select the hard drive in question, choose the First Aid tab, and press Repair Disk Permissions.

Q5.34: I can't update Fink, because package architecture (darwin-i386) does not match system (darwin-powerpc).

A: This error occurs if you use a PowerPC installer package on an Intel machine. You'll need to flush your Fink installation, e.g.:

sudo rm -rf /sw

and then download the disk image for Intel machines from the downloads page.

Q5.35: I haven't been able to do a cvs selfupdate.

A: If you get errors that include lines like:

cvs [update aborted]: connect to cvs.sourceforge.net(66.35.250.207):
2401 failed: Operation timed out

this is because of a recent restructuring of the CVS servers at sourceforge.net. Fink files are now at fink.cvs.sourceforge.net. You'll need to update the fink-mirrors package via the binary tools:

sudo apt-get update ; sudo apt-get install fink-mirrors

6 Compile Problems - General

Q6.1: A configure script complains that it can't find an "acceptable cc". What's that?

A: Read the docs next time. To compile packages from source, you must install the Developer Tools, which among other stuff contains the C compiler, cc.

Q6.2: When I try a "fink selfupdate-cvs" I get this message: "cvs: Command not found."

A: You need to install the Developer Tools.

Q6.3: I'm getting an error message involving make

A: if your message is of the form

make: command not found

or

Can't exec "make": 
No such file or directory at /sw/lib/perl5/Fink/Services.pm line 190.

It means you need to install the Developer Tools.

On the other hand, if your error message looks like

make: illegal option -- C

then you've replaced the GNU version of the make utility installed as part of the Developer Tools with a BSD version of make. Many packages rely on special features only supported by GNU make. Make sure that /usr/bin/make is a symlink to gnumake, not bsdmake. Furthermore, make sure that /usr/local/bin/ does not contain another copy of make.

Q6.4: I'm getting a strange usage message from the head command. What's broken?

A: If you're seeing this:

Unknown option: 1 Usage: head [-options] <url>...

followed by a list of option descriptions, you have a broken head executable. This happens when you install the Perl libwww library on an HFS+ system volume. It tries to create a new command /usr/bin/HEAD, which overwrites the existing head command because the file system is case-insensitive. head is a standard command used in many shell scripts and Makefiles. You need to get the original head executable back if you want to use Fink.

The bootstrap script of the source release now checks for this, but you can still run into it if you use the binary release for first-time installation or install libwww after you installed Fink.

This problem has also been reported due to the installation of /sw/bin/HEAD (not by any Fink package). This is easier to solve: rename /sw/bin/HEAD.

Q6.5: When I try to install a package I get an error message about trying to overwrite a file that is in another package.

A: This occasionally happens with splitoff packages (i.e. the ones with -dev, -shlibs, etc.) when a file gets moved from one part of the splitoff to another (e.g. from foo to foo-shlibs. What you can do is overwrite the file with that from the package you are trying to install (since they are nominally the same):

sudo dpkg -i --force-overwrite filename
        

where filename is the .deb file corresponding to the package that you are trying to install.

Q6.6: After I installed the December 2002 Development Tools I get messages about "weak libraries".

A: This is new with the December 2002 Tools. You may occasionally see messages like (choosing libgdk-pixbuf as an example):

ld: warning dynamic shared library:
/sw/lib/libgdk-pixbuf.dylib not made a weak library in output with
MACOSX_DEPLOYMENT_TARGET environment variable set to: 10.1

You may regard these as harmless. If you are curious, read through the release notes in the developer documentation directory, especially GCC's and the linker's, for more info. It essentially has to do with whether missing symbols at runtime is considered a fatal error on startup or not, for applications that use weak references.

Q6.7: What does "execution of mv failed, exit code 1" mean when I try to build a package?

A: If you have StuffIt Pro installed, it could be that you have "Archive Via Real Name" mode enabled. Check for a StuffIt preference pane in the System Preferences tool, and disable "ArchiveViaRealName" if it's enabled. It contains a buggy reimplementation of a few important system calls that will cause a number of strange and transient errors such as this.

Otherwise, an mv error typically means that another error happened earlier in the build, but the build process didn't stop. To track down the offending file(s), search in the output of the build for the nonexistent file, e.g. if you have something like:

mv /sw/src/root-foo-0.1.2-3/sw/lib/libbar*.dylib \
/sw/src/root-foo-shlibs-0.1.2-3/sw/lib/ 
mv: cannot stat `/sw/src/root-foo-0.1.2-3/sw/lib/libbar*.dylib': 
No such file or directory 
### execution of mv failed, exit code 1 
Failed: installing foo-0.1.2-3 failed

then you should look for libbar somewhere further back in the output of your build attempt.

Q6.8: I can't install a package | update because I get a message that a "node" already exists.

A: These errors look something like this:

Failed: Internal error: node for system-xfree86 already exists

This problem is that the dependency engine is confused, due to changes in some of the package info files. To fix it:

Q6.9: I've heard that libraries and headers installed under /usr/local sometimes cause build problems for Fink. Is this true?

A: This is a frequent source of problems, because the package configuration script finds headers and libraries in /usr/local and decides to use them rather than using those in the Fink path. If you are having problems with a build that aren't covered by another FAQ entry, you should check whether you have libraries in /usr/local/lib or headers in /usr/local/include. If so, then try renaming /usr/local to something else, e.g.:

sudo mv /usr/local /usr/local.moved

do your build, and then put /usr/local back:

sudo mv /usr/local.moved /usr/local

Q6.10: When I try to build a package, I get a message that a "table of contents" is out of date. What do I need to do?

A: The output hints at what to do. The message is usually something like:

ld: table of contents for archive: 
/sw/lib/libintl.a is out of date; 
rerun ranlib(1) (can't load from it)

What you need to do is run ranlib (as root) on whatever library is causing the problem. As an example, for the case above, you would run:

sudo ranlib /sw/lib/libintl.a

Q6.11: Fink Commander hangs when I try to install atlas.

A: This happens because one of the steps in the build of atlas sends a prompt to the user that Fink Commander doesn't display. You'll have to use fink install atlas instead.

Q6.12: I get messages saying that I'm missing stddef.h | wchar.h | stdlib.h | crt1.o, or that my C compiler cannot create executables.

A: Both of these problems are typically due to the absence of essential headers that are provided by the DevSDK package of the Developer Tools. Check whether /Library/Receipts/DevSDK.pkg exists on your system. If not, then run the Dev Tools Installer again, and install the DevSDK package using a Custom Install.

The cannot create executables error can also occur when your Developer Tools version is for an earlier OS version.

Q6.13: I can't update, because Fink is "unable to resolve version conflict on multiple dependencies".

A: To get around this, try updating a single package, then try to use "fink update-all" again. If you still get the message, repeat the process.

Q6.14: I can't install anything because I get "dpkg: parse error, in file `/sw/var/lib/dpkg/status'"!

A: This means that somehow your dpkg database got corrupted, usually from a crash or some other unrecoverable error. You can fix it by copying the previous version of the database, like so:

sudo cp /sw/var/lib/dpkg/status-old /sw/var/lib/dpkg/status

You may need to re-install the last couple of packages you installed before the problem started occurring.

Q6.15: I get errors involving freetype.

A: There are several varieties of such errors. If you get the following:

/usr/bin/ld: can't locate file for: -lfreetype

check whether you have an extraneous freetype-config excutable by running

where freetype-config

if you're using tcsh, or

type -a freetype-config

if you're using bash. The Mono Framework has been known to install a /usr/bin/freetype-config that is a symbolic link to a file in that framework.

If your error looks like:

/sw/include/pango-1.0/pango/pangoft2.h:52: 
error: parse error before '*' token 
/sw/include/pango-1.0/pango/pangoft2.h:57:
error: parse error before '*' token
/sw/include/pango-1.0/pango/pangoft2.h:61: 
error: parse error before '*' token 
/sw/include/pango-1.0/pango/pangoft2.h:86: 
error: parse error before "pango_ft2_font_get_face"
/sw/include/pango-1.0/pango/pangoft2.h:86: 
warning: data definition has no type or storage class 
make[2]: *** [rsvg-gz.lo] Error 1
make[1]: *** [all-recursive] Error 1 
make: *** [all-recursive-am] Error 2 
### execution of make failed, exit code 2 
Failed: compiling librsvg2-2.4.0-3 failed

or

In file included from vteft2.c:32: 
vteglyph.h:64: error:
parse error before "FT_Library" 
vteglyph.h:64: warning: 
no semicolon at end of struct or union vteft2.c: 
In function `_vte_ft2_get_text_width': 
vteft2.c:236: error: 
dereferencing pointer to incomplete type 
vteft2.c: In function `_vte_ft2_get_text_height':
vteft2.c:244: error: 
dereferencing pointer to incomplete type
vteft2.c: In function `_vte_ft2_get_text_ascent': 
vteft2.c:252: error:
dereferencing pointer to incomplete type 
vteft2.c: In function `_vte_ft2_draw_text': 
vteft2.c:294: error: 
dereferencing pointer to incomplete type 
vteft2.c:295: error: 
dereferencing pointer to incomplete type
make[2]: *** [vteft2.lo] Error 1 
make[1]: *** [all-recursive] Error 1 
make: *** [all] Error 2 
### execution of make failed, exit code 2
Failed: compiling vte-0.11.10-3 failed

or

checking for freetype-config.../usr/X11R6/bin/freetype-config 
checking For sufficiently new FreeType (at least 2.0.1)... no 
configure: error: pangoxft 
Pango backend found but did not find freetype libraries 
make: *** No targets specified and no makefile found. Stop. 
### execution of LD_TWOLEVEL_NAMESPACE=1 failed, exit code 2 
Failed: compiling gtk+2-2.2.4-2 failed

the problem is due to confusion between headers from the freetype | freetype-hinting package and the freetype2 headers that are included with X11 | XFree86.

fink remove freetype freetype-hinting

will remove whichever variant you have installed. On the other hand, if your error looks like:

ld: Undefined symbols: _FT_Access_Frame

this is typically due to a residual file from a prior installation of X11. Reinstall the X11 SDK.

Finally, if you get an error like

dyld: klines Undefined symbols: /sw/lib/libqt-mt.3.dylib 
undefined reference to _FT_Access_Frame

then you probably have a binary version that built fine with gcc3.3 on Jaguar but doesn't work on Panther. This has now been updated, so you you just need to update your packages, e.g. via sudo apt-get update ; sudo apt-get dist-upgrade.

Q6.16: I get build errors involving `Dl_info'.

A: If you have an error that looks like this

unix_dl.c: In function `rep_open_dl_library':
unix_dl.c:328: warning: assignment discards qualifiers from pointer target type 
unix_dl.c: In function `rep_find_c_symbol': 
unix_dl.c:466: error: `Dl_info' undeclared (first use in this function)
unix_dl.c:466: error: (Each undeclared identifier is reported only once 
unix_dl.c:466: error: for each function it appears in.)
unix_dl.c:466: error: parse error before "info" 
unix_dl.c:467: error: `info' undeclared (first use in this function) 
make[1]: *** [unix_dl.lo] Error 1

then most likely you have a header file, /usr/local/include/dlfcn.h, that is incompatible with Panther. Move it out of the way.

This usually is installed by Open Office, and you should replace this header file, as well as the library /usr/local/lib/libdl.dylib, with symbolic links to Panther's builtin files

sudo ln -s /usr/include/dlfcn.h /usr/local/include/dlfcn.h
sudo ln -s /usr/lib/libdl.dylib /usr/local/lib/libdl.dylib

Q6.17: Fink says I'm missing gcc2 or gcc3.1 but I can't seem to install it.

A: This is because gcc2 and gcc3.1 are virtual packages to indicate the presence of gcc-2.95 and gcc-3.1, respectively, on your system. Install the gcc2.95 and/or the gcc3.1 package from the XCode Tools (earlier OS versions have gcc-2.95 and gcc-3.1 as part of their main Developer Tools installation).

Note: Installing gcc2.95 and/or gcc3.1 will not interfere with your gcc3.3 compiler--they can all coexist.

Q6.18: Fink says Failed: Can't resolve dependency "system-java14-dev", but there's no such package.

A: That's because it's a virtual package. This type of error occurs when Java gets updated by Software Update: the header files get removed, which causes the -dev package not to be generated.

You need to download the appropriate Java Developer Tools package from Apple. In this specific case that's the Java 1.4.2 Developer Tools.

Q6.19: When I try to install anything, I get dpkg (subprocess): failed to exec dpkg-split to see if it's part of a multiparter: No such file or directory. How do I fix this?

A: Generally, this can be fixed by setting your environment up correctly, cf. this FAQ entry.

Q6.20: I get the following message: configure: error: XML::Parser perl module is required for intltool. What do I do about it?

A: If you're using the unstable tree, make sure you have intltool-0.34.1or later installed.

Otherwise, you need to make sure that you have the right variant of the xml-parser-pm package to match the Perl version for your system. For example, if you're on Panther you should have xml-parser-pm581 rather than xml-parser-pm560 (you may also have the xml-parser-pm placeholder), since you have Perl-5.8.1 rather than Perl-5.6.0. If you're on Jaguar, and are using the default system Perl version, you'll have the pm560 variant, and if you've installed Perl 5.8.0 you may have the pm580 variant.

Q6.21: I'm trying to download a package, but Fink goes to some weird site with distfiles in its name, and the file isn't there.

A: What's happened here is that Fink is trying to use one of it's so called Master mirrors. These were set up to makes sure that sources for Fink packages are available even when the upstream site has moved them around. Typically these errors occur when a new upstream version of a package is released, but hasn't made it to the Master mirrors yet.

To remedy this, run fink configure and set the search order to use Master mirrors last.

Q6.22: I want Fink to use different options in building a package.

A: The first thing to do is to contact the package maintainer to request a variant. It may be relatively easy to do it. If you don't hear from the maintainer or see the new packages, or want to try a different option yourself, check out the Packaging Tutorial and Packaging Manual.

Note: Fink is deliberately set up such that all official binaries are identical regardless of what machine they are built on, so things like G5 optimization won't happen with an official package. If you want them, you'll have to do it yourself.

Q6.23: Whenever I try to build from source, Fink keeps waffling between gettext-dev and libgettext3-dev.

A: Some packages that need gettext headers to build have been updated to use libgettext3-dev and some still use gettext-dev. Consequently, Fink may try to switch to whichever one isn't currently installed in order to satisfy a build dependency for some package that you're trying to update. In addition, the fink tool treats gettext-dev as essential, and will install it any time you selfupdate.

Similar behavior can happen for other pairs of packages, too.

Unfortunately, due to limitations in the build-dependency engine, you may find that your build bombs because you've swapped in one of these but some later package in your build chain wants the other one. You can usually proceed by repeating your update command again.

In extreme cases you may wind up having to install those packages which build-depend on gettext-dev separately from those which want libgettext3-dev (or whichever pair are causing problems). You may even have to install packages one by one.

A permanent fix should hopefully be available in fink-0.24.9.

Q6.24: I get errors involving MACOSX_DEPLOYMENT_TARGET when I try to build a Python module.

A: For errors that look like the following:

running build
running build_ext
Traceback (most recent call last):
  File "setup_socket_ssl.py", line 21, in ?
    depends = ['socketmodule.h'] )
  File "/sw/src/root-python24-2.4.1-1/sw/lib/python2.4/distutils/core.py", line 166, in setup
SystemExit: error: $MACOSX_DEPLOYMENT_TARGET mismatch: now "10.4" but "10.3" during configure
### execution of /sw/bin/python2.4 failed, exit code 1

the problem occurs because the python2* packages write the current MACOSX_DEPLOYMENT_TARGET to a configuration file when they're built and the python build utilities use this value when compiling modules. This means that if you have, for example, a python24 package on 10.4 that was built on 10.3, either by upgrading 10.3 => 10.4, or via the 10.4-transitional binary distribution, in which python24 wasn't rebuilt, there will be a mismatch between what python thinks MACOSX_DEPLOYMENT_TARGET should be (10.3) and what it actually is (10.4).

The fix is to rebuild the offending python package, e.g. fink rebuild python24 for the case above.

For runtime errors that give the same type of error message as above, rebuild the module after rebuilding the appropriate python2* package.

Q6.25: I get unrecognized option `-dynamic' errors from libtool.

A: This error:

 libtool: unrecognized option `-dynamic'

typically means that you've replaced Apple's /usr/bin/libtool with a GNU libtool. Unfortunately, the two libtools do not do the same thing.

The only way to solve this is to get a working Apple libtool from somewhere. It is installed as part of the DeveloperTools.pkg package of the XCode Tools, and you can reinstall that whole package if you first clear out its receipt in /Library/Receipts (drag it to the Trash for OS 10.4 and later, or use sudo rm -rf /Library/Receipts/DeveloperTools.pkg for 10.3).

7 Compile Problems - Specific Packages

Q7.1: A package fails to build with errors involving sed.

A: This can happen if your login script (e.g. ~/.cshrc) does something that writes to the terminal, e.g "echo Hello" or xttitle. To get rid of the problem, the easy solution is to comment out the offending lines.

If you want to keep the echo, then you can do something like the following:

if ( $?prompt) then 
	echo Hello 
endif

Q7.2: I want to switch to Fink's XFree86 packages, but I can't install xfree86-base | xfree86, because it conflicts with system-xfree86.

A: All flavors of X11, unfortunately, really needs to be installed in /usr/X11R6. Because of this the Fink xfree86-base and xfree86-rootless packages install there, too. However, since Fink won't remove any files that aren't in its database, it won't automatically replace a non-Fink installation of X11.

Here's how to proceed:

Note: 10.2.x users with up-to-date versions of Fink (>= 0.16.2) and 10.3.x users should skip step 1 below (it won't work anyway).

1. Remove system-xfree86. If you don't have any packages that depend on X11, this is straightforward. Frequently, however, many packages that depend on X11 are installed. Rather than uninstalling all of them, you can use

sudo dpkg --remove --force-depends system-xfree86

to remove it, leaving everything in place. If you don't have system-xfree86 installed then proceed to step 3.

2. Manually remove all of XFree86. This can be done with

sudo rm -rf /Applications/XDarwin.app /usr/X11R6 /etc/X11

If you are switching from Apple X11, remove the X11 application, too.

3. To get XFree86-4.2.1, Install Fink's xfree86-base and xfree86-rootless packages by the usual means: "fink install" for source users, "apt-get install" or dselect for binaries.

-or-

3a. To get XFree86-4.3.x and above, install Fink's xfree86 package, with "fink install xfree86"--the latest version (XFree86-4.4.x as of May 25th, 2004) isn't in the binary distro yet, and is currently only in the unstable tree [see how to install unstable packages].

Q7.3: How do I change from the non-threaded version of Fink's XFree86 packages to the threaded version (or vice-versa)?

A: If you are running the Fink version of XFree86 and you want to switch between the threaded and non-threaded versions of Fink, you need to manually remove the old version. This is done at the command-line with the commands:

sudo dpkg -r --force-depends xfree86-base 
sudo dpkg -r --force-depends xfree86-shlibs 
sudo dpkg -r --force-depends xfree86-rootless 
sudo dpkg -r --force-depends xfree86-rootless-shlibs

or to delete the threaded versions:

sudo dpkg -r --force-depends xfree86-base-threaded 
sudo dpkg -r --force-depends xfree86-shlibs-threaded 
sudo dpkg -r --force-depends xfree86-rootless-threaded 
sudo dpkg -r --force-depends xfree86-rootless-threaded-shlibs

FinkCommander also has a way to remove packages. In the source window, select a package, and then in the Source Menu use "Force Remove."

If you are using system-xfree86, see the previous question for removing it.

Install the version of xfree86 you want:

xfree86-base and xfree86-rootless

xfree86-base-threaded and xfree86-rootless-threaded

by the usual means: "fink install" for source users, "apt-get install" or dselect for binaries.

Q7.4: "When I try to install KDE, I get the following message: 'Can't resolve dependency "cctools (>= 446-1)"'"

A: This somewhat cryptic message means you need to install the December 2002 Developer Tools.

Q7.5: I can't update libiconv.

A: If you get errors of the form:

libtool: link: cannot find the library `/sw/lib/libiconv.la'

you can solve this problem by running

fink remove gettext-dev
fink install libiconv

Q7.6: i can't install g77 because c++filt is missing. Where do I get it?

A: If you get errors of the form

xgcc: installation problem, cannot exec `c++filt': No such file or directory

since updating to Tiger, then you need to do the following:

1) Flush out your old 2) Reinstall BSD.pkg (from your main OS install)

Q7.7: Fink refuses to update the gettext package, complaining that the dependencies are in an inconsistent state.

A: After running fink selfupdate to be sure you have the latest versions, try fink update gettext-tools. An old version of the gettext-tools package may be preventing you from updating gettext.

Q7.8: I can't install gtk+2 on OS 10.5.2 because /usr/X11/lib/libXrandr.2.0.0.dylib is missing.

A: This problem affects machines with OS 10.5.2 pre-installed. There is currently a bug in Apple's X11 in that a file in it that is used for building references /usr/X11/lib/libXrandr.2.0.0.dylib, while it actually has /usr/X11/lib/libXrandr.2.1.0.dylib.

The workaround is to run the following command to fix the file:

sudo perl -pi.bak -e 's|2.0.0|2.1.0|' /usr/X11/lib/libXrandr.la

Q7.9: I'm having issues with a package that isn't listed here.

A: Since package problems tend to be transient, we've decided to put them up on the Fink wiki. Check the Package issues page.

8 Package Usage Problems - General

Q8.1: I'm getting lots of messages like "locale not supported by C library". Is that bad?

A: It's not bad, it just means that the program will use the default English messages, date formats, etc. The program will function normally otherwise. The Running X11 document has details.

Q8.2: There are suddenly a number of strange users on my system, with names like "mysql", "pgsql", and "games". Where did they come from?

A: You have used Fink to install a package which is dependent on another package, passwd. passwd installs a number of extra users on your system for security reasons -- on Unix systems, files and processes belong to "owners", which allows system administrators to fine-tune the permissions and security of the system. Programs such as Apache and MySQL need an "owner", and it is insecure to assign these daemons to root (imagine what would happen if Apache were to be compromised and suddenly had write permission to all files on the system). Thus, the passwd package takes the work out of setting up these extra users for Fink packages that require this.

It can be alarming to discover suddenly a number of unexpected users in your "System Preferences: Users" pane (on 10.2.x) or "System Preferences: Accounts" pane (on 10.3.x), but suppress the urge to delete them:

Fink does request permission to install these additional users on your system during the installation of the passwd package, so this should not have come as a surprise.

Q8.3: How do I compile something myself using Fink-installed software?

A: When compiling something yourself outside of Fink, the compiler and linker need to be told where to find the Fink-installed libraries and headers. For a package that uses standard configure/make process, you need to set some environment variables:

-tcsh-

setenv CFLAGS -I/sw/include 
setenv LDFLAGS -L/sw/lib 
setenv CXXFLAGS $CFLAGS 
setenv CPPFLAGS $CXXFLAGS 
setenv ACLOCAL_FLAGS "-I /sw/share/aclocal"
setenv PKG_CONFIG_PATH "/sw/lib/pkgconfig"
setenv MACOSX_DEPLOYMENT_TARGET 10.4

-bash-

export CFLAGS=-I/sw/include 
export LDFLAGS=-L/sw/lib 
export CXXFLAGS=$CFLAGS 
export CPPFLAGS=$CXXFLAGS 
export ACLOCAL_FLAGS="-I /sw/share/aclocal"
export PKG_CONFIG_PATH="/sw/lib/pkgconfig"
export MACOSX_DEPLOYMENT_TARGET=10.4

(assuming that the build system is running OS 10.4 or later)

It is often easiest just to add these to your startup files (e.g. .cshrc | .profile) so they are set automatically. If a package does not use these variables, you may need to add the "-I/sw/include" (for headers) and "-L/sw/lib" (for libraries) to the compile lines yourself. Some packages may use similar non-standard variables such as EXTRA_CFLAGS or --with-qt-dir= configure options. "./configure --help" will usually give you a list of the extra configure options.

In addition, you may need to install the development headers (e.g. foo-1.0-1-dev) for the library packages that you are using, if they aren't already installed.

Q8.4: I can't run any of my Fink-installed applications using the Applications menu in Apple X11.

A: Apple X11 doesn't keep track of the Fink environment settings, which means that the Applications menu doesn't have the PATH set correctly to find your Fink applications. The solution is to preface the name of a Fink-installed application with

source /sw/bin/init.sh ;

For example, if you want to run a Fink-installed GIMP, then put

source /sw/bin/init.sh ; gimp

in the Command field of your GIMP entry.

You can also edit your .xinitrc file (in your user directory) and add:

source /sw/bin/init.sh

after the first line.

Q8.5: I'm bewildered by the X11 options: Apple X11, XFree86, etc. What should I install?

A: All are variants on XFree86 (they're all based on the XFree86 code), but have some slight differences between them. There are different options under Panther and under Jaguar.

Under Panther you have the choice between:

Under Jaguar, the most popular choices, and the Fink packages to make them work are:

There are other options, as well. There is a more extensive treatment in the Running X11 document.

Q8.6: When I try to run an application, I get a message that says "cannot open display:". What do I need to do?

A: This error means that the system isn't connecting with your X display. Make sure you do the following:

1. Start X (Apple's X11, XFree86, ...).

2. Make sure your DISPLAY environment variable is set correctly. If you are using the default setup for X, you can do this with

setenv DISPLAY :0

if you are running tcsh, or

export DISPLAY=:0

if you're running bash.

Q8.7: I don't see my favorite program in Fink. How do I suggest a new package for inclusion in Fink?

A: Make the request on the Package Request Tracker on the Fink project page.

Note that you must have a SourceForge id to do so.

Q8.8: What are all these system-* "virtual packages" that are sometimes present, but that I can't seem to install or remove myself?

A: Packages with names like system-perl are placeholder packages. These do not contain actual files, but merely serve as a mechanism for fink to know about programs that have been installed manually outside of fink.

Starting with the 10.3 distribution, most placeholders aren't even real packages that you can install and remove. Instead, they are "Virtual Packages", package data structures generated by the fink program itself in response to a preconfigured list of manually installed programs. For each virtual package, fink checks for certain files in certain locations, and if they are found, considers that virtual package "installed".

You can run the program fink-virtual-pkgs (part of the fink package) to get a listing of exactly what fink thinks is installed. Adding the --debug flag will give lots of diagnostic information about exactly what files fink is checking.

Unfortunately, there is no mechanism by which you can install an arbitrary program yourself (outside of fink) and have fink recognize that program rather than trying to install its own version of it. It's just too difficult in the general case to be able to check configure and compiler flags, pathnames, etc.

Here are the most important virtual packages that fink defines (as of fink-0.19.2):

9 Package Usage Problems - Specific Packages

Q9.1: I get no sound from XMMS

A: Make sure you have the "eSound Output Plugin" selected in the XMMS preferences. For some strange reason, it selects the disk writer plugin as the default.

If you still get no sound output or XMMS complains that it can't find your sound card try this:

Note that esd is designed to be run by a normal user, not by root. It usually communicates via the file system socket /tmp/.esd/socket. You only need the -tcp and -port switches if you want to run esd clients on another machine over the network.

There have also been reports of XMMS crashing or freezing on 10.1. We don't have an analysis or a fix yet.

Q9.2: If I am editing a file in nedit, when I open another file its window pops up but is unresponsive.

A: This is a known problem that occurs with recent versions of nedit and lesstif on all platforms. The workaround is to open a new window with File-->New, then open the next file you want to work on.

This is now fixed in nedit-5.3-6, which depends on openmotif3 rather than lesstif.

Q9.3: Help! When I start XDarwin, it immediately quits!

A: Don't Panic. The Running X11 document now has an extensive troubleshooting section for this common problem.

Q9.4: When I try to start XDarwin I get the message "xinit: No such file or directory (errno 2): no server "/usr/X11R6/bin/X" in PATH".

A: First, make sure you are sourcing init.sh in your X startup ~/.xinitrc.

In Jaguar, sometimes all of the xfree86 packages get built, but only xfree86-base and xfree86-base-shlibs are installed. Check whether you have xfree86-rootless and xfree86-rootless-shlibs installed. If not, then fink install xfree86-rootless should do the trick.

If you do have it installed, then try fink rebuild xfree86-rootless. If that doesn't work, verify that you have /usr/bin/X11R6 in your PATH.

Q9.5: xterm fails with "dyld: xterm Undefined symbols: xterm undefined reference to _tgetent expected to be defined in /usr/lib/libSystem.B.dylib".

A: This is caused by using a 10.1 version of XFree86 on 10.2. You must upgrade to a 10.2 version.

If you are using the Fink xfree86 packages, then you can get an upgrade by the usual means ("fink selfupdate-cvs ; fink update-all" for installation from source, "fink selfupdate ; sudo apt-get update; sudo apt-get dist-upgrade" for installation from binaries.

If you have installed XFree86 by other means, you can find patches to bring you up to date at the XonX web site.

Q9.6: When I try to start XFree86 I get one of the following errors: "dyld: xinit can't open library: /usr/X11R6/lib/libXmuu.1.dylib" or "dyld: xinit can't open library: /usr/X11R6/lib/libXext.6.dylib"

A: You are missing a file that is supposed to be installed by xfree86-base-(threaded)-shlibs. You should reinstall it using fink reinstall xfree86-base-shlibs (fink reinstall xfree86-base-threaded-shlibs if you are using the threaded XFree86 packages) for source, or sudo apt-get install --reinstall xfree86-base-shlibs for binaries.

Q9.7: I had Fink's XFree86 installed, and I've replaced it with Apple's X11, and now everything's crashing!

A: First of all, if you previously had the "threaded" versions of Fink's XFree86 packages installed, you may need to rebuild the application that is crashing. Some programs check for the availability of threading at build time, and then from then on believe that threading is available to them.

Secondly, you may have just hit an Apple X11 bug. As of the time of this writing, a number of bugs are known by the A