红联Linux门户
Linux帮助

在FreeBSD中使用Acrobat Reader for Linux

发布时间:2006-09-14 23:28:27来源:红联作者:veryfan
  这篇文章主要是向大家介绍如何在FreeBSD运行Acrobat Reader for Linux,这其中涉及的都是一些非常基本的知识,如果你是一个FreeBSD熟手,那么我建议你不要再往下看了,因为我不想浪费你宝贵的时间,好了,现在我们开始进入主题。
  我平时比较爱从网上下载些资料,其中大多数资料都是pdf格式,因而就要涉及到pdf阅读软件的选择 ,以往在FreeBSD上,我都是使用xpdf来阅读pdf文档,但久了之后就发现xpdf使用起来不是那么方便。正巧在网上找到了Acrobat Reader for Linux 5.05(在ftp://202.108.44.140/上传目录/黑夜编码人/ 中有下载,用户名和密码都是:unix2002),于是就将其下载下来安装在linux中,发现使用起来和 windows下的一样方便,爱不释手,但我平常使用FreeBSD的时间比较多,因而就想可不可以在FreeBSD中 使用Acrobat Reader呢?(我的FreeBSD和Linux同时安装在一个硬盘上)到Adobe的主页上看了一下,没有for *BSD的版本,心中纳闷难道Adobe不知道还有这么多像我这样的*BSD迷吗?后来经好朋友夜猫子(chinaunix BSD版的版主)的提示得知,其实并不是必须要Acrobat Reader for *BSD才能在FreeBSD中运行Acrobat Reader,FreeBSD中有一个可以让linux下的程序在FreeBSD中运行的兼容工具,找来FreeBSD Handbook,handbook上指出通过此兼容工具可以让linux下的大部份程序在FreeBSD下运行,这其中就包括了Acrobat reader。于是马上拿出 FreeBSD的光盘,结果一翻搜索后来在光盘的packages/All下找到了linux_base-6.1.tgz(我使用的是FreeBSD4.3 release,不同版本可能有出入),查资料得知该包便是linux兼容包,下面就该动手了:[code][root@freebsd]# mount -t cd9660 /dev/acd0c /cdrom
[root@freebsd]# cd /cdrom/packages/All/
[root@freebsd]# pkg_add linux_base-6.1.tgz[/code]安装后,在系统/modules中便多了一个名为linux.ko的module。
接下来找到Acrobat Reader的安装路径,并运行Acrobat Reader:[code][root@freebsd]# mount -t ext2fs /dev/ad0s2 /mnt //跟根自己的实际情况更改
[root@freebsd]# cd /mnt/usr/local/Acrobat5/bin //Acrobat Reader的执行文件路径
[root@freebsd]# ./acroread
ERROR: Cannot find installation directory.[/code]看来Acrobat Reader启动时要检测安装目录,这次运行就这样失败了。习惯性的打入一个ls -l,发现acroread是一个脚本文件,突然灵机一动。[code][root@freebsd]# less acroread
#!/bin/sh
#
ver=5.0
install_dir=/usr/local/Acrobat5/Reader
#
# Prepend a colon separated environment variable
# $1 string to be prepended
# $2 environment variable
#
prepend()
{
if [ -z "$2" -o "$2" = "$1" ] ; then
echo "$1"
else
first="`expr "$2" : '\([^:]*\):'`"
if [ "$first" = "$1" ] ; then
echo "$2"
else
echo "${1}:${2}"
fi
fi
}
...[/code]注意到上面的install_dir=/usr/local/Acrobat5/Reader没有,Acrobat Reader不是告诉我们安装路径不对吗?现在它指向/usr/local/Acrobat5/Reader,而在我的FreeBSD中根本没有这个文件夹当然要出错,不管那么多,先改了再说,但为了让Acrobat Reader能同时在linux和FreeBSD中运行,因而先复制一个acroread的副本acroread-bsd,以下我们所做的修改都是在acroread-bsd中进行,将acroread-bsd中的install_dir=/usr/local/Acrobat5/Reader改为install_dir=/mnt/usr/local/Acrobat5/Reader,保存后运行acrobat-bsd。[code][root@freebsd]# ./acroread-bsd
The OS named FreeBSD version 4.3-RELEASE is currently not installed.
Try running on an installed platform and connecting to your display.
Installed platform(s) include the following:
Intel/Linux[/code]这次Acrobat Reader告诉我们该版本只能在linux上运行,难道没有办法让它运行了吗?acroread既然是一个脚本,它是怎么知道我使用的是FreeBSD 4.3 release呢?这其中很可能是调用了uname来检测系统信息的,打开acroread-bsd,发现其中有如下内容:[code]#
# setup the configuration from uname
#
os_name=`uname -s`
if [ "$os_name" = "AIX" ] ; then
os_release=`uname -a | ( read name host minor major foo ; echo $major.$minor )`
else
os_release=`uname -r`
fi
case "$os_name" in
SunOS)
case "$os_release" in
4.1.3*|4.1.4*|4.1C)
ACRO_CONFIG=sparcsun
export ACRO_CONFIG
;;
5.*)
machine_type=`uname -p`
case "$machine_type" in
sparc)
ACRO_CONFIG=sparcsolaris
export ACRO_CONFIG
;;
intel|i386)
ACRO_CONFIG=intelsolaris
export ACRO_CONFIG
;;
ppc)
ACRO_CONFIG=ppcsolaris
export ACRO_CONFIG
;;
esac
;;
esac
;;
HP-UX)
case "$os_release" in
*09.0*|*10.*|*11.*)
ACRO_CONFIG=hppahpux
export ACRO_CONFIG
;;
*)
;;
esac
;;
AIX)
case "$os_release" in
4.*)
ACRO_CONFIG=rs6000aix
export ACRO_CONFIG
;;
*)
;;
esac
;;
Linux)
ACRO_CONFIG=intellinux
export ACRO_CONFIG
;;
esac[/code]看来我没有猜错,其中的os_name=`uname -s`便是检测系统信息的,现在我想大家都知道我要做什么了,既然我安装的是Acrobat Reader for linux那么就要让Acrobat Reader误以为我是在linux中运行它 ,将acroread-bsd中的:[code]#
# setup the configuration from uname
#
os_name=`uname -s`[/code]改为:[code]#
# setup the configuration from uname
#
# os_name=`uname -s`
os_name=Linux[/code]运行acroread-bsd,成功了,Acrobat Reader的启动界面出现了。本以为这样就完了,没想到当我重新启动机器后,再次执行acroread-bsd时却出现了如下错误提示:[code]ELF binary type "0" not known.
Abort[/code]提示是说不认识该ELF格式,这时才突然想到我们所安装的linux兼容包是一个module,重新启动后该module还没有加载,于是先运行linux(或 kldload linux),再次运行acroread-bsd这次便成功了。
文章评论

共有 2 条评论

  1. suker 于 2006-10-28 09:40:26发表:

    支持一下。辛苦您了

  2. vankinger 于 2006-09-18 11:39:19发表:

    nic e