一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如意玲瓏應用構建的基礎知識

深度操作系統(tǒng) ? 來源:深度操作系統(tǒng) ? 2025-03-03 09:53 ? 次閱讀

Linux生態(tài)中,軟件包的分發(fā)與管理一直是開發(fā)者與用戶關注的焦點。如意玲瓏(Linyaps)作為一種新興的容器化應用格式,憑借其輕量化、強隔離、跨發(fā)行版兼容等特性,正在為 Linux 應用生態(tài)注入新的活力。無論是開發(fā)者還是技術愛好者,掌握玲瓏應用的構建方法都至關重要。

本篇作為“如意玲瓏應用構建從入門到實戰(zhàn)”系列的第一章,將帶您系統(tǒng)梳理玲瓏應用構建的核心基礎知識,涵蓋構建流程、規(guī)范要求與關鍵配置文件。通過理解這些基礎概念,您將能夠為后續(xù)的實操教程打下堅實根基,從容應對從代碼到安裝包的每一步挑戰(zhàn)。

01玲瓏應用構建基本步驟

在正式開始構建一個玲瓏應用工程前, 我們需要了解一個玲瓏應用從資源(源代碼、二進制文件等)輸入到應用安裝包導出所經過的基本步驟,來確定我們需要準備哪些必要文件。

96499b92-f42a-11ef-9310-92fbcf53809c.png

玲瓏應用構建基本流程

獲取構建目標源文件(開源項目源代碼、應用二進制文件等);

根據源文件判斷玲瓏應用構建類型, 選擇合適的構建方案;

準備符合要求的玲瓏構建環(huán)境;

按照構建類型及源代碼內容定制構建配置文件 linglong.yaml ;

準備應用所使用的通用類資源,圖標以及其他非二進制資源。

02玲瓏應用構建工程所需材料

結合上述的知識,我們可以了解到一個玲瓏應用在構建的全過程中,主要涉及到以下的文件:

玲瓏應用構建工程配置文件 linglong.yaml;

應用源代碼/需要封裝的二進制文件等資源;

非二進制文件等通用資源。

03玲瓏應用遵循的主流規(guī)范

每一個 Linux 桌面軟件包管理方案為了能夠保障完整的功能和良好的體驗,均需要遵守軟件包管理方案提出的各類規(guī)范要求以最大限度發(fā)揮軟件包管理方案的功能并保障應用生態(tài)體驗。 如意玲瓏也并不總是特立獨行, 需要滿足一定的規(guī)范來保障如意玲瓏生態(tài)得以持續(xù)穩(wěn)步發(fā)展。目前如意玲瓏生方案遵守以下主流的規(guī)范:

Freedesktop XDG 規(guī)范;

玲瓏應用目錄結構規(guī)范;

玲瓏應用構建工程配置文件 linglong.yaml 規(guī)范。

3.1 Freedesktop XDG 規(guī)范

玲瓏應用解決方案遵循 Freedesktop XDG 規(guī)范,一款正常的圖形化應用應具備圖標文件、desktop 文件并符合 Freedesktop XDG 規(guī)范;

玲瓏應用圖標文件應該根據不同尺寸歸類到 $PREFIX/share/icons/hicolor/ 目錄下;

玲瓏應用容器中使用 XDG_DATA_DIRS 等變量, 支持讀寫宿主機中的用戶目錄;

3.2 玲瓏應用目錄結構規(guī)范

玲瓏應用遵循 $PREFIX 路徑規(guī)則,該變量自動生成, 應用所有相關文件需存放于此目錄下, 該目錄層級下存在 bin、share 等目錄;

玲瓏應用容器中的應用將不被允許讀取宿主機中系統(tǒng)目錄中的二進制文件、運行庫;

在構建工程中, 構建工程目錄將會被映射到玲瓏容器中, 掛載為 /project;

玲瓏應用容器中運行庫、頭文件所在目錄將根據運行環(huán)境類型而異:

foundation 類:在玲瓏容器中映射為普通系統(tǒng)路徑 /usr/bin、/usr/include 等, 作為基礎運行系統(tǒng)環(huán)境存在;

