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

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

3天內不再提示

如何從頭開始學習為 CardBook 創(chuàng)建一個Debian包

Linux愛好者 ? 來源:未知 ? 作者:李倩 ? 2018-08-02 17:08 ? 次閱讀

我在 GSoC(LCTT 譯注:Google Summer Of Code,一項針對學生進行的開源項目訓練營,一般在夏季進行。)的任務中有一項是為用戶構建 Thunderbird擴展。一些非常流行的擴展,比如Lightning(日歷行事歷)已經擁有了 deb 包。

另外一個重要的用于管理基于 CardDav 和 vCard 標準的聯(lián)系人的擴展Cardbook,還沒有一個 deb 包。

我的導師,Daniel鼓勵我去為它制作一個包,并上傳到mentors.debian.net。因為這樣就可以使用apt-get來安裝,簡化了安裝流程。這篇博客描述了我是如何從頭開始學習為 CardBook 創(chuàng)建一個 Debian 包的。

首先,我是第一次接觸打包,我在從源碼構建包的基礎上進行了大量研究,并檢查它的協(xié)議是是否與DFSG兼容。

我從多個 Debian Wiki 中的指南中進行學習,比如打包介紹、構建一個包,以及一些博客。

我還研究了包含在Lightning 擴展包的 amd64 文件。

Debian 包

創(chuàng)建一個空的包

我從使用dh_make來創(chuàng)建一個debian目錄開始。

# Empty project folder

$ mkdir -p Debian/cardbook

# create files

$ dh_make

> --native

> --single

> --packagename cardbook_1.0.0

> --email minkush@example.com

一些重要的文件,比如 control、rules、changelog、copyright 等文件被初始化其中。

所創(chuàng)建的文件的完整列表如下:

$ find /debian

debian/

debian/rules

debian/preinst.ex

debian/cardbook-docs.docs

debian/manpage.1.ex

debian/install

debian/source

debian/source/format

debian/cardbook.debhelper.lo

debian/manpage.xml.ex

debian/README.Debian

debian/postrm.ex

debian/prerm.ex

debian/copyright

debian/changelog

debian/manpage.sgml.ex

debian/cardbook.default.ex

debian/README

debian/cardbook.doc-base.EX

debian/README.source

debian/compat

debian/control

debian/debhelper-build-stamp

debian/menu.ex

debian/postinst.ex

debian/cardbook.substvars

debian/files

我了解了 Debian 系統(tǒng)中Dpkg包管理器及如何用它安裝、刪除和管理包。

我使用dpkg命令創(chuàng)建了一個空的包。這個命令創(chuàng)建一個空的包文件以及四個名為.changes、.deb、.dsc、.tar.gz的文件。

.dsc文件包含了所發(fā)生的修改和簽名

.deb文件是用于安裝的主要包文件。

.tar.gz(tarball)包含了源代碼

這個過程也在/usr/share目錄下創(chuàng)建了README和changelog文件。它們包含了關于這個包的基本信息比如描述、作者、版本。

我安裝這個包,并檢查這個包安裝的內容。我的新包中包含了版本、架構和描述。

$ dpkg -L cardbook

/usr

/usr/share

/usr/share/doc

/usr/share/doc/cardbook

/usr/share/doc/cardbook/README.Debian

/usr/share/doc/cardbook/changelog.gz

/usr/share/doc/cardbook/copyright

包含 CardBook 源代碼

在成功的創(chuàng)建了一個空包以后,我在包中添加了實際的 CardBook 擴展文件。 CardBook 的源代碼托管在 Gitlab 上。我將所有的源碼文件包含在另外一個目錄,并告訴打包命令哪些文件需要包含在這個包中。

我使用 vi 編輯器創(chuàng)建一個 debian/install 文件并列舉了需要被安裝的文件。在這個過程中,我花費了一些時間去學習基于 Linux 終端的文本編輯器,比如 vi 。這讓我熟悉如何在 vi 中編輯、創(chuàng)建文件和快捷方式。

當這些完成后,我在變更日志中更新了包的版本并記錄了我所做的改變。

$ dpkg -l | grep cardbook

