Fink

常见疑问(F.A.Q.) - 7. 编译问题-特定软件包

Q7.1: 一个软件包构建失败,错误和 sed 有关。

A: 如果你的登录脚本(例如 ~/.cshrc)向终端输出了些信息,比如 "echo Hello" 或 xttitle,可能会导致这个错误。要消除这个问题,最简单的办法是注释掉这些行。

如果你想保留这些回显信息,你可以这样做:

if ( $?prompt) then
echo Hello
endif

Q7.2: 我想改用 Fink 的 XFree86 软件包,但我不能安装 xfree86-basexfree86,因为它和 system-xfree86 冲突。

A: 很不幸,各种 X11 都不可避免地要安装在 /usr/X11R6 中。因此 Fink 的 xfree86-basexfree86-rootless 软件包也需要安装在那里。不过,由于 Fink 不会删除任何没有在它数据库里面的文件,它不会自动替换非 Fink 安装的 X11。

下面是应该怎么做:

注意:安装了新版(0.16.2 或更新)Fink 的 10.2.x 用户和 10.3.x 的用户应该跳过下面的步骤 1(事实上,他们也做不了步骤 1)。

1. 删除 system-xfree86。如果你暂时还没有依赖于 X11 的软件包,这很简单。但通常情况是,已经安装了需要依赖于 X11 的软件包。如果不想全部删除他们,你可以使用:

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

来进行删除,而保持其它软件包仍然存在。如果你没有安装 system-xfree86,那么跳到步骤 3。

2. 手工删除所有 XFree86。可以这么做:

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

如果你正在使用的是苹果的 X11,同时也删除 X11 程序。

3. 要获取 XFree86-4.2.1,用通常的办法安装 Fink 的 xfree86-basexfree86-rootless 软件包:对使用源代码安装的用户 "fink install";对二进制安装的用户 "apt-get install" 或 dselect

3a. 要获取 XFree86-4.3.x 或更高版本,使用 "fink install xfree86" 安装 Fink 的 xfree86 软件包,最新版本(2004年5月25日的 XFree86-4.4.x 版本)目前还没有二进制安装版发布,而且仅有未稳定的版本[参阅 how to install unstable package]。

Q7.3: 怎么把 Fink 的 XFree86 从非线程化的版本改为线程化的版本(或相反)?

A: 如果你正在使用 Fink 版本的 XFree86,并且你希望在线程化或非线程化的版本之间转换,你需要手工删除旧的版本,你可以用下面的命令行命令实现:

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
	

或者删除线程化的版本:

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 也可以删除软件包。在源代码版本窗口,选择一个软件包,然后在 Source Menu 使用 "Force Remove"。

如果你正在使用 system-xfree86,查看前面关于删除它的问题。

安装你需要的 xfree86 版本:

xfree86-basexfree86-rootless

xfree86-base-threadedxfree86-rootless-threaded

你可以使用通常的办法:对源代码安装用户 "fink install";对二进制安装用户 "apt-get install" or dselect

Q7.4: "当我安装 KDE 的时候,我碰到下面的信息:'Can't resolve dependency "cctools (>= 446-1)"'

A: 这个晦涩的消息表明你需要安装 December 2002 开发工具。

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 a package 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:

  • Reinstall BSD.pkg (from your installation media). If /usr/bin/c++filt doesn't appear, keep trying.

You also might also need to make sure you don't have any ancient Developer/Xcode Tools stuff laying around:

  • 10.4: Flush out your old Xcode Tools versions via running /Developer/Tools/uninstall-devtools.pl in a terminal. Then (re)install XCode (2.4.1 or later).
  • 10.5: Flush out your old Xcode Tools versions via running /Developer/Library/uninstall-devtools in a terminal. Then (re)install Xcode (3.0 or later).

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

A: Typically this involves missing libraries, such as: /usr/X11/lib/libXrandr.2.0.0.dylib or /usr/X11/lib/libXdamage.1.1.0.dylib (or other versions of libraries in /usr/X11/lib/).

The current wisdom on the best fix for such an issue is to install Xcode 3.1.3 or later.

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.

Next: 8. 一般性软件包使用问题