runtime 類:在玲瓏容器中映射為runtime容器路徑 /runtime/usr/bin /、runtime/usr/include 等,作為基礎運行系統(tǒng)環(huán)境存在。

默認情況下, 玲瓏容器內部的環(huán)境變量已自動處理好路徑識別問題, 如:

PATH=szbt@szbt-linyaps23:/project$ echo $PATH
/bin:/usr/bin:/runtime/bin:/opt/apps/com.tencent.wechat/files/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin

通用表達為:

PATH=szbt@szbt-linyaps23:/project$ echo $PATH
/bin:/usr/bin:/runtime/bin:$PREFIX/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin

04玲瓏應用構建工程通用資源的規(guī)范

在玲瓏應用構建工程中,不同的資源文件均需要遵循相關規(guī)范以確保構建、體驗能夠滿足要求。

4.1 icon 圖標目錄規(guī)范

依據玲瓏遵循的 Freedesktop XDG 規(guī)范及玲瓏應用目錄結構規(guī)范,圖標根據不同尺寸放置在對應的目錄中。 主流的非矢量圖標尺寸有: 16x16、24x24、32x32、48x48、128x128、256x256、512x512。為保障圖標在系統(tǒng)中能夠獲得較佳的體驗效果, 因此需要至少一個尺寸不小于 128x128 的非矢量圖標文件, 矢量圖標則不存在該限制。

因此, 一款玲瓏應用安裝目錄中, icons 圖標目錄應為以下示例,其中scalable 目錄用于放置矢量圖標文件, 一般為 .svg 格式。

$PREFIX/share/icons/hicolor/16x16/apps
$PREFIX/share/icons/hicolor/24x24/apps
$PREFIX/share/icons/hicolor/32x32/apps
$PREFIX/share/icons/hicolor/48x48/apps
$PREFIX/share/icons/hicolor/128x128/apps
$PREFIX/share/icons/hicolor/256x256/apps
$PREFIX/share/icons/hicolor/512x512/apps
$PREFIX/share/icons/hicolor/scalable/apps

假設你的玲瓏應用同時提供尺寸為 128x128 的非矢量圖標文件 linyaps-app-demo.png 和 128x128 的矢量圖標文件 linyaps-app-demo.svg,在玲瓏容器中應當表現為以下狀態(tài):

$PREFIX/share/icons/hicolor/128x128/apps/linyaps-app-demo.png
$PREFIX/share/icons/hicolor/scalable/apps/linyaps-app-demo.svg
注意,為了避免圖標沖突被覆蓋,圖標文件名請使用應用唯一英文名稱或玲瓏應用id。

4.2 desktop 文件規(guī)范

玲瓏應用兼容大部分符合 Freedesktop XDG 規(guī)范的 desktop 啟動文件, 其中有以下字段需要額外注意:

字段 值要求
Exec 該值用于設置點擊此 desktop 文件時執(zhí)行的指令, 需要與 linglong.yaml 中的 command 值保持一致。
Icon 該值用于設置該 desktop 文件顯示的應用圖標, 需要與 icons 圖標目錄規(guī)范中的圖標文件名一致, 此值不需要文件名后綴。

因此, 一個符合玲瓏應用規(guī)范的 desktop 文件可以參考:

org.qbittorrent.qBittorrent.desktop
[Desktop Entry]
Categories=Network;FileTransfer;P2P;Qt;
Exec=/opt/apps/org.qbittorrent.qBittorrent/files/bin/qbittorrent %U
Comment=Download and share files over BitTorrent
Icon=qbittorrent
MimeType=application/x-bittorrent;x-scheme-handler/magnet;
Name=qBittorrent
Type=Application
StartupWMClass=qbittorrent
Keywords=bittorrent;torrent;magnet;download;p2p;


StartupNotify=true
Terminal=false

05玲瓏應用構建工程 linglong.yaml 規(guī)范

正如其他傳統(tǒng)包管理套件一樣, 手動創(chuàng)建一個玲瓏應用構建工程需要設置構建規(guī)則文件 linglong.yaml,在構建規(guī)則中, 則根據用途劃分為全局字段定制化字段

請注意,案例中 linglong.yaml 正文內所有空格符號、占位符均為有效字符, 請勿刪除或變更格式。

