最近想尝试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
文件.
mkdir zotero-arm.build
cd zotero-arm.build
wget https://download.zotero.org/client/release/5.0.96/Zotero-5.0.96_linux-x86_64.tar.bz2
mv * zotero.tar.bz2
tar -xjvf zotero.tar.bz2
cat Zotero_linux-x86_64/application.ini
发现Gecko
项中说明Zotero使用的Firefox内核是60版本的, 找到这个版本目标平台(arm64)上的Firefox安装包. 难受的是Ubuntu ports中没有这个版本的Firefox, 还好Zhaofeng Li
老哥提供了这个版本Firefox的下载地址:
source_aarch64=(
"firefox.deb::http://launchpadlibrarian.net/373617392/firefox_60.0.2+build1-0ubuntu0.18.04.1_arm64.deb"
)
source_armv7h=(
"firefox.deb::http://launchpadlibrarian.net/373609086/firefox_60.0.2+build1-0ubuntu0.18.04.1_armhf.deb"
)
将Firefox的deb包下载, 解压, 从中找到Firefox程序主体. 这一步可以直接套PKGBUILD里面的命令.
wget http://launchpadlibrarian.net/373617392/firefox_60.0.2+build1-0ubuntu0.18.04.1_arm64.deb # armhf平台的话需要替换下载地址
mv *.deb firefox.deb
ar -x firefox.deb data.tar.xz
tar -xvf data.tar.xz ./usr/lib/firefox --strip-components=3
rm data.tar.xz
mv Zotero_linux-x86_64 zotero-arm
rm -r zotero-arm/*.{so,chk}
rm -r zotero-arm/gtk2
rm -r zotero-arm/gmp-clearkey
rm -r zotero-arm/{updater,minidump-analyzer}
rm -r zotero-arm/plugin-container
cp -r firefox/*.{so,chk} zotero-arm/
cp -r firefox/gtk2 zotero-arm/
cp -r firefox/plugin-container zotero-arm/plugin-container
cp -r firefox/firefox zotero-arm/zotero-bin
cp -r firefox/dependentlibs.list zotero-arm/dependentlibs.list
xpdf
下载xpdf
和Zotero官方提供的cross-xpdf
, 用cross-xpdf
替换xpdf
中对应的文件, 执行编译.
git clone https://github.com/zotero/cross-xpdf.git
wget https://dl.xpdfreader.com/xpdf-4.03.tar.gz
tar -xzvf xpdf-4.03.tar.gz
cp cross-xpdf/pdftotext.cc xpdf-4.03/xpdf/pdftotext.cc
cp cross-xpdf/GlobalParams.h xpdf-4.03/xpdf/GlobalParams.h
cp cross-xpdf/GlobalParams.cc xpdf-4.03/xpdf/GlobalParams.cc
cp cross-xpdf/gfile.h xpdf-4.03/goo/gfile.h
cp cross-xpdf/gfile.cc xpdf-4.03/goo/gfile.cc
cd xpdf-4.03
mkdir build
cd build
cmake .. -DCMAKE_EXE_LINKER_FLAGS="-pthread"
make pdfinfo pdftotext
编译过程中可能会报错什么软件/库缺失, 自行百度安装就行.
安装现有的poppler-data
, 替换pdfinfo pdftotext poppler-data
.
rm -r ../../zotero-arm/{pdftotext,pdfinfo,poppler-data}
cp -r xpdf/pdfinfo ../../zotero-arm/pdfinfo
cp -r xpdf/pdftotext ../../zotero-arm/pdftotext
sudo apt install poppler-data -y
cd ../../
cp -r /usr/share/poppler zotero-arm/poppler-data
禁用更新: 修改zotero-arm/defaults/preferences/prefs.js
中pref("app.update.enabled", true);
项为false.
避免Zotero运行时开启shell: 在zotero-arm/zotero
中找到"$CALLDIR/zotero-bin" -app "$CALLDIR/application.ini" "$@"
并在前面加上exec
.
sed -i '/pref("app.update.enabled", true);/c\pref("app.update.enabled", false);' zotero-arm/defaults/preferences/prefs.js
sed -i -r 's/^("\$CALLDIR\/zotero-bin" -app "\$CALLDIR\/application.ini" "\$@")/exec \1/' zotero-arm/zotero
试着运行一下zotero-arm/zotero
, 如果成功运行那就大功告成了. 将它加入$PATH
目录中去:
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
联系客服