在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

如意玲瓏應用構建規則實用案例

深度操作系統 ? 來源:深度操作系統 ? 2025-03-25 11:17 ? 次閱讀

通過《如意玲瓏應用構建指南(二):在玲瓏容器中編譯基于 Qt5 的開源應用》的學習后,相信大家已經基本了解了在玲瓏容器中通過怎樣的操作可以將基于 Qt5 的開源應用——qBittorrent 的項目源代碼編譯為可以運行的二進制程序文件。

今天, 我們在此基礎上補齊玲瓏應用構建基本步驟中的最后步驟——編寫一份完整的玲瓏應用構建工程配置文件 linglong.yaml, 主要實現以下的目標:

自動化拉取開源項目源代碼;

自動應用對于源代碼進行修改的 Patch;

自動執行編譯構建、安裝操作。

01前期準備

根據玲瓏應用構建工程通用資源的規范要求,我們應當為一款圖形化應用同時提供保障桌面用戶體驗的 icons 圖標文件及 desktop 啟動文件。因此,為了能夠編寫自動編譯 qBittorrent 的完整 linglong.yaml,需要額外準備以下材料:

非二進制文件通用資源,icons圖標、desktop文件;

主程序 qBittorrent 開源項目的倉庫 Git 信息、Tag 版本、Commit 信息;

第三方運行庫 libtorrent 開源項目的倉庫 Git 信息、Tag版本、Commit信息。

1.1 通用資源準備

由于在上節教程中我們在玲瓏容器內已經成功編譯并運行了 qBittorrent,并且這款應用在安裝到 $PREFIX 之后一并提供了 icons 目錄、desktop 啟動文件。

我們對這兩項進行檢查, 確認均符合 Freedesktop XDG 規范,因此我們僅需要直接從容器中復制到本地即可, 即復制到構建目錄 /project 中。

ziggy@linyaps23:/project/src/qBittorrent-release-4.6.7-szbt2/build$ ls $PREFIX/share/applications/
org.qbittorrent.qBittorrent.desktop
ziggy@linyaps23:/project/src/qBittorrent-release-4.6.7-szbt2/build$ ls $PREFIX/share/icons/hicolor/128x128/apps/
qbittorrent.png

于是, 我們得到了非二進制文件通用資源,為了方便被構建組件使用,我這里將這些文件放到了構建目錄的 template_app子目錄中,現在呈現此類結構:

template_app
├── linglong.yaml
└── template_app
    ├── applications
    │   └── org.qbittorrent.qBittorrent.desktop
    ├── icons
    │   └── hicolor
    │       ├── 128x128
    │       │   ├── apps
    │       │   │   └── qbittorrent.png
    │       │   └── status
    │       │       └── qbittorrent-tray.png
    │       └── scalable
    │           ├── apps
    │           │   └── qbittorrent.svg
    │           └── status
    │               ├── qbittorrent-tray-dark.svg
    │               ├── qbittorrent-tray-light.svg
    │               └── qbittorrent-tray.svg

1.2desktop 啟動文件定制

根據玲瓏應用構建工程通用資源的規范,我們需要確保當前的 desktop 文件符合相關規范。

我們打開從容器中導出的 desktop 文件,檢查 Exec 和 Icon 字段,得出以下結果:

[Desktop Entry]
Categories=Network;FileTransfer;P2P;Qt;
Exec=qbittorrent %U
GenericName=BitTorrent client
Comment=Download and share files over BitTorrent
Icon=qbittorrent

Icon 字段值與圖標文件一致,符合規范;

Exec字段值不為玲瓏容器內編譯的結果, 需要修改為符合玲瓏應用構建工程通用資源的規范的內容,這里替換為絕對路徑指向容器中的具體二進制文件,用于喚醒容器并啟動該應用。

02構建?程配置?件 linglong.yaml

在準備圖形化應用所必備的通用資源后,我們著手編寫構建規則。