5.1 全局字段規(guī)范

在 linglong.yaml 中, 對于不受構建類型影響的字段我們稱為全局字段, 主要有以下參考的規(guī)范。

1. 一個可以正常開始構建工程的 linglong.yaml應包含以下的關鍵部分:

模塊 解釋
version 構建工程版本號
package 玲瓏應用基本信息
base 玲瓏應用容器基礎環(huán)境及版本設置, 基礎環(huán)境中包含了部分基礎運行庫
runtime 玲瓏應用運行庫 runtime 及版本設置, 當 base 中的基礎運行庫滿足程序運行要求時, 此模塊可刪除
command 玲瓏應用容器啟動時執(zhí)行的命令, 與 desktop 文件的 Exec 字段內容一致
sources 玲瓏應用構建工程源文件類型
build 玲瓏應用構建工程將要執(zhí)行的構建規(guī)則

package模塊中存在數個子模塊:

子模塊 解釋
id 玲瓏應用 id/包名
name 玲瓏應用名稱, 使用英文名稱
version 玲瓏應用版本號
kind 玲瓏應用類型, 默認為app
description 玲瓏應用描述

2. 玲瓏應用遵循 $PREFIX 路徑規(guī)則,該變量自動生成,應用所有相關文件需存放于此目錄下. 構建規(guī)則中若有需要涉及安裝文件的操作均需要安裝到 $PREFIX 路徑下。

其中$PREFIX 變量名即為填寫的實際內容,請勿使用絕對路徑或任何具有絕對值作用的內容代替。

3. 玲瓏應用目前遵循四位數字的版本號命名規(guī)則,不符合規(guī)則無法啟動構建工程

4. base、runtime 版本支持自動匹配最新版本尾號,版本號可以僅填寫版本號的前三位數字,如:

當 base org.deepin.foundation 同時提供 23.0.0.28、23.0.0.29, 若 linglong.yaml 中僅填寫:

base: org.deepin.foundation/23.0.0

那么在啟動玲瓏應用構建工程時, 將會默認采用最高版本號的 23.0.0.29。

5. 玲瓏應用構建工程配置文件目前不直接兼容其他包構建工具的配置文件,需要根據構建工程配置文件案例來進行適配修改。

詳細可參考:https://linyaps.org.cn/guide/start/whatis.html

5.2 定制化字段

根據玲瓏應用構建工程源文件類型, 又可將玲瓏應用構建工程劃分為本地文件文件構建git 源碼倉庫拉取構建,不同類型則需要填寫不同的 linglong.yaml。

玲瓏應用構建工程源文件類型 sources 主要支持這幾種類型: git、local、file、archive。

完整說明可參考:https://linyaps.org.cn/guide/start/whatis.html 5.2.1git 拉取源碼編譯模式 當玲瓏應用構建工程需要通過 git 拉取開源項目倉庫資源到本地進行構建時, 此事 sources 應當設置為 git 類型, 并根據要求填寫 linglong.yaml。并需要根據規(guī)范編寫 sources 與 build 模塊。

1. sources示例

sources:
  - kind: git
    url: https://githubfast.com/qbittorrent/qBittorrent.git
    version: release-4.6.7
    commit: 839bc696d066aca34ebd994ee1673c4b2d5afd7b


  - kind: git
    url: https://githubfast.com/arvidn/libtorrent.git
    version: v2.0.9
    commit: 4b4003d0fdc09a257a0841ad965b22533ed87a0d

名稱 描述
kind 源文件類型
url 需要通過git拉取的源代碼倉庫地址, 該倉庫需要支持git功能. 當網絡狀態(tài)不佳時, 可采用鏡像地址代替
version 指定源代碼倉庫的版本號, 即 tag 標簽, 或拉取主線 master
commit 根據該倉庫 commit 變動歷史拉取源碼, 此處填入commit對應的值, 將會應用該倉庫截止本commit 的所有變更. *此字段優(yōu)先級高于 version, 請勿填入 version 合并時間之后的任何 commit

該模式支持同時添加多個 git 倉庫作為 sources 拉取。

2. build示例

