在FreeBSD中使用Acrobat Reader for Linux

发表于:2007-06-09来源:作者:点击数: 标签:
[这个贴子最后由黑夜编码人在2002/06/3005:50pm编辑] 在FreeBSD中使用AcrobatReaderfor Linux by黑夜编码人(bluepboy@hotmail.com) 这篇文章主要是向大家介绍如何在FreeBSD运行AcrobatReaderforLinux,这其中涉及的都是一些非常基本的知识,如果你是一个Free

[这个贴子最后由黑夜编码人在 2002/06/30 05:50pm 编辑]

在FreeBSD中使用Acrobat Reader for Linux
                            by 黑夜编码人(bluepboy@hotmail.com)

   这篇文章主要是向大家介绍如何在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兼容包,下面就该动手了:

[root@freebsd]# mount -t cd9660 /dev/acd0c /cdrom
[root@freebsd]# cd /cdrom/packages/All/
[root@freebsd]# pkg_add linux_base-6.1.tgz

    安装后,在系统/modules中便多了一个名为linux.ko的module。

    接下来找到Acrobat Reader的安装路径,并运行Acrobat Reader:

[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.

    看来Acrobat Reader启动时要检测安装目录,这次运行就这样失败了。习惯性的打入一个ls -l,发现acroread是一个脚本文件,突然灵机一动。

[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
}
...

    注意到上面的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。

[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

    这次Acrobat Reader告诉我们该版本只能在linux上运行,难道没有办法让它运行了吗?acroread既然是一个脚本,它是怎么知道我使用的是FreeBSD 4.3 release呢?这其中很可能是调用了uname来检测系统信息的,打开acroread-bsd,发现其中有如下内容:
#
# 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

    看来我没有猜错,其中的os_name=`uname -s`便是检测系统信息的,现在我想大家都知道我要做什么了,既然我安装的是Acrobat Reader for linux那么就要让Acrobat Reader误以为我是在linux中运行它 ,将acroread-bsd中的:

#
# setup the configuration from uname
#
os_name=`uname -s`

改为:

#
# setup the configuration from uname
#
# os_name=`uname -s`
os_name=Linux

    运行acroread-bsd,成功了,Acrobat Reader的启动界面出现了。本以为这样就完了,没想到当我重新启动机器后,再次执行acroread-bsd时却出现了如下错误提示:
ELF binary type "0" not known.
Abort
提示是说不认识该ELF格式,这时才突然想到我们所安装的linux兼容包是一个module,重新启动后该module还没有加载,于是先运行linux(或 kldload linux),再次运行acroread-bsd这次便成功了。
以上这些只是我在FreeBSD中使用Acrobat Reader fro linux的一个笔记,希望能为你带来一些帮助,如果对文中所述有什么凝问,或者是文中有什么错误之处欢迎讨论,我的Email是mailto:bluepboy@hotmail.com


参考:FreeBSD Handbook
=[ EOF ]=


 dtedu 回复于:2002-06-30 18:38:08
好!不错,!小伙子你厉害!

 greysnake 回复于:2002-06-30 20:53:36
强就一个字!

 shangxd 回复于:2002-07-01 01:26:52
非常感谢!

 Z 回复于:2002-07-01 09:22:36
太好了

 黑夜编码人 回复于:2002-07-01 09:36:46
有东西大家一起分享。

 夜猫子 回复于:2002-07-01 10:29:29
写得不错

 fordking 回复于:2002-10-06 09:05:11
请问可否把它装到bsd分区呢?

 船长教父 回复于:2002-10-06 15:20:06
我服了你了
够朋友

 quakelee 回复于:2002-10-06 17:44:27
你直接去ports里面编译acroread5不完了,顺手就把linuxbase-7.1装上了,别说acroread了,连openoffice for linux都能用

原文转自:http://www.ltesting.net