由于在上節教程中我們已經準備了一版簡單但不具備完整構建功能的 linglong.yaml,因此我們可以在其基礎上進行定制,現在是初始狀態:

# SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
#
# SPDX-License-Identifier: LGPL-3.0-or-later


version: "4.6.7.2"


package:
  id: org.qbittorrent.qBittorrent
  name: "qBittorrent"
  version: 4.6.7.2
  kind: app
  description: |
    qBittorrent binary


base: org.deepin.foundation/23.0.0
runtime: org.deepin.Runtime/23.0.1


command:
  - /opt/apps/org.qbittorrent.qBittorrent/files/bin/qbittorrent


sources:
  - kind: local
    name: "qBittorrent"


build: |
  mkdir -p ${PREFIX}/bin/ ${PREFIX}/share/

2.1構建規則編寫 & 測試

為了能夠平滑過渡,我這里先將編譯指令導入構建規則,暫不引入自動拉取 Git 倉庫的內容,以確保我們編寫的構建規則準確可用。

由于不建議在構建規則中執行過多 tar指令,因此我這里在構建目錄下同時開啟兩個 Shell 窗口,分別用于玲瓏容器操作普通操作

以下是正式開始改造的過程:

通過普通操作窗口使用 git 將 qBittorrent 和 libtorrent-rasterbar 源碼拉取或解壓到構建目錄中,我這里通過源碼壓縮包單獨解壓到子目錄中:

ziggy@linyaps23:/media/szbt/Data/ll-build/QT/qBittorrent-local$ tar -xvf qBittorrent-4.6.7-git-origin-src.tar.zst -C src/
ziggy@linyaps23:/media/szbt/Data/ll-build/QT/qBittorrent-local$ tar -xvf libtorrent-rasterbar-2.0.9.tar.gz -C 3rd/

從玲瓏應用目錄結構規范得知, 構建目錄會被映射為 /project,,因此我們需要將上節課程中使用的手動編譯命令寫入 build 模塊中。