build: |
  mkdir -p ${PREFIX}/bin/ ${PREFIX}/share/
  ##Apply patch for qBittorrent
  cd /project/linglong/sources/qBittorrent.git
  git apply -v /project/patches/linyaps-qBittorrent-4.6.7-szbt2.patch

此模塊為構建規(guī)則正文,路徑遵守玲瓏應用目錄結構規(guī)范。

在 sources 拉取到本地后, 倉庫文件將會存放在 /project/linglong/sources 目錄中,此時不同倉庫目錄以 xxx.git 命名;支持運用 git patch 功能對源代碼進行便捷維護。

5.2.2本地資源操作模式

當玲瓏應用構建工程需要對構建目錄中的文件操作時,此時 kind 應當設置為 local 類型, 并根據要求填寫 linglong.yaml,此時需要根據規(guī)范編寫 sources 與 build 模塊。

1. sources示例

sources:
source:
  - kind: local
    name: "qBittorrent"

名稱 描述
kind 源文件類型
name 源文件名稱標識, 不具備實際用途

注意,當 kind 應當設置為 local 類型時, 構建工程將不會對任何源文件進行操作。

2. build示例

build: |
  ##Build main
  mkdir /project/src/qBittorrent-release-4.6.7-szbt2/build
  cd /project/src/qBittorrent-release-4.6.7-szbt2/build
  cmake -DCMAKE_BUILD_TYPE=Release 
        -DCMAKE_INSTALL_PREFIX=$PREFIX ..
  make -j$(nproc)
  make install
此模塊為構建規(guī)則正文,路徑遵守玲瓏應用目錄結構規(guī)范,此時 build 規(guī)則支持多種寫法以模擬人為操作。

注意需要確保此構建規(guī)則所有步驟均可以正常被執(zhí)行, 否則將會中斷當次構建任務。

5.2.3容器內部手動操作模式

若計劃直接進入玲瓏容器手動操作而不是通過構建規(guī)則文件 linglong.yaml,那么應該參考 本地資源操作模式填寫 linglong.yaml

sources 部分寫法與本地資源操作模式一致;

由于使用手動操作, 因此不需要完整且可以正常被執(zhí)行的 build 規(guī)則, 此時 linglong.yaml 用于生成符合描述的玲瓏容器而不是執(zhí)行所有任務,具體操作將在后續(xù)關于容器內部構建文件的案例中詳細展示。

以上便是玲瓏應用構建的一些基礎知識,相信您已對玲瓏應用構建的規(guī)范、目錄結構、資源配置及關鍵文件(如linglong.yaml)有了較全面的認知。這些知識不僅是構建流程的“地圖”,更是規(guī)避常見陷阱的“指南針”。

在接下來的系列推文中,我們將深入實戰(zhàn)環(huán)節(jié)。準備好您的開發(fā)環(huán)境,下一站,我們將帶大家在玲瓏容器中編譯基于 Qt5 的開源應用!

關于項目

如意玲瓏(Linyaps)是一種新型的獨立包管理工具集,專注于解決 Linux 系統(tǒng)下由傳統(tǒng)軟件包格式的復雜性和交叉依賴關系引起的兼容性問題。項目通過先進的隔離技術,將應用與系統(tǒng)完全解耦,從根本上解決因環(huán)境變化引發(fā)的應用兼容性問題,實現“一個架構,一次構建”,致力于簡化軟件開發(fā)流程、降低維護成本、加強數據安全,促進技術與平臺間的協同合作,構建一個更加繁榮、安全和高效的 Linux 軟件生態(tài)環(huán)境。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11420

    瀏覽量

    212317
  • 代碼
    +關注

    關注

    30

    文章

    4880

    瀏覽量

    69995
  • 軟件包
    +關注

    關注

    0

    文章

    108

    瀏覽量

    11845

原文標題:如意玲瓏應用構建指南(一):規(guī)范體系與配置文件全解析

