如何为 C++ 程序创建 PPA?

如何为 C++ 程序创建 PPA?

MyAgenda 1.0 截图

如果我有一个用 NetBean 创建的 c++/gtkmm 项目,我该如何将该项目打包到 PPA?

我已经创建了目标文件结构(*.desktop、iconfile、ui glade 文件)。

二进制转到/opt/extras.ubuntu.com/myagenda/bin/myagenda

还有一个 glade 文件夹,必须转到/opt/extras.ubuntu.com/myagenda/bin/myagenda/ui

桌面文件转到/usr/share/applications/myagenda.desktop。图标转到/usr/share/icons/hicolor/scalable/apps/myagenda.svg

如您所见,只有少量文件。

现在,如何管理所有这些东西,在 PPA 上创建包,知道将这些文件放到目标位置在哪里以及如何放置?

├── opt
│   └── extras.ubuntu.com
│       └── myagenda
│           ├── bin
│           │   └── myagenda
│           └── ui
│               ├── item_btn_delete.png
│               ├── item_btn_edit.png
│               ├── myagenda.png
│               ├── myagenda.svg
│               ├── reminder.png
│               └── ui.glade
└── usr
    └── share
        ├── applications
        │   └── myagenda.desktop
        └── icons
            └── hicolor
                └── scalable
                    └── apps
                        └── myagenda.svg

更新:

  1. 在目录中创建install文件debian,目标如下:

    data/myagenda /opt/extras.ubuntu/com/myagenda/bin
    data/ui/* /opt/extras.ubuntu/com/myagenda/ui
    data/myagenda.desktop /usr/share/applications
    data/myagenda.svg /usr/share/icons/hicolor/scalable/apps
    

dpkg-buildpackage构建完成后,但针对 amd64 架构。现在,尝试将其更改为 i386。

答案1

创建 PPA 非常简单,但同时也有些复杂,具体取决于包的复杂性(即单个二进制文件、多个二进制文件……等)。但对于像 MyAgenda 这样的简单应用程序,创建 PPA 非常简单。

首先安装必要的软件包。

sudo apt-get install build-essential devscripts ubuntu-dev-tools debhelper dh-make diff patch cdbs quilt gnupg fakeroot lintian pbuilder piuparts. 其中大多数可能已经默认安装。

现在设置您的 gpg-key 和 ssh-key。按照以下说明操作这里&这里


步骤1:源包的布局

现在转到您的应用程序源文件夹。这是您的基本源包布局:

 MyAgenda-1.0/
    -- data/
          -- myagenda
          -- myagenda.desktop
          -- myagenda.svg
          --ui
             -- myagenda.glade
             -- otherfiles
    -- debian/
        -- changelog
        -- copyright
        -- compat
        -- rules
        -- control
        -- install

步骤2:了解你的 GPG KEY ID 和格式

第一次运行:

gpg --list-keys它将给你类似这样的输出:

   pub: YOURGPG-KEY
   uid: YOURUSERNAME <YOURMAIL-ID>   #note your username & email.
   sub: --------

步骤3:创建Debian文件夹

要在 debian 文件夹下创建 debian 文件夹及其它所有必要文件,请运行(使用上面相同的用户名和电子邮件 ID):

DEBFULLNAME="YOURUSERNAME" dh_make -n -s -e YOUREMAIL-ID。这将有助于使用 gpg 密钥对软件包进行签名。

但是这不会在 debian 文件夹下创建“安装”文件。请手动创建文件并使用以下数据保存它:

        data/myagenda /opt/extras.ubuntu/com/myagenda/bin
        data/ui/* /opt/extras.ubuntu/com/myagenda/ui
        data/myagenda.desktop /usr/share/applications
        data/myagenda.svg /usr/share/icons/hicolor/scalable/apps

STEP4: 更新日志

要更新变更日志运行:

dch -i

以下是示例变更日志:

package (version) distribution; urgency=urgency

 * change details
   more change details
 * even more change details

 -- maintainer name <email address>[two spaces]  Sun, 8 July 2012 18:14:08 +0530

确保保留上述格式。编辑完成后按 CTRL+O 写出。删除
.dch 部分并覆盖更改日志文件。按 CTRL+X 退出。

您可能想要删除 debian 下的多余的 .ex 文件。进入 debian 文件夹并删除 .ex 和 .EX 文件。

cd debian
rm *.ex *.EX

步骤5:创建DEB包

然后创建 deb 包运行:

debuild --no-tgz-check #Optional.it 不会检查源 tarball。


步骤6:上传到PPA

要将源包上传到 PPA,您必须运行:

debuild -S

-S 标志的作用是告诉 debuild 使用另一个脚本 dpkg-buildpackage 和 fakeroot 来构建源包,fakeroot 会在构建包时授予我们假 root 权限。它将获取 .orig.tar.gz 文件并生成 .diff.gz(作者提供的原始 tarball 与我们创建的目录 debian/ 及其内容之间的差异)和 .dsc 文件,该文件包含源包的描述和 md5sum。.dsc 和 *_source.changes(用于上传源包)文件使用您的 GPG 密钥进行签名。

debuild -S将在源目录之外创建一个 source.changes 文件。转到 launchpad 并创建一个 PPA。现在将 source.changes 上传到该 PPA((相应地更改文件名):

dput ppa:YOUR-LAUNCHPAD-USERNAME/myagenda myagenda-1.0-ubuntu1.changes 

完毕!


笔记:

如果你需要上传多个 Ubuntu 版本的软件包,请从以下位置获取帮助这里

资料来源:完整包装指南 Wiki

相关内容