天天看點

将zookeeper源碼打包成deb

一.進行基礎操作,安裝ant以及嘗試打成tar包

詳細文章參考zookeeper源碼打包tar

二:進行deb打包修改

  1. 在zk源碼中添加如下目錄
    将zookeeper源碼打包成deb
  2. 目錄中檔案内容

    dist\src\main\package\deb\zookeeper\control\control

Package: zookeeper3_4_6_3_0_1_0_187
Version: 3.4.6.3.0.1.0-187
Section: misc
Priority: low
Architecture: all
Description:  This package starts the zookeeper server on startup
Maintainer: root <[email protected]>
Depends: hadoop_3_0_1_0_187-client, hdp-select >= 3.0.1.0-187, redhat-lsb,config(zookeeper3_4_6_3_0_1_0_187) = 3.4.6.3.0.1.0
           

dist\src\main\package\deb\zookeeper\control\postinst

#!/bin/bash
# alien added permissions fixup code
chown 'zookeeper:zookeeper' '/var/lib/zookeeper'

/usr/bin/hdp-select --rpm-mode set zookeeper-client 3.0.1.0-187
/usr/bin/hdp-select --rpm-mode set zookeeper-server 3.0.1.0-187
if [ !  -e "/etc/zookeeper/conf" ]; then
    rm -f /etc/zookeeper/conf
    mkdir -p /etc/zookeeper/conf
    cp -rp /usr/hdp/3.0.1.0-187/etc/zookeeper/conf.dist/* /etc/zookeeper/conf
fi
           

dist\src\main\package\deb\zookeeper\control\preinst

#!/bin/bash
getent group zookeeper >/dev/null || groupadd -r zookeeper
getent passwd zookeeper > /dev/null || useradd -c "ZooKeeper" -s /bin/bash -g zookeeper -r -d /var/run/zookeeper zookeeper 2> /dev/null || :

if [[ ! -e "/var/run/zookeeper" ]]; then
        /usr/bin/install -d -o zookeeper -g zookeeper -m 0755 /var/run/zookeeper
fi

if [[ ! -e "/var/log/zookeeper" ]]; then
        /usr/bin/install -d -o zookeeper -g zookeeper -m 0755 /var/log/zookeeper
fi
           

dist\src\main\package\deb\zookeeper-server\control\control

Package: zookeeper3_4_6_3_0_1_0_187-server
Version:3.4.6.3.0.1.0-187
Section: misc
Priority: low
Architecture: all
Description:  This package starts the zookeeper server on startup
Maintainer: root <[email protected]>
Depends: zookeeper3_4_6_3_0_1_0_187 = 3.4.6.3.0.1.0-187
           

pom.xml

<plugin>
                <groupId>org.vafer</groupId>
                <artifactId>jdeb</artifactId>
                <version>1.8</version>
                <executions>
                    <execution>
                        <id>zookeeper-deb</id>
                        <phase>package</phase>
                        <goals>
                            <goal>jdeb</goal>
                        </goals>
                        <configuration>
                            <controlDir>${basedir}/src/main/package/deb/zookeeper/control</controlDir>
                            <deb>${basedir}/target/zookeeper_${hdp-version-dash}-${zookeeper-version}-${zookeeper-release}_all.deb</deb>
                            <dataSet>
                                <data>
                                    <src>${project.basedir}/../conf</src>
                                    <type>file</type>
                                    <mapper>
                                        <type>perm</type>
                                        <prefix>/usr/hdp/${hdp-version}/etc/zookeeper/conf.dist</prefix>
                                        <user>root</user>
                                        <group>root</group>
                                        <filemode>644</filemode>
                                    </mapper>
                                    <!-- <sources>
                                         <source>
                                             <location>${project.basedir}/../conf</location>
                                         </source>
                                         <source>
                                             <location>src/main/package/rpm</location>
                                             <includes>
                                                 <include>zookeeper-env.cmd</include>
                                                 <include>zookeeper-env.sh</include>
                                             </includes>
                                         </source>
                                     </sources>-->
                                </data>
                                <data>
                                    <type>link</type>
                                    <symlink>true</symlink>
                                    <linkName>/usr/hdp/${hdp-version}/zookeeper/conf</linkName>
                                    <linkTarget>/etc/zookeeper/conf</linkTarget>
                                </data>
                                <data>
                                    <src>${project.basedir}/../bin</src>
                                    <type>directory</type>
                                    <mapper>
                                        <type>perm</type>
                                        <prefix>/usr/hdp/${hdp-version}/zookeeper/bin</prefix>
                                        <user>root</user>
                                        <group>root</group>
                                        <filemode>755</filemode>
                                    </mapper>
                                </data>
                                <data>
                                    <src>${project.basedir}/../docs</src>
                                    <type>directory</type>
                                    <mapper>
                                        <type>perm</type>
                                        <prefix>/usr/hdp/${hdp-version}/zookeeper/doc</prefix>
                                        <user>root</user>
                                        <group>root</group>
                                        <filemode>644</filemode>
                                    </mapper>
                                </data>
                                <data>
                                    <src>src/main/package/rpm/zookeeper</src>
                                    <type>file</type>
                                    <mapper>
                                        <type>perm</type>
                                        <prefix>/usr/hdp/${hdp-version}/zookeeper/etc/rc.d/init.d</prefix>
                                        <user>root</user>
                                        <group>root</group>
                                        <filemode>755</filemode>
                                    </mapper>
                                </data>
                                <data>
                                    <src>${project.basedir}/../build/lib</src>
                                    <type>directory</type>
                                    <mapper>
                                        <type>perm</type>
                                        <prefix>/usr/hdp/${hdp-version}/zookeeper/lib</prefix>
                                        <user>root</user>
                                        <group>root</group>
                                        <filemode>644</filemode>
                                    </mapper>
                                </data>
                                <data>
                                    <src>${project.basedir}/../build/zookeeper-3.4.6.jar</src>
                                    <type>file</type>
                                    <mapper>
                                        <type>perm</type>
                                        <prefix>/usr/hdp/${hdp-version}/zookeeper</prefix>
                                        <user>root</user>
                                        <group>root</group>
                                        <filemode>644</filemode>
                                    </mapper>
                                </data>
                            </dataSet>
                        </configuration>
                    </execution>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>jdeb</goal>
                        </goals>
                        <id>zookeeper-server-deb</id>
                        <configuration>
                            <deb>${basedir}/target/zookeeper_${hdp-version-dash}-server-${zookeeper-version}-${zookeeper-release}_all.deb</deb>
                            <controlDir>${basedir}/src/main/package/deb/zookeeper-server/control</controlDir>
                            <dataSet>
                                <data>
                                    <src>src/main/package/rpm/zookeeper-server</src>
                                    <type>file</type>
                                    <mapper>
                                        <type>perm</type>
                                        <prefix>/usr/hdp/${hdp-version}/zookeeper/etc/rc.d/init.d</prefix>
                                        <user>root</user>
                                        <group>root</group>
                                        <filemode>755</filemode>
                                    </mapper>
                                </data>
                            </dataSet>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
           

三.編譯

  1. 将代碼進行打包,放入ant環境的機器上
  2. 編譯:
[[email protected] hdp-zookeeper-release]# cd dist/
[[email protected] dist]# mvn clean package
           
将zookeeper源碼打包成deb
  1. 檢視
    将zookeeper源碼打包成deb
  2. 解壓deb包
[[email protected] target]# dpkg -X zookeeper_3_0_1_0_187-3.4.6.3.0.1.0-187_all.deb ./

           
  1. 解壓rpm包
[[email protected] target]# cd rpm/zookeeper_3_0_1_0_187/RPMS/noarch/
[[email protected] noarch]# rpm2cpio zookeeper_3_0_1_0_187-3.4.6.3.0.1.0-187.noarch.rpm | cpio -div
           
将zookeeper源碼打包成deb
  1. 打包完成