文章出處:【微信號:linux_deepin,微信公眾號:深度操作系統(tǒng)】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    labview基礎知識

    labview基礎知識labview基礎知識labview基礎知識labview基礎知識
    發(fā)表于 03-08 17:56

    干貨 | 信號鏈基礎知識合輯 1-10

    模擬信號鏈的基本構建塊予以探討和研究。討論運放的一些基本應用,描述一些運放性能的指標,包括模擬信號處理以及支持這些功能所必須的器件。歡迎多提保貴意見和建議。 早在推出這本信號鏈基礎知識合集之前,我們還推出
    發(fā)表于 01-05 09:45

    EMC基礎知識

    EMC基礎知識EMC基礎知識---華為.pdf (440.74 KB )
    發(fā)表于 06-06 04:36

    Blackfin應用程序開發(fā)基礎知識

    Blackfin應用程序開發(fā)基礎知識 第一章:簡介第1a節(jié):課程安排第二章:VisualDSP++構建流程第2a節(jié):C代碼導入概述第2b章:編譯器基礎知識第2c節(jié):連
    發(fā)表于 01-08 15:04 ?0次下載

    通信基礎知識教程

    通信基礎知識 1、電信基礎知識2、通信電源技術3、配線設備結構、原理與防護4、防雷基礎知識5、EMC基礎知識6、防腐蝕原理與技術7、產品安
    發(fā)表于 03-04 16:48 ?33次下載

    電子電路基礎知識

    電子電路基礎知識 電路基礎知識(一)電路基礎知識(1
    發(fā)表于 01-15 09:47 ?23.8w次閱讀

    電池基礎知識(集全版)

    電池基礎知識(集全版)  電池基礎知識
    發(fā)表于 11-10 14:19 ?2659次閱讀

    計算機基礎知識介紹

    計算機基礎知識計算機基礎知識計算機基礎知識
    發(fā)表于 12-03 16:13 ?0次下載

    使用Eclipse基礎知識

    使用Eclipse 基礎知識 使用Eclipse 基礎知識 適合初學者學習使用
    發(fā)表于 02-26 10:30 ?0次下載

    電源管理基礎知識電源管理基礎知識電源管理基礎知識

    電源管理基礎知識電源管理基礎知識電源管理基礎知識
    發(fā)表于 09-15 14:36 ?76次下載
    電源管理<b class='flag-5'>基礎知識</b>電源管理<b class='flag-5'>基礎知識</b>電源管理<b class='flag-5'>基礎知識</b>

    使用Kotlin構建Android應用的基礎知識

    2021 年 10 月,我們發(fā)布了 "使用 Kotlin 構建 Android 應用的基礎知識" 課程的最后一個單元,這是我們推出的免費自學編程課程,致力于幫助沒有編程經驗的人
    的頭像 發(fā)表于 03-29 09:20 ?1795次閱讀

    優(yōu)質LDO基礎知識分享

    本節(jié)分享下LDO的基礎知識,主要來源于Ti的文檔《LDO基礎知識》。
    的頭像 發(fā)表于 03-26 11:03 ?1577次閱讀

    如意玲瓏社區(qū)2024年度工作總結

    2024年,如意玲瓏社區(qū)在社區(qū)發(fā)展及軟件生態(tài)建設領域邁出了堅實的步伐。作為開放原子開源基金會的孵化項目,在這一年里穩(wěn)步推進各項工作,在多個關鍵層面取得了切實的成果。
    的頭像 發(fā)表于 02-05 11:45 ?611次閱讀
    <b class='flag-5'>如意</b><b class='flag-5'>玲瓏</b>社區(qū)2024年度工作總結

    如何在玲瓏容器中編譯qBittorrent并測試運行

    通過《如意玲瓏應用構建指南(一):規(guī)范體系與配置文件全解析》的學習后,相信大家已經對玲瓏應用構建工程基礎
    的頭像 發(fā)表于 03-10 11:26 ?288次閱讀
    如何在<b class='flag-5'>玲瓏</b>容器中編譯qBittorrent并測試運行

    如意玲瓏應用構建規(guī)則實用案例

    通過《如意玲瓏應用構建指南(二):在玲瓏容器中編譯基于 Qt5 的開源應用》的學習后,相信大家已經基本了解了在玲瓏容器中通過怎樣的操作可以將
    的頭像 發(fā)表于 03-25 11:17 ?208次閱讀
    <b class='flag-5'>如意</b><b class='flag-5'>玲瓏</b>應用<b class='flag-5'>構建</b>規(guī)則實用案例