/*********************************************************************
* Author : Samson
* Date : 07/04/2014
* Test platform:
* 3.11.0-12-generic #19-Ubuntu
* GNU bash, version 4.2.45
* *******************************************************************/
deb包的构建的命令为:
dpkg-buildpackage
这样会自动完成所有从源代码包构建二进制包的工作,包括以下几个步骤:
0、清理源代码树(debian/rules clean)
1、构建源代码包(dpkg-source -b)
2、构建程序(debian/rules build)
3、构建二进制包(fakeroot debian/rules binary)
4、使用 gpg 签署 .dsc 文件
5、使用 dpkg-genchanges 和 gpg 创建并签署上传用的 .changes 文件
其中0~3这四步中,其实都是调用的dh命令,
第一步执行的其实是:dh clean ;若是想修改默认的clean项的时候,那么可以使用如下语句写入到rules文件中进行重写clean动作内容:
override_dh_auto_clean:
rm -rf build-deb build-udeb
第三步执行的其实是:dh build ;当然和第一步中的clean一样,也是可以通过override_dh_auto_configure、override_dh_auto_build等类似于第一步中的动作进行重写的;
如:
override_dh_auto_configure:
dh_auto_configure -Bbuild-deb -- $(confflags)
dh_auto_configure -Bbuild-udeb -- $(confflags_udeb)
override_dh_auto_build:
# Debian's /var/log/btmp has inappropriate permissions.
perl -pi -e 's,.*#define USE_BTMP .*,/* #undef USE_BTMP */,' build-deb/config.h
perl -pi -e 's,.*#define USE_BTMP .*,/* #undef USE_BTMP */,' build-udeb/config.h
第四步执行的其实是:dh binary; 此步骤会用到各种dh_*的命令,主要包括以下命令:
dh_testroot
dh_prep
dh_installdirs
dh_install
dh_installdocs
dh_installchangelogs
dh_installexamples
dh_installman
dh_installcatalogs
dh_installcron
dh_installdebconf
dh_installemacsen
dh_installifupdown
dh_installinfo
dh_pysupport
dh_installinit
dh_installmenu
dh_installmime
dh_installmodules
dh_installlogcheck
dh_installlogrotate
dh_installpam
dh_installppp
dh_installudev
dh_installwm
dh_installxfonts
dh_installgsettings
dh_bugfiles
dh_ucf
dh_lintian
dh_gconf
dh_icons
dh_perl
dh_usrlocal
dh_link
dh_compress
dh_fixperms
dh_installdeb
dh_md5sums
dh_gencontrol
dh_builddeb
以上的命令都是可以使用 override_dh_auto_$(strstr("dh_*", "*")):
action…………………………
以上的*是dh_后对应的名称;
当然还会用到强大的安装命令:
install
以上的dh_install*的命令其实是将/debian/deb包名/下的对应的系统中的目录路径的相同的路径名下的东东安装到系统对应的目录下,例如:有一个包名为:openssh-client的包,那么在debian目录下应该就存在一个这样的目录:debian/openssh-client/usr/share/man/pl/man*/, dh_installman是将debian/openssh-client/usr/share/man/pl/man*/目录下的man时的对应帮助文件安装到系统的/usr/share/man/pl/man*/目录下, 其它命令的安装路径请参看命令的帮助信息;
refer:
http://www.debian.org/doc/manuals/maint-guide/build.zh-cn.html
deb包的构建的命令为:dpkg-buildpackage这样会自动完成所有从源代码包构建二进制包的工作,包括以下几个步骤:0、清理源代码树(debian/rules clean)1、构建源代码包(dpkg-source -b)2、构建程序(debian/rules build)3、构建二进制包(fakeroot debian/rules binary)
Apache Flume
Debian
包
用于安装 Apache Flume 1.5.2 的
Debian
软件
包
。 适用于 Ubuntu 和
Debian
。
在此处下载最新的预
构建
版本: :
克隆存储库:
git clone https://github.com/balazsbotond/flume-
deb
-
package
.git
使用
dpkg
-
deb
构建
包
:
cd flume-
deb
-
package
dpkg
-
deb
--
build
flume_1.5.2-1
这将在当前目录中创建一个flume_1.5.2-1.
deb
文件。
dpkg
-i flume_1.5.2-1.
deb
apt-get install -f
使用文件/etc/flume/flume-conf.properties配置您的代理。 您可以使用默认设置(序列生成器源和记录器接收
-b 或 --
build
:指定要打
包
的源目录。
-c 或 --control:指定要
包
含在
包
中的控制文件。
-f 或 --fields:指定要
包
含在
包
中的字段。
例如,要打
包
名为 my
package
的源目录,并将打
包
后的文件命名为 my
package
.
deb
,...
dpkg
-
deb
-锅炉板
一个易于使用的样板
deb
uild项目,用于使用或其他服务
构建
debian
软件
包
。
我为什么需要它?
dpkg
--
build
dirname不够吗?
dpkg
--
build
dirname很好,但是
debian
打
包
策略提供了一个可靠的
构建
系统,可以轻松安装应用程序二进制文件,库,服务脚本,启动器,手册等。对于ubuntu launchpad或
open
suse
build
service等自动化
构建
系统,您需要提供源档案,而不是预
构建
二进制文件。 在这种情况下,此样板可能会派上用场。
我需要什么才能使其正常工作?
安装
build
-essentials ,它将自动安装make , gcc , g++ ,
dpkg
-dev等软件
包
。
我该如何运作?
下载资源库。
cd到project-1.0目录,然后运行
dpkg
-
build
package
-us -uc 。
dpkg
-
build
package
编译
deb
包
1. 将下载的源码tar
包
解压2. 在解压目录中执行如下命令,生成
debian
目录及相关文件3. 执行
dpkg
-
build
package
,生成
deb
包
如果遇到如下问题,可以使用:
dpkg
-
build
package
-b -uc -us
1. 将下载的源码tar
包
解压
例如:将a-0.5.0.tar.gz解压到a-0.5.0目录
2. 在解压目录中执行如下命令,生成
debian
目录及相关文件
dh_make -e a@b.com -f …/a-0.5.0.tar.
dpkg
-c test.
deb
#查看test.
deb
软件
包
中
包
含的文件结构
安装后查询命令:
dpkg
-I test查看已安装的test.
deb
软件
包
的
详细
信息,
包
括软件名称、版本等
dpkg
-L test #查看已安装test.
deb
软件
包
安装的所有文件
dpkg
-s test #查看test.
docker中使用
dpkg
-
build
package
报错: semop(1): encountered an
error
: Function not implemented原因是ubuntu 20.04源中qemu-user-static版本太低,
在https://www.ubuntuupdates.org/
package
_