ii cardbook 1.1.0 amd64 Thunderbird add-on for address book

更新完包的變更日志

在重新構建完成后,重要的依賴和描述信息可以被加入到包中。 Debian 的control文件可以用來添加額外的必須項目和依賴。

本地 Debian 倉庫

在不創(chuàng)建本地存儲庫的情況下,CardBook 可以使用如下的命令來安裝:

$ sudo dpkg -i cardbook_1.1.0.deb

為了實際測試包的安裝,我決定構建一個本地 Debian 存儲庫。沒有它,apt-get命令將無法定位包,因為它沒有在 Debian 的包軟件列表中。

為了配置本地 Debian 存儲庫,我復制我的包 (.deb)為放在/tmp目錄中的Packages.gz文件。

本地 Debian 倉庫

為了使它工作,我了解了apt的配置和它查找文件的路徑。

我研究了一種在apt-config中添加文件位置的方法。最后,我通過在 APT 中添加*.list文件來添加包的路徑,并使用apt-cache更新APT緩存來完成我的任務。

因此,最新的 CardBook 版本可以成功的通過apt-get install cardbook來安裝了。

使用 apt-get 安裝 CardBook

修復打包錯誤和 Bugs

我的導師 Daniel 在這個過程中幫了我很多忙,并指導我如何進一步進行打包。他告訴我使用Lintian來修復打包過程中出現(xiàn)的常見錯誤和最終使用dput來上傳 CardBook 包。

Lintian 是一個用于發(fā)現(xiàn)策略問題和 Bug 的包檢查器。它是 Debian 維護者們在上傳包之前廣泛使用的自動化檢查 Debian 策略的工具。

我上傳了該軟件包的第二個更新版本到 Debian 目錄中的Salsa 倉庫的一個獨立分支中。

我從 Debian backports 上安裝 Lintian 并學習在一個包上用它來修復錯誤。我研究了它用在其錯誤信息中的縮寫,和如何查看 Lintian 命令返回的詳細內容。

$ lintian -i -I --show-overrides cardbook_1.2.0.changes

最初,在.changes文件上運行命令時,我驚訝地看到顯示出來了大量錯誤、警告和注釋!

在包上運行 Lintian 時看到的大量報錯

詳細的 Lintian 報錯

詳細的 Lintian 報錯 (2) 以及更多

我花了幾天時間修復與 Debian 包策略違例相關的一些錯誤。為了消除一個簡單的錯誤,我必須仔細研究每一項策略和 Debian 的規(guī)則。為此,我參考了Debian 策略手冊以及Debian 開發(fā)者參考。

我仍然在努力使它變得完美無暇,并希望很快可以將它上傳到 mentors.debian.net!

如果 Debian 社區(qū)中使用 Thunderbird 的人可以幫助修復這些報錯就太感謝了。

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

    關注

    96

    文章

    2943

    瀏覽量

    66618
  • Debian
    +關注

    關注

    0

    文章

    74

    瀏覽量

    1127