build: |
  mkdir -p ${PREFIX}/bin/ ${PREFIX}/share/
  ##Build 3rd libs  注釋:進入 `libtorrent-rasterbar` 源碼目錄并編譯安裝到容器內
  mkdir /project/3rd/libtorrent-rasterbar-2.0.9/build
  cd /project/3rd/libtorrent-rasterbar-2.0.9/build
  cmake -DCMAKE_BUILD_TYPE=Release 
        -DCMAKE_INSTALL_PREFIX=$PREFIX ..
  make -j$(nproc)
  make install
  ##Build main  注釋:進入 `qBittorrent` 源碼目錄并編譯安裝到容器內
  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
  ##Extract common res  注釋: 將通用文件復制安裝到容器對應目錄內, 符合 `玲瓏應用目錄結構規范`
  cp -rf /project/template_app/* ${PREFIX}/share/

在將此塊構建規則補全后,我們可以開始嘗試通過自動化構建來將本地源碼編譯為二進制程序并導出玲瓏應用安裝包 binary.layer 了。

注:由于此版配置文件不提供解壓、刪除功能,因此每次重新構建前均需要將這些目錄清空并重新解壓。

2.2 本地一站構建測試

在補全 build 模塊后, 此時的 linglong.yaml 狀態:

# SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
#
# SPDX-License-Identifier: LGPL-3.0-or-later


version: "2"


package:
  id: org.qbittorrent.qBittorrent
  name: "qBittorrent"
  version: 4.6.7.2
  kind: app
  description: |
    qBittorrent binary


base: org.deepin.foundation/23.0.0
runtime: org.deepin.Runtime/23.0.1


command:
  - /opt/apps/org.qbittorrent.qBittorrent/files/bin/qbittorrent


source:
  - kind: local
    name: "qBittorrent"


build: |
  ##Build 3rd libs
  mkdir -p ${PREFIX}/bin/ ${PREFIX}/share/
  mkdir /project/3rd/libtorrent-rasterbar-2.0.9/build
  cd /project/3rd/libtorrent-rasterbar-2.0.9/build
  cmake -DCMAKE_BUILD_TYPE=Release 
        -DCMAKE_INSTALL_PREFIX=$PREFIX ..
  make -j$(nproc)
  make install
  ##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
  ##Extract common res
  cp -rf /project/template_app/* ${PREFIX}/share/

此刻我們可以返回構建目錄,開始構建測試了,執行:

ziggy@linyaps23:/media/szbt/Data/ll-build/QT/qBittorrent-local$ ll-builder build -v

得益于在玲瓏容器中的編譯筆記,此次構建很快就成功結束了,我們執行以下指令來將容器導出為玲瓏應用安裝包 binary.layer:

ziggy@linyaps23:/media/szbt/Data/ll-build/QT/qBittorrent-local$ ll-builder export --layer

03本地構建結果測試

在得到玲瓏應用安裝包后,可以在不同支持玲瓏環境的主流發行版上嘗試體驗,來確認通過玲瓏容器構建的二進制程序是否存在通用性。

deepin 23

ff546e0a-063b-11f0-9310-92fbcf53809c.png

openKylin 2.0

ff6595cc-063b-11f0-9310-92fbcf53809c.png

Ubuntu 2404

ff93a750-063b-11f0-9310-92fbcf53809c.png

OpenEuler 2403

ffb24552-063b-11f0-9310-92fbcf53809c.png

由此可見,基于 Qt5 的開源應用--qBittorrent 構建完成后,在支持如意玲瓏應用方案的第三方發行版中可以成功運行!本教程至此結束,歡迎大家上手體驗!

關于項目

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

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

    關注

    3

    文章

    3510

    瀏覽量

    43192
  • 容器
    +關注

    關注

    0

    文章

    503

    瀏覽量

    22300
  • 代碼
    +關注

    關注

    30

    文章

    4869

    瀏覽量

    69905
  • 編譯
    +關注

    關注

    0

    文章

    672

    瀏覽量

    33455

原文標題:如意玲瓏應用構建指南(三):如意玲瓏應用構建規則實用案例

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

收藏 人收藏

    評論

    相關推薦

    節日快樂萬事如意

    祝論壇新老朋友新春佳節節日愉快,萬事如意
    發表于 01-29 16:16

    【NanoPi M1試用體驗】開箱評測 小巧玲瓏

    `小巧玲瓏真的很開心,竟然真的申請到了,感謝電子發燒友論壇;終于收到了期盼的NanoPi M1,出乎意料,真的很小巧:做工非常的好。`
    發表于 08-09 21:00

    ###神轟%>小巧玲瓏眼睛紅,地上蹦跳自家園。Fanny 范妮

    V+心【 7908-2588 】###神轟%>小巧玲瓏眼睛紅,地上蹦跳自家園。Fanny 范妮V+心【 7908-2588 】
    發表于 03-27 19:10

    (:小巧玲瓏眼睛紅,地上蹦跳自家園

    \/+芯【 7 9 0 8 - 2 5 8 8 】(:小巧玲瓏眼睛紅,地上蹦跳自家園\/+芯【 7 9 0 8 - 2 5 8 8 】
    發表于 03-27 19:12

    玲瓏GUI在小熊派開發板上是怎樣去移植的

    玲瓏GUI是什么?玲瓏GUI在小熊派開發板上是怎樣去移植的?
    發表于 12-21 07:53

    工藝規則知識管理系統的研究與開發

    本文重點闡述了工藝規則知識管理系統的研究與開發原理,論述了通用的基于關系數據庫的工藝決策知識模型構建方法。提出了工藝決策產生式規則表示方法,摒棄了傳統的利用固
    發表于 08-24 08:13 ?16次下載

    推理規則鏈的確定性構建

    推理是人工智能領域研究的重點。推理過程一般是非確定的,會產生許多冗余的推理分支。本文針對專家系統中常用的產生式規則,提出了一種確定性構造推理鏈的方法。方法運用邏輯代數理論,首先確立了規則集與邏輯函數
    發表于 12-05 17:30 ?0次下載

    玲瓏ISP處理器的主要技術特點

    今天,ARM中國(安謀中國)發布了全新的“玲瓏”系列多媒體產品線,首款產品是ISP圖像信號處理器,ARM中國本土團隊歷時2年多自主研發而來。
    的頭像 發表于 12-04 09:05 ?2252次閱讀

    ARM中國發布首款ISP玲瓏監控系統

    今天,ARM中國(安謀中國)發布了全新的“玲瓏”系列多媒體產品線,首款產品是ISP圖像信號處理器,ARM中國本土團隊歷時2年多自主研發而來。
    的頭像 發表于 12-04 10:29 ?2155次閱讀

    ARM中國發布 “玲瓏”ISP處理器

    繼 周易、星辰、山海之后,安謀中國日前發布了第四條自主 IP 產品線 --玲瓏多媒體產品線,其首款產品為 玲瓏i3/i5 ISP 處理器。 據安謀中國產品研發常務副總裁劉澍介紹,二者之間存在著一定
    的頭像 發表于 12-06 09:12 ?2012次閱讀

    安謀科技發布“玲瓏”DPU和新一代VPU

    安謀科技(中國)有限公司在自研技術道路上再邁堅實步伐,近日震撼發布首款“玲瓏”系列DPU(數據處理單元)及新一代VPU(視頻處理單元)。此次推出的“玲瓏”D8/D6/D2顯示處理器,以及“玲瓏”V510/V710視頻處理器,均源
    的頭像 發表于 09-24 14:33 ?474次閱讀

    如意玲瓏社區2024年度工作總結

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

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

    在Linux生態中,軟件包的分發與管理一直是開發者與用戶關注的焦點。如意玲瓏(Linyaps)作為一種新興的容器化應用格式,憑借其輕量化、強隔離、跨發行版兼容等特性,正在為 Linux 應用生態注入新的活力。無論是開發者還是技術愛好者,掌握
    的頭像 發表于 03-03 09:53 ?267次閱讀
    <b class='flag-5'>如意</b><b class='flag-5'>玲瓏</b>應用<b class='flag-5'>構建</b>的基礎知識

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

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

    如何將Linux安裝包快速轉成玲瓏

    本篇將以 motrix 為例為大家展示如何將 Linux 安裝包快速轉成玲瓏包。
    的頭像 發表于 03-12 16:01 ?252次閱讀
    如何將Linux安裝包快速轉成<b class='flag-5'>玲瓏</b>包
    主站蜘蛛池模板: 天天欧美 | 我想看三级特黄 | 欧美日韩一区视频 | 欧美日韩亚洲色图 | 色免费在线观看 | 爱啪网站| 在线一区二区观看 | 精品精品国产理论在线观看 | 草色在线| 一区二区三区高清不卡 | 一级特黄女人生活片 | 玖玖玖精品视频免费播放 | 国产精品高清免费网站 | 手机在线观看你懂的 | 资源新版在线天堂 | 免费网址视频在线看 | 福利色播 | 日韩欧美色 | 三级网站在线播放 | 2021天天操| 日本黄视频在线观看 | 亚洲一区二区免费视频 | 国产福利99 | 2019天天操 | 国产精品17p | 四虎永久在线精品国产免费 | 免费性网站 | 欧美video free xxxxx| 国产性夜夜性夜夜爽91 | 天天草夜夜 | 色在线视频观看 | 97影院理论片手机在线观看 | 五月开心六月伊人色婷婷 | 精品三级内地国产在线观看 | 手机在线视频你懂的 | 东京毛片 | 成人精品在线观看 | 久久精品国波多野结衣 | 国产成人91青青草原精品 | 很黄很污的视频网站 | 性欧美性free |