Fink

F.A.Q. - 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:

  • First of all, you have obviously chosen to install a package which requires their use, so deleting the user doesn't make much sense, does it?
  • There are in fact a number of extra users already installed on Mac OS X that you may not have known about: www, daemon, nobody, are just a few of them. The presence of these extra users is a standard Unix convention for running certain services; the passwd package simply adds a couple of extra that Apple did not provide. You can see these Apple-installed users in NetInfo Manager.app, or by running niutil -list . /users
  • If you do decide to delete these users, be very careful of how you go about it. Using the "System Preferences: Users" pane (on 10.2.x) or "System Preferences: Accounts" pane (on 10.3.x) will assign all of their files to a random administrator account, and there have been reports of havoc played with the administrator account's permissions. This is a bug with System Preferences, and has been submitted to Apple. A safer way to remove these users from your system is to do so from within NetInfo Manager.app or use the command line tool niutil in Terminal. Read the man page for niutil for more information about NetInfo.

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. It is also necessary to tell the compiler to use the appropriate target architecture. For a package that uses standard configure/make process, you need to set some environment variables:

-bash-

export CFLAGS=-I/opt/sw/include 
export LDFLAGS=-L/opt/sw/lib 
export CXXFLAGS=$CFLAGS 
export CPPFLAGS=$CXXFLAGS 
export ACLOCAL_FLAGS="-I /opt/sw/share/aclocal"
export PKG_CONFIG_PATH="/opt/sw/lib/pkgconfig"
export PATH=/opt/sw/var/lib/fink/path-prefix-clang:$PATH
export MACOSX_DEPLOYMENT_TARGET=10.9

-tcsh-

setenv CFLAGS -I/opt/sw/include 
setenv LDFLAGS -L/opt/sw/lib 
setenv CXXFLAGS $CFLAGS 
setenv CPPFLAGS $CXXFLAGS 
setenv ACLOCAL_FLAGS "-I /opt/sw/share/aclocal"
setenv PKG_CONFIG_PATH "/opt/sw/lib/pkgconfig"
setenv PATH /opt/sw/var/lib/fink/path-prefix-clang:$PATH
setenv MACOSX_DEPLOYMENT_TARGET 10.9

(assuming that the build system is running OS 10.9 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/opt/sw/include" (for headers) and "-L/opt/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 /opt/sw/bin/init.sh ;

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

source /opt/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 /opt/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:

  • Apple's X11 (on the third disk). Don't forget to install the X11 SDK (on the XCode disk) if you want to compile programs or if you plan to install other X11-related Fink packages from source.

  • 4.4.x built via Fink: install the xfree86 and xfree86-shlibs packages

  • X.org built via Fink: install the xorg and xorg-shlibs packages

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

  • 4.2.x built via Fink: install xfree86-base and xfree86-rootless or xfree86-base-threaded and xfree86-rootless-threaded (and the respective -shlibs)

  • 4.3.x built via Fink: install the xfree86 and xfree86-shlibs packages

  • 4.2.x from Apple (assuming you have the User + SDK packages installed): the system-xfree86 package is automatically generated for current versions of Fink; do NOT install it. (Note that the public beta of Apple's X11 for Jaguar is no longer available, so this is only an option for you if you already have this installed, from the time in which it was available.)

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):

Next: 9. Package Usage Problems - Specific Packages