
여러 아키텍처용으로 만들고 싶은 스냅이 있습니다. 지금은 snapcraft.yaml
파일에서 실행할 바이너리로 래퍼를 정의합니다. 래퍼는 앱 실행에 필요한 환경 변수를 설정합니다.
여기에 포함된 스크립트 코드 중 하나는 다음과 같습니다.
#!/bin/sh
ARCH='x86_64-linux-gnu'
export LD_LIBRARY_PATH=$SNAP/usr/lib/$ARCH:$LD_LIBRARY_PATH
분명히, ARCH
amd64가 아닌 빌드는 올바르게 작동하지 않으므로 하드코딩은 최적이 아닙니다. 그러나 dpkg-architecture
Snapcraft를 사용하는 경우 아치 감지 기능이 작동하지 않습니다.
Snapcraft로 스냅을 구축하는 동안 올바른 라이브러리 경로를 설정하기 위해 래퍼에서 호스트 아키텍처를 동적으로 감지하려면 어떻게 해야 합니까?
코드는 다음의 일부로 제공됩니다.멋진 데스크톱 예시.
답변1
바이너리 래퍼(및 서비스 파일)는 SNAP_ARCH
환경 변수를 정의합니다. 불행히도 세 쌍이 아니기 때문에 이상적인 솔루션은 아니지만 사례 설명 등을 통해 거기에 도달하는 데 충분한 정보가 되어야 합니다.
답변2
완벽함을 위해 다음 셸 조각을 사용했습니다.
#!/bin/sh
case "$SNAP_ARCH" in
"amd64") ARCH='x86_64-linux-gnu'
;;
"i386") ARCH='i386-linux-gnu'
;;
*)
echo "Unsupported architecture for this clock app build"
exit 1
;;
esac
그러나 래퍼가 복잡해지기 시작하면서 나는 오히려 다음을 살펴보고 있습니다.Snapcraft 플러그인 만들기대신에.