原文標題:Debian 打包入門

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    MikroElektronika的mikroBUS Click板是否從頭開始的制作?

    的示例代碼,因此您不必從頭開始。2x2按鍵單擊,F(xiàn)LICKER單擊,Arduino UNO單擊Shield我想用Click板創(chuàng)建項目來展示它們,但有數(shù)百
    發(fā)表于 10-31 07:10

    請問必須從頭創(chuàng)建BitGen .ut文件嗎?

    我知道ISE會生成.ut文件。但是你不使用ISE是什么,切都是命令行。是否必須從頭創(chuàng)建BitGen .ut文件?我還注意到,適用于Vi
    發(fā)表于 07-22 14:48

    如何使用和聲從頭開始設置HTTP服務?

    有沒有關于如何使用和聲從頭開始設置HTTP服務的最新教程/設置?(不是從演示項目開始
    發(fā)表于 04-08 09:39

    ARM嵌入式系統(tǒng)設計:從頭開始構建還是使用SBC?

    些是早期產品的迭代。對于他們而言,開發(fā)可在其整個產品組合中使用的標準平臺是種可行的替代方案,而不是每個新產品從頭開始進行新設計。選擇
    發(fā)表于 10-21 10:11

    如何從頭開始創(chuàng)建新的SPC5應用程序?

    我正在使用 SPC570S-DISP 開發(fā)板,我正在嘗試創(chuàng)建新的應用程序表單。我已經測試了 IDE 中給出的幾個示例應用程序,它們工作正常?,F(xiàn)在我想從頭開發(fā)這樣
    發(fā)表于 01-16 07:22

    能否連接JTAG調試器并從頭開始對MCU進行編程,因為MCU上沒有舊代碼?

    我正在設計帶有 mimxrt1062 芯片的 PCB。我要把 JTAG 引腳拿出來。我能否連接 JTAG 調試器并從頭開始對 MCU 進行編程,因為 MCU 上沒有舊代碼?有什么需要注意的嗎?
    發(fā)表于 05-12 06:20

    在三十分鐘內創(chuàng)建你的深度學習服務器

    每當我開始新的項目時,我發(fā)現(xiàn)自己一次又一次地創(chuàng)建
    的頭像 發(fā)表于 12-24 16:53 ?441次閱讀

    如何從頭開始EK-RA6M4評估板創(chuàng)建項目

    開始學習Pascal樣。從那時起,我用其他幾種語言編寫了類似的代碼行,主要是為了對新開發(fā)環(huán)境的安裝進行完整性檢查。
    發(fā)表于 10-25 14:16 ?699次閱讀

    從頭開始構建無人機

    電子發(fā)燒友網(wǎng)站提供《從頭開始構建無人機.zip》資料免費下載
    發(fā)表于 11-22 10:35 ?1次下載
    <b class='flag-5'>從頭開始</b>構建無人機

    如何從頭開始制作六足機器人

    電子發(fā)燒友網(wǎng)站提供《如何從頭開始制作六足機器人.zip》資料免費下載
    發(fā)表于 11-23 09:53 ?2次下載
    如何<b class='flag-5'>從頭開始</b>制作六足機器人

    PyTorch教程3.4之從頭開始執(zhí)行線性回歸

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程3.4之從頭開始執(zhí)行線性回歸.pdf》資料免費下載
    發(fā)表于 06-05 11:25 ?0次下載
    PyTorch教程3.4之<b class='flag-5'>從頭開始</b>執(zhí)行線性回歸

    PyTorch教程4.4之從頭開始實現(xiàn)Softmax回歸

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程4.4之從頭開始實現(xiàn)Softmax回歸.pdf》資料免費下載
    發(fā)表于 06-05 15:37 ?0次下載
    PyTorch教程4.4之<b class='flag-5'>從頭開始</b>實現(xiàn)Softmax回歸

    PyTorch教程-3.4. 從頭開始執(zhí)行線性回歸

    ,但從頭開始實施是確保您真正了解自己在做什么的唯方法。此外,當需要自定義模型、定義我們自己的層或損失函數(shù)時,了解引擎蓋下的工作原理將很方便。在本節(jié)中,我們將僅依賴
    的頭像 發(fā)表于 06-05 15:38 ?474次閱讀
    PyTorch教程-3.4. <b class='flag-5'>從頭開始</b>執(zhí)行線性回歸

    為什么從頭開始汽車應用設計IC很重要

    級和3級自動駕駛技術的好處,這些技術提供了部分到有條件的轉向,加速和制動自動化。反過來,這些技術又推動了對車內半導體內容的需求。本文將探討為什么從性能和安全角度出發(fā),從頭開始設計汽車IC比重新利用最初設計用于其他用途的芯片更好。
    的頭像 發(fā)表于 06-12 14:25 ?609次閱讀

    在Spartan 6 FPGA上從頭開始實現(xiàn)全加器

    電子發(fā)燒友網(wǎng)站提供《在Spartan 6 FPGA上從頭開始實現(xiàn)全加器.zip》資料免費下載
    發(fā)表于 06-15 10:13 ?0次下載
    在Spartan 6 FPGA上<b class='flag-5'>從頭開始</b>實現(xiàn)全加器