如果我有一个用 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
更新:
在目录中创建
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。