常见疑问(F.A.Q.) - 8. 一般性软件包使用问题
Q8.1: 我碰到很多这样的消息:"locale not supported by C library"。有问题吗?
A: 没有什么问题,它只是表示程序会使用默认的英语信息提示,日期格式等。 程序其它的功能应该是正常的。 X11 文档有更多的细节。
Q8.2: 我的系统上突然多很很多陌生的用户,名字象 "mysql","pgsql",和 "games"。 它们是哪来的?
A: 你用 Fink 安装了一些软件包,这些软件包依赖于另外一个叫 passwd 的软件包。passwd 出于安全的原因在你的系统上增加了一些额外的用户-Unix 系统上,文件和进程由一些(不同的) "owners" 所有,这可以使得系统管理员可以微调系统的权限和安全性设置。 象 Apache 和 MySQL 这样的程序需要有 "owner",把这些守护进程由 root 来运行是不安全的(想像一下如果 Apache 被攻破而它又有对系统所有文件的写权限的情况)。 因此,passwd 软件按照 Fink 软件包的需要建立了这些额外的用户。
如果在你的"系统预置:用户"(对 10.2)或"系统预置:帐号"(对 10.3)面板里面突然出现了这些用户,那么要警惕,但不要那么着急去删除它们:
- 首先,很明显你选择安装了那些需要这些用户的软件包,所以删除它们是不合情理的,不是吗?
- 事实上,在 Mac OS X 里面已经有很多这些你不是很清楚的额外用户:www,daemon,nobody,只是其中的一部分。
这些额外用户的存在是标准的 Unix 运行某些服务的方式;passwd 软件包只是添加了一些苹果没有提供的一些额外的用户。你可以在 NetInfo管理器程序或运行
niutil -list . /users
命令看到这些苹果定义的用户。 - 如果你的确决定要删除这些用户,那么你要很小心如何去做。使用 "系统预置:用户" (对 10.2)或"系统预置:帐号"(对 10.3)面板去删除会把它们拥有的文件随机分配给一个管理员帐号,而且的确已经发生过因此而造成的使用管理员帐号的大混乱。这是系统预置的一个软件缺陷,并已经被提交给苹果公司。一个从你的系统中删除这些用户的安全的办法是使用 NetInfo管理器程序或使用命令行工具
niutil
。阅读niutil
的帮助页可以获得关于 NetInfo 的更多信息。
Fink 在你安装 passwd 软件包的时候确实曾经向你要求安装这些额外用户的许可, 所以这些用户的存在本不应该觉得奇怪的。
Q8.3: 如何使用 Fink 安装的软件编译一些我自己的东西?
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)
通常最简单的办法是把这些东西加到你的启动脚本文件(比如 .cshrc
或 .profile
),这样他们就可以自动被设置。
如果一个软件包不使用这些环境变量,你需要自己添加
"-I/opt/sw/include" (对头文件) 和 "-L/opt/sw/lib" (对库文件) 到编译指令的一行。有些软件包会使用类似 EXTRA_CFLAGS 或 --with-qt-dir= 这样的非标准配置选项。
通常 "./configure --help" 会告诉你额外的编译选项。
另外,你也许需要安装那些你使用的软件包的开发版的头文件(例如 foo-1.0-1-dev),如果你还没有安装它们的话)。
Q8.4: 我不能在苹果的 X11 的应用程序菜单里面运行任何 Fink 安装的程序。
A: 苹果的 X11 不使用 Fink 的环境变量设置,这意味着应用程序菜单没有正确的环境变量设置来找到你的 Fink 程序。解决办法是在 Fink 安装的程序前面加上:
source /opt/sw/bin/init.sh ;
例如,如果你希望运行 Fink 安装的 GIMP,那么填入
source /opt/sw/bin/init.sh ; gimp
到你 GIMP 项的命令一栏。
你也可以编辑你的 .xinitrc 文件(在你的用户目录中)并添加:
source /opt/sw/bin/init.sh
到第一行之后。
Q8.5: 我被 X11 的选择弄糊涂了:苹果 X11,XFree86,等等。我应该安装哪一个?
A: 这些都是 XFree86 的变种(它们都基于 XFree86 的代码),但相互之间有一些轻微的差别。对于在 Panther 和 Jaguar 下有不同的可选方式。在 Panther 下你可以选择:
苹果的 X11 (在第三张光盘上)。不要忘记同时安装 X11 SDK (在 XCode 光盘上),如果你希望编译程序,或着你希望用 Fink 从源代码安装和 X 有关的软件包。
Fink 的 4.4.x 版本。安装 xfree86 和 xfree86-shlibs 软件包。
Fink 的 X.org 版本。安装
xorg
和xorg-shlibs
软件包。
在 Jaguar 下,多数的选择是通过 Fink 安装的:
-
Fink 的 4.2.x 版:安装
xfree86-base
和xfree86-rootless
或xfree86-base-threaded
和xfree86-rootless-threaded
(以及相应的-shlibs
) -
Fink 的 4.3.x 版:安装
xfree86
和xfree86-shlibs
软件包 -
苹果的 4.2.x 版(假设你安装了用户和 SDK 软件包):
system-xfree86
软件包是自动产生的,不要去安装它。(注意苹果的 X11 Jaguar 公开测试版已经不再提供,所以除非你在以前可以获得的时候已经安装了它,这才可以是一个选择。
还有另外一些选择。在 运行 X11 的文档里面有专门的叙述。
Q8.6: 当我试图运行一个程序,我碰到一个错误信息说: "cannot open display:"。我应该怎么办?
A: 这个错误意味着系统不能连接到你的 X 显示。确定你按下面的步骤处理:
1. 启动 X (苹果的 X11,XFree86,…)。
2. 确定你正确设置了 DISPLAY 环境变量。如果你使用 X 的默认设置,你应该这么做:
如果你使用 tcsh
setenv DISPLAY :0
或如果你使用 bash
export DISPLAY=:0
Q8.7: 我在 Fink 里面看不到我喜欢的那个程序。我应该怎么建议增加一个新的软件包到 Fink 里面?
A: 在 Fink 项目的软件包需求追踪器。
注意你需要一个 SourceForge 帐号才可以添加。
Q8.8: 这些名为 system-*
的“虚拟软件包”有些时候会存在,但我却不能自己安装或删除它们?
A:
名为类似 system-perl
的软件包是占位软件包。它们不包含实际的文件,而仅仅作为 fink 识别在它之外手工安装的程序一种机制。
从 10.3 版本开始,多数软件包什么不是你可以安装或删除的实际软件包。 相反,它们是“虚拟软件包”,软件包数据由 fink 程序自身根据一个手工安装的程序的预配置清单来产生。 对每个虚拟软件包,fink 会检查特定位置的一些特定文件,如果找到这些文件,就会认为这个虚拟软件包“已经安装”。
你可以运行 fink-virtual-pkgs
程序(fink 软件包的一部分)来获取被检测到已经安装的虚拟软件包的清单。
使用 --debug
标志可以获取有关 fink 检查了哪些文件诊断信息。
不幸的是,没有办法让你自己安装任意的软件(在 fink 之外)并让 fink 识别到它,而不是 fink 自己的版本。 要通用地检查配置和编译标志,路径名等等参数太困难了。
下面是 fink 定义的最重要的一些虚拟软件包(对 fink-0.19.2):
- system-perl: [virtual package representing perl]
代表
/usr/bin/perl
,它是默认 OS X 安装的一部分。这个软件包同时提供system-perlXXX
和perlXXX-core
,根据 perl 解析器的版本号 X.X.X。 - system-javaXXX: [virtual package representing Java X.X.X]
代表 Java 运行时环境,它是 OS X(和苹果的软件更新)的一部分。参考苹果的 Java 网页来获取更多信息。
- system-javaXXX-dev: [virtual package representing Java X.X.X development headers]
代表 Java SDK,它需要从 connect.apple.com 手工下载(需要免费注册)并安装。 如果你更新了你的 Java 运行时环境,你的 SDK 并不会自动相应更新(甚至可能被删除!)。 记得在安装或升级的运行时环境以后检查(如果需要的话重新下载和安装)这个 SDK。 参考 这个 FAQ 条目。
- system-java3d: [virtual package representing Java3D]
- system-javaai: [virtual package representing Java Advanced Imaging]
代表 Java 的三维图形和图象处理的扩展,它需要从苹果手工下载和安装。 查看苹果网站来获取详细信息。
- system-xfree86: [placeholder for user installed x11]
- system-xfree86-shlibs: [placeholder for user installed x11 shared libraries]
代表苹果的 X11/XDarwin,OS X 的一个可选部分(X11User.pkg)。这些软件包提供
x11
和x11-shlibs
。参阅这个 FAQ 条目。 - system-xfree86-dev [placeholder for user installed x11 development tools]
代表苹果的 X11/XDarwin SDK,OS X 的一个可选安装(X11SDK.pkg)。这个软件包提供
x11-dev
。参阅这个 FAQ 条目。
Next: 9. 特定软件包使用问题