打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
移植Zotero至arm64平台

最近想尝试ARM的主机, 将自己的工作环境移植到了Khadas VIM3 pro. 为了方便在这个平台写docx格式的论文, 我移植了Zotero (Ubuntu ports源中已有LibreOffice).

听说Zotero最原始时候就是Firefox下的一个插件, 后来逐渐发展出了standalone等版本. 移植完后发现此话不假, Zotero standalone版本基本上就是一个定制的Firefox.

移植说明

系统是Ubuntu 20.04 LTS for arm64. 移植基本上完全是按照AUR源中zotero-arm-bin的PKGBUILD脚本来做的, 感谢Zhaofeng Li提供的PKGBUILD. 按照这个方法应该也能把Zotero移植到armhf平台.

移植过程

下载最新版本x86_64版本的Zotero安装包并且解压. 观察其中application.ini文件.

  1. mkdir zotero-arm.build
  2. cd zotero-arm.build
  3. wget https://download.zotero.org/client/release/5.0.96/Zotero-5.0.96_linux-x86_64.tar.bz2
  4. mv * zotero.tar.bz2
  5. tar -xjvf zotero.tar.bz2
  6. cat Zotero_linux-x86_64/application.ini

发现Gecko项中说明Zotero使用的Firefox内核是60版本的, 找到这个版本目标平台(arm64)上的Firefox安装包. 难受的是Ubuntu ports中没有这个版本的Firefox, 还好Zhaofeng Li老哥提供了这个版本Firefox的下载地址:

  1. source_aarch64=(
  2. "firefox.deb::http://launchpadlibrarian.net/373617392/firefox_60.0.2+build1-0ubuntu0.18.04.1_arm64.deb"
  3. )
  4. source_armv7h=(
  5. "firefox.deb::http://launchpadlibrarian.net/373609086/firefox_60.0.2+build1-0ubuntu0.18.04.1_armhf.deb"
  6. )

将Firefox的deb包下载, 解压, 从中找到Firefox程序主体. 这一步可以直接套PKGBUILD里面的命令.

  1. wget http://launchpadlibrarian.net/373617392/firefox_60.0.2+build1-0ubuntu0.18.04.1_arm64.deb # armhf平台的话需要替换下载地址
  2. mv *.deb firefox.deb
  3. ar -x firefox.deb data.tar.xz
  4. tar -xvf data.tar.xz ./usr/lib/firefox --strip-components=3
  5. rm data.tar.xz

用arm平台的Firefox程序替内核换掉Zotero中的程序内核:

  1. mv Zotero_linux-x86_64 zotero-arm
  2. rm -r zotero-arm/*.{so,chk}
  3. rm -r zotero-arm/gtk2
  4. rm -r zotero-arm/gmp-clearkey
  5. rm -r zotero-arm/{updater,minidump-analyzer}
  6. rm -r zotero-arm/plugin-container
  7. cp -r firefox/*.{so,chk} zotero-arm/
  8. cp -r firefox/gtk2 zotero-arm/
  9. cp -r firefox/plugin-container zotero-arm/plugin-container
  10. cp -r firefox/firefox zotero-arm/zotero-bin
  11. cp -r firefox/dependentlibs.list zotero-arm/dependentlibs.list

编译替换xpdf

下载xpdf和Zotero官方提供的cross-xpdf, 用cross-xpdf替换xpdf中对应的文件, 执行编译.

  1. git clone https://github.com/zotero/cross-xpdf.git
  2. wget https://dl.xpdfreader.com/xpdf-4.03.tar.gz
  3. tar -xzvf xpdf-4.03.tar.gz
  4. cp cross-xpdf/pdftotext.cc xpdf-4.03/xpdf/pdftotext.cc
  5. cp cross-xpdf/GlobalParams.h xpdf-4.03/xpdf/GlobalParams.h
  6. cp cross-xpdf/GlobalParams.cc xpdf-4.03/xpdf/GlobalParams.cc
  7. cp cross-xpdf/gfile.h xpdf-4.03/goo/gfile.h
  8. cp cross-xpdf/gfile.cc xpdf-4.03/goo/gfile.cc
  9. cd xpdf-4.03
  10. mkdir build
  11. cd build
  12. cmake .. -DCMAKE_EXE_LINKER_FLAGS="-pthread"
  13. make pdfinfo pdftotext

编译过程中可能会报错什么软件/库缺失, 自行百度安装就行.

安装现有的poppler-data, 替换pdfinfo pdftotext poppler-data.

  1. rm -r ../../zotero-arm/{pdftotext,pdfinfo,poppler-data}
  2. cp -r xpdf/pdfinfo ../../zotero-arm/pdfinfo
  3. cp -r xpdf/pdftotext ../../zotero-arm/pdftotext
  4. sudo apt install poppler-data -y
  5. cd ../../
  6. cp -r /usr/share/poppler zotero-arm/poppler-data

部分后期操作:

禁用更新: 修改zotero-arm/defaults/preferences/prefs.jspref("app.update.enabled", true);项为false.

避免Zotero运行时开启shell: 在zotero-arm/zotero中找到"$CALLDIR/zotero-bin" -app "$CALLDIR/application.ini" "$@"并在前面加上exec.

  1. sed -i '/pref("app.update.enabled", true);/c\pref("app.update.enabled", false);' zotero-arm/defaults/preferences/prefs.js
  2. sed -i -r 's/^("\$CALLDIR\/zotero-bin" -app "\$CALLDIR\/application.ini" "\$@")/exec \1/' zotero-arm/zotero

大功告成

试着运行一下zotero-arm/zotero, 如果成功运行那就大功告成了. 将它加入$PATH目录中去:

  1. sudo ln -s $PWD/zotero-arm /usr/local/bin

惊喜地发现这个移植的Zotero与Ubuntu ports中的LibreOffice适配, 如果系统中已经安装了LibreOffice, 第一次运行Zotero时它会引导我安装LibreOffice插件, 后期使用也正常. 在Aid Linux (Android Based) 上二者也能使用。

贴一个我打包的Zotero arm64: http://47.100.82.149/tmp/zotero-5.0.96_arm64.zip


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
xpdf windows编译详解
用xpdf和pdfbox来处理中文PDF文档及其比较
Linux软件安装常用方法
请问运行于不同CPU构架的linux,它们的软件可以通用吗?
实现在线文档预览,Centos上的安装openoffice+swftools
Linux 下的 10 个 PDF 软件
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服