
我有一個想要為多種架構建立的快照。現在,在snapcraft.yaml
文件中,我將包裝器定義為要執行的二進位文件,它設定應用程式運行所需的環境變數。
它所包含的一段腳本程式碼如下:
#!/bin/sh
ARCH='x86_64-linux-gnu'
export LD_LIBRARY_PATH=$SNAP/usr/lib/$ARCH:$LD_LIBRARY_PATH
顯然,硬編碼ARCH
不是最佳選擇,因為非 amd64 建置將無法正常運作。然而,使用 Snapcraft 時,足弓偵測dpkg-architecture
將無法運作。
如何在使用 Snapcraft 建立快照時動態偵測包裝器中的主機架構以設定正確的庫路徑?
代碼可作為活潑的桌面範例。
答案1
二進位包裝器(和服務文件)SNAP_ARCH
為您定義環境變數。不幸的是,這不是一個理想的解決方案,因為它們不是三胞胎,但它應該有足夠的資訊讓您透過案例陳述或其他內容到達那裡。
答案2
為了完整起見,我最終使用了以下 shell 片段:
#!/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 插件反而。