
在 macOS Monterey 版本 12.6 中,使用指令 可以在 TeX Live 2021 和 TeX Live 2022 中完美地運行相當複雜(論文模板)乳膠檔案的「正常」編譯latexmk -time -shell-escape -synctex=0 -emulate-aux-dir -pdf -silent template
。
為了加快此模板不同變體的測試,我......
- 製作原始程式碼的多個副本(每個副本位於各自的資料夾中);
- 根據需要自訂每個副本;和
latexmk
使用上面的命令運行 的多個實例,每個副本一個。
使用 TeX Live 2021,腳本運行順利。
使用 TeX Live 2022,我收到此錯誤:
/var/folders/f1/4fh25zqx0_bd81r_n925d_4r0000gp/T/par-6a6d6c/cache-ff0e0f52fce2a47a2eaf3d127e3cbc846f2f7d08/thin/biber: cannot execute thin binary /var/folders/f1/4fh25zqx0_bd81r_n925d_4r0000gp/T/par-6a6d6c/cache-ff0e0f52fce2a47a2eaf3d127e3cbc846f2f7d08/thin/biber (errno=8)
我嘗試同時運行兩個 biber 實例(或多或少),沒有問題。我猜這個問題與 的組合有關latexmk + biber
。
有人可以提供一些有關此 biber 錯誤訊息的見解嗎?
答案1
您可以透過為 的不同實例強制使用不同的快取來實現此目的biber
。只需PAR_TMPDIR
為實例設定不同的環境變量,因為這決定了快取位置(如果設定):
mkdir /tmp/bibercache{1,2}
PAR_TEMPDIR=/tmp/bibercache1 biber ...
PAR_TEMPDIR=/tmp/bibercache2 biber ...
答案2
這不是真正的解決方案,而是我解決問題的方法!
latxmk
上下文:在 macOS 中,同時運行兩個實例,但在不同的資料夾中。
症狀:latexmk
失敗並顯示訊息“無法執行精簡二進位文件」
原因: 同時latexmk
運行兩個執行個體。biber
診斷:biber
使用其cahce目錄來讀取和存儲數據,並且這些操作對於並發執行的biber
.
biber
解決方案:透過latexmk
呼叫我們自己的前端來確保只有一個正在運行的實例biber
,該前端將在運行真實實例之前獲取檔案系統鎖biber
,然後釋放該鎖。
執行:
- 將以下 bash 腳本複製到您選擇的某個目錄並命名
biber
(例如,$HOME/bin/biber
)。請記住BIBER
在腳本中自訂變數。
#!/bin/bash
# Please set BIBER to the real biber command.
# Check its location with the command "type biber".
BIBER=/Library/TeX/texbin/biber
LOCKFILE=/tmp/biber.lock
_lock() {
# Wait until the Lock File does not exists, then create it
while ! { set -C; 2>/dev/null >$LOCKFILE; }; do :; done
}
_unlock() {
rm -f $LOCKFILE
}
_lock
$BIBER $@
_unlock
latexmk
使用以下命令運行任意數量的實例。請注意,$HOME/bin
必須替換為保存 bash 腳本的目錄名稱。
PATH=$HOME/bin:$PATH latexmk <your_flags> <your_latrex_file>