biber 오류(latexmk 사용) - texlive 2022

biber 오류(latexmk 사용) - texlive 2022

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

이것은 실제로 해결책이 아니라 문제에 대한 해결 방법입니다!

컨텍스트: macOS에서 latxmk동시에 두 개의 인스턴스를 실행하지만 다른 폴더에 있습니다.

징후:latexmk "라는 메시지와 함께 실패합니다.씬 바이너리를 실행할 수 없습니다.

원인: 은(는) latexmk두 개의 인스턴스를 biber 동시에 실행 중입니다.

진단: bibercahce 디렉터리를 사용하여 데이터를 읽고 저장하며 이러한 작업은 의 동시 실행에 대해 적절하게 보호되지 않습니다 biber.

해결 방법: 에 대한 자체 프런트엔드를 호출 biber하여 실행 인스턴스가 하나만 있는지 확인하세요 . 그러면 실제 실행 전에 파일 시스템 잠금을 획득 하고 나중에 이 잠금을 해제합니다.latexmkbiberbiber

구현:

  1. 다음 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

  1. latexmk다음 명령을 사용하여 원하는 만큼 의 인스턴스를 실행하세요 . 이 이름은 $HOME/binbash 스크립트를 저장한 디렉터리 이름으로 바꿔야 합니다.
PATH=$HOME/bin:$PATH latexmk <your_flags> <your_latrex_file>

관련 정보