20
Using Fink: A Developer’s How-To David R. Morrison Duke University O’Reilly Mac OS X Convention October 3, 2002

Morrison david

Embed Size (px)

Citation preview

Page 1: Morrison david

Using Fink:A Developer’s How-To

David R. Morrison Duke University

O’Reilly Mac OS X ConventionOctober 3, 2002

Page 2: Morrison david

David R. Morrison

Installing UNIX programs on OS X:

• Use Frameworks and bundles– Not yet standard UNIX– All libraries must be included

• Install in /usr/local– Using Installer.App– Danger of conflicting files– Hard to manage dependencies

• As part of a coherent distribution– Gnu-Darwin– Fink– DarwinPorts (new)

Page 3: Morrison david

David R. Morrison

The Fink Project

• UNIX distribution– Non-interference policy

• Installs in /sw (like /opt)• And in /usr/local/X11R6

– Careful about licenses

• Many Darwin/Mac OS X patches– Patches routinely sent upstream

• Users can compile locally– Source files downloaded over internet

• Or users can install binaries– No Developer Tools required

Page 4: Morrison david

David R. Morrison

Coherent distribution

• Many libraries already available– Libraries actively maintained– Shared libraries built whenever possible– Older versions of shared libraries kept

• Backward compatibility

• X11R6 from XFree86 project– Window managers– Many existing tools which use X11 interface

• Other large software collections– TeX– Perl modules

Page 5: Morrison david

David R. Morrison

Fink in action

• “fink build foo”– Downloads the source tarball for foo and unpacks it– Applies patches– Compiles the software

• ./configure; make

– Installs the software in a temporary directory– Creates a binary package file (.deb)

• “fink install foo”– Builds the package, if necessary– Calls Debian’s “dpkg” tool to install

• “fink remove foo”

Page 6: Morrison david

David R. Morrison

Contents of a Fink package

Page 7: Morrison david

David R. Morrison

Expanding the percent fields

Page 8: Morrison david

David R. Morrison

Contents of a Fink package

Page 9: Morrison david

David R. Morrison

Making a Fink package

• Examine the source for installation instructions

Page 10: Morrison david

David R. Morrison

Making a Fink package

• Examine the source for installation instructions• If the package uses autoconf, run:

– ./configure --help

• Try compiling– Could use a preliminary fink .info file, or– Could run “./configure” and “make” directly

• If compiling is successful, try installing– Check that everything is in the right place

Page 11: Morrison david

David R. Morrison

The Fink package

Page 12: Morrison david

David R. Morrison

Example 2: libpng

• Includes shared libraries– Fink makes multiple packages from one .info file

• The SplitOff command– “Files” to specify where the files go

• The libpng-shlibs package remains installed– Even after upgrade of others to libpng3

Page 13: Morrison david

David R. Morrison

Page 14: Morrison david

David R. Morrison

Page 15: Morrison david

David R. Morrison

Fink tips for developers

• Watch installation locations– “fink validate”

• Include all dependencies, or turn them off with configure flags

• Include license information and DocFiles• Treat shared libraries correctly• Submit your package to Fink so that others can

use it!

http://fink.sourceforge.net

Page 16: Morrison david

David R. Morrison

Page 17: Morrison david

David R. Morrison

Page 18: Morrison david

David R. Morrison

Page 19: Morrison david

David R. Morrison

Page 20: Morrison david