当前FreeBSD提供的Linux动态连接库为Linuxlib-2.6,提供了对glibc2库及其他一些共享库的支持,然而众多的应用程序还会使用其他各种动态连接库 。FreeBSD的软件库只能支持常用的Linux应用程序,为了彻底解决Linux应用程序的动态连接库更新问题,并不能依靠FreeBSD提供的软件包 。还是应该使用Linux的方式,按照Linux的方式安装所需要的Linux动态连接库 。
FreeBSD下用于与Linux相兼容的程序和库文件统统位于/usr/compat/linux目录下(根目录下有它的一个连接/compat/linux,compat目录为兼容其他系统执行文件的目录),为了安装新的Linux文件,首先要将这个目录清除 。
# cd /usr/compat/linux# rm -fr *安装新的Linux兼容文件可以通过多种方式来完成,由于当前最流行的Linux系统通常使用RPM的包管理方式,因此可以使用RPM包来安装Linux文件 。这需要首先安装包管理程序rpm,这个程序有FreeBSD版本(此时还无法运行Linux程序) 。可以在Packages Collection中找到这个软件 。
然后就要为安装Linux的RPM包初始化rpm,使rpm不使用根目录作为系统的起始路径,而使用/usr/compat/linux作为所有的rpm包的根进行安装,这就要使用--root参数指定相对的根目录,以将Linux执行程序与FreeBSD执行执行程序区分开 。rpm在/usr/compat/linux/var/local/lib/rpm中记录包的安装信息 。
# mkdir -p /usr/compat/linux/var/local/lib/rpm
# rpm --initdb --dbpath /usr/compat/linux/var/local/lib/rpm
# rpm -i --ignoreos --root /usr/compat/linux ld.so-1.9.5-7.i386.rpm
# rpm -i --ignoreos --root /usr/compat/linux ldconfig-1.9.5-3.i386.rpm
# rpm -i --ignoreos --root /usr/compat/linux glib-1.0.1-3.i386.rpm
# rpm -i --ignoreos --root /usr/compat/linux glibc-2.0.7-17.i386.rpm当使用rpm -I安装好所有必须的系统支持文件,以及需要执行的应用程序,这样安装完毕之后,在通过调整一些参数,Linux程序就能正常执行了 。主要需要根据应用程序的错误提示,修改FreeBSD和Linux在文件和目录结构上的不同,如Linux执行程序的位置,应该更改为/usr/compat/linux/usr/bin目录或其他相应的路径,而非原有根目录下的路径,以使得Linux程序内部只调用Linux执行程序 。只有一些对执行程序的格式不敏感的程序,可以使用/bin或/usr/bin下的相应FreeBSD执行程序 。通过这样的设置之后,在FreeBSD下就能运行包括Oracle 8 for Linux在内的大型应用软件 。
但是FreeBSD并不可能运行所有的Linux程序,有的应用程序程序对Linux内核有一定要求,需要内核的特定版本的支持 。一般来讲,对于这些对Linux特定内核有要求的应用程序,FreeBSD也就无法提供支持了 。
不管怎样,虽然在FreeBSD下运行Linux执行程序没有太大的问题,然而毕竟Linux是一个独立的操作系统,处理问题的风格与FreeBSD不同,因此除了较小的程序之外,安装支持文件、必要的目录结构等参数的调整是免不了的 。
【57 FreeBSD连载:可执行程序格式】未完,待续 。。。
- 56 FreeBSD连载:手工编译安装程序
- FreeBSD的boot0阶段介绍
- 34 FreeBSD连载:手工配置网络
- FreeBSD spell 拼字检查
- 60 FreeBSD连载:缺省内核配置选项
- 41 FreeBSD连载:在FreeBSD上查看邮件
- FreeBSD nessusd命令介绍
- FreeBSD trafcount命令介绍
- 77 FreeBSD连载:安全工具
- 65 FreeBSD连载:SMB/CIFS协议
