This instruction explains how to install and run print/acroread7 on FreeBSD 6.2 using pkgsrc. Before you start, please check that it's still broken. I hope it'll be fixed soon after my post and you would only need to follow configuration of /compat/linux.
- Go to emulators/suse100_base and suppress an execution of /dev/MAKEDEV - this file doesn't exist (/dev is devfs mount point on FreeBSD 6.2)
- Go to print/acroread7 and patch Makefile.
- Run bmake with properly set $BRANDELF. For some reason, this variable is not set when building suse100_base and it would break an installation of that package.
- Run
- Install acroread7
- Run as root
- Set LD_LIBRARY_PATH to
% cvs diff -u Makefile
Index: Makefile
===================================================================
RCS file: /cvsroot/pkgsrc/emulators/suse100_base/Makefile,v
retrieving revision 1.7
diff -u -r1.7 Makefile
--- Makefile    22 Feb 2007 19:26:27 -0000      1.7
+++ Makefile    25 Feb 2007 18:38:10 -0000
@@ -53,8 +53,8 @@
          ${INSTALL_SCRIPT} $$FILE ${PREFIX}/sbin/`basename $$FILE .sh`; \
        done
        ${INSTALL_DATA_DIR} ${EMULDIR}/dev
-       ${INSTALL_DATA} /dev/MAKEDEV ${EMULDIR}/dev
-       cd ${EMULDIR}/dev && ${SH} ./MAKEDEV  std audio
+#      ${INSTALL_DATA} /dev/MAKEDEV ${EMULDIR}/dev
+#      cd ${EMULDIR}/dev && ${SH} ./MAKEDEV  std audio
        cd ${EMULDIR}/dev && ${LN} -fs sound dsp
        @${CP} ${PKGDIR}/PLIST ${PLIST_SRC}
        ${RPM2PKG} ${RPM2PKGARGS}
% cvs diff -u Makefile
Index: Makefile
===================================================================
RCS file: /cvsroot/pkgsrc/print/acroread7/Makefile,v
retrieving revision 1.17
diff -u -r1.17 Makefile
--- Makefile    11 Jan 2007 11:52:17 -0000      1.17
+++ Makefile    25 Feb 2007 19:29:36 -0000
@@ -32,7 +32,7 @@
 # Default (overridden below)
 PLATFORM=      unknown
 
-.if ${OPSYS} == "NetBSD" || ${OPSYS} == "DragonFly"
+.if ${OPSYS} == "NetBSD" || ${OPSYS} == "DragonFly" || ${OPSYS} == "FreeBSD"
 . if (${MACHINE_ARCH} == "i386")
 DEPENDS+=      suse_gtk2>=10.0:../../emulators/${SUSE_DIR_PREFIX}_gtk2
 DEPENDS+=      suse_libcups>=10.0:../../emulators/${SUSE_DIR_PREFIX}_libcups
% env BRANDELF=brandelf bmake
% sed -i '' -e 's/\(NetBSD | DragonFly\)/\1 | FreeBSD/' work/AdobeReader/INSTALL
% bmake install
# sed -i '' -e 's/\(NetBSD | DragonFly\)/\1 | FreeBSD/' /usr/pkg/bin/acroread7
LD_LIBRARY_PATH=/usr/pkg/emul/linux/usr/lib/:/usr/pkg/emul/linux/opt/gnome/lib:/usr/pkg/Acrobat7/Reader/intellinux/lib
When I completed these steps, I was able to run /usr/pkg/bin/acroread7 but later I removed packages installed from ports and I couldn't run the program anymore. To fix this, I replaced FreeBSD linux compatibility directory with pkgsrc linux emulator and regenerated gdk-pixbuf.loaders:
# mv /compat/linux /compat/linux.freebsd # ln -s /usr/pkg/emul/linux /compat/linux # /usr/pkg/emul/linux/opt/gnome/bin/gdk-pixbuf-query-loaders > /usr/pkg/emul/linux/etc/opt/gnome/gtk-2.0/gdk-pixbuf.loaders
This method proves that suse100 linux emulator works on FreeBSD but since it could "interfere" in a bad way with FreeBSD update procedure I went another route:
# ln -s /usr/pkg/emul/linux/opt/gnome /compat/linux/opt/gnome # ln -s /usr/pkg/emul/linux/etc/opt/gnome /compat/linux/etc/opt/gnome # ln -s /usr/pkg/emul/linux/opt/gnome/lib/pango /compat/linux/usr/lib/pango
You can always find these three foreign links with the find command:
% find /compat/linux -type l | xargs file | grep pkg /compat/linux/etc/opt/gnome: symbolic link to `/usr/pkg/emul/linux/etc/opt/gnome' /compat/linux/usr/lib/pango: symbolic link to `/usr/pkg/emul/linux/opt/gnome/lib/pango' /compat/linux/opt/gnome: symbolic link to `/usr/pkg/emul/linux/opt/gnome'
UPDATE: I thought that /compat/linux belongs to FreeBSD base system but it has been installed from linux_base port. So I can easily remove it and use suse100_base from pkgsrc. Another cool idea is to mount a real Linux to /compat/linux as described here.
 
 
No comments:
Post a Comment