如何構建多拱形快照

如何構建多拱形快照

我有一個想要為多種架構建立的快照。現在,在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 插件反而。

相關內容