歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> BSD

在FreeBSD中使用Acrobat Reader for Linux


  這篇文章主要是向大家介紹如何在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

安裝後,在系統/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.

看來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
}
...

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

這次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

看來我沒有猜錯,其中的os_name=`uname -s`便是檢測系統信息的,現在我想大家都知道我要做什麼了,既然我安裝的是Acrobat Reader for linux那麼就要讓Acrobat Reader誤以為我是在linux中運行它 ,將acroread-bsd中的:
CODE:#
# setup the configuration from uname
#
os_name=`uname -s`

改為:
CODE:#
# setup the configuration from uname
#
# os_name=`uname -s`
os_name=Linux

運行acroread-bsd,成功了,Acrobat Reader的啟動界面出現了。本以為這樣就完了,沒想到當我重新啟動機器後,再次執行acroread-bsd時卻出現了如下錯誤提示:
CODE:ELF binary type "0" not known.
Abort

提示是說不認識該ELF格式,這時才突然想到我們所安裝的linux兼容包是一個module,重新啟動後該module還沒有加載,於是先運行linux(或 kldload linux),再次運行acroread-bsd這次便成功了。
Copyright © Linux教程網 All Rights Reserved