GitHub user nickwallen opened a pull request: https://github.com/apache/metron/pull/868
METRON-1351 Create Installable Packages for Ubuntu Trusty ### Changes This PR allows us to create DEB packages to simplify the installation of Metron on a DEB-based platform like Ubuntu. I tried to follow as closely as possible the current mechanism that we use for building RPM packages. I added an additional profile `build-debs` that allows us to build the DEBs. ``` mvn clean package -Pbuild-debs ``` There is also a fairly complete README.md that explains how the process works. ### Testing 1. Build the DEBs. ``` make clean package -DskipTests cd metron-deployment mvn clean package -Pbuild-debs -Pbuild-rpms ``` 1. Take a look at the DEBs that were built. ``` $ find ./ -name "*.deb" .//packaging/docker/deb-docker/target/metron-management_0.4.2.deb .//packaging/docker/deb-docker/target/metron-alerts_0.4.2.deb .//packaging/docker/deb-docker/target/metron-rest_0.4.2.deb .//packaging/docker/deb-docker/target/metron-maas-service_0.4.2.deb .//packaging/docker/deb-docker/target/metron-common_0.4.2.deb .//packaging/docker/deb-docker/target/metron-enrichment_0.4.2.deb .//packaging/docker/deb-docker/target/metron-data-management_0.4.2.deb .//packaging/docker/deb-docker/target/metron-parsers_0.4.2.deb .//packaging/docker/deb-docker/target/metron-profiler_0.4.2.deb .//packaging/docker/deb-docker/target/metron-config_0.4.2.deb .//packaging/docker/deb-docker/target/metron-elasticsearch_0.4.2.deb .//packaging/docker/deb-docker/target/metron-solr_0.4.2.deb .//packaging/docker/deb-docker/target/metron-indexing_0.4.2.deb .//packaging/docker/deb-docker/target/metron-pcap-backend_0.4.2.deb ``` 1. Install the DEBs. ``` cd packaging/docker/deb-docker docker build -t deb-docker . docker run -it -v `pwd`:/root deb-docker:latest /bin/bash dpkg -i target/*.deb ``` 1. Capture the contents of what is installed by all of the DEBs. Capture the output of running `tree` so that you can compare it to what the RPMs install. I have attached the output of what I get when doing this to this PR; [ubuntu.txt](https://github.com/apache/metron/files/1560505/ubuntu.txt). ``` apt-get install tree tree /usr/metron/0.4.2 ``` ``` root@4307d666c904:~# tree /usr/metron/0.4.2/ /usr/metron/0.4.2/ |-- bin | |-- Whois_CSV_to_JSON.py | |-- flatfile_loader.sh | |-- geo_enrichment_load.sh | |-- latency_summarizer.sh | |-- maas_deploy.sh | |-- maas_service.sh | |-- metron-alerts-ui | |-- metron-management-ui | |-- metron-rest.sh | |-- pcap_inspector.sh | |-- pcap_query.sh | |-- pcap_zeppelin_run.sh | |-- prune_elasticsearch_indices.sh | |-- prune_hdfs_files.sh | |-- start_elasticsearch_topology.sh | |-- start_enrichment_topology.sh | |-- start_parser_topology.sh | |-- start_pcap_topology.sh | |-- start_profiler_topology.sh | |-- start_solr_topology.sh | |-- stellar | |-- threatintel_bulk_prune.sh | |-- threatintel_taxii_load.sh | `-- zk_load_configs.sh |-- config | |-- elasticsearch.properties | |-- enrichment.properties ... 221 directories, 1962 files ``` 1. Take a look at the RPMs that were built previously. ``` cd ../rpm-docker $ find ./ -name "*.rpm" .//RPMS/noarch/metron-profiler-0.4.2-201712141550.noarch.rpm .//RPMS/noarch/metron-maas-service-0.4.2-201712141550.noarch.rpm .//RPMS/noarch/metron-rest-0.4.2-201712141550.noarch.rpm .//RPMS/noarch/metron-config-0.4.2-201712141550.noarch.rpm .//RPMS/noarch/metron-enrichment-0.4.2-201712141550.noarch.rpm .//RPMS/noarch/metron-pcap-0.4.2-201712141550.noarch.rpm .//RPMS/noarch/metron-elasticsearch-0.4.2-201712141550.noarch.rpm .//RPMS/noarch/metron-indexing-0.4.2-201712141550.noarch.rpm .//RPMS/noarch/metron-data-management-0.4.2-201712141550.noarch.rpm .//RPMS/noarch/metron-common-0.4.2-201712141550.noarch.rpm .//RPMS/noarch/metron-metron-management-0.4.2-201712141550.noarch.rpm .//RPMS/noarch/metron-alerts-0.4.2-201712141550.noarch.rpm .//RPMS/noarch/metron-solr-0.4.2-201712141550.noarch.rpm .//RPMS/noarch/metron-parsers-0.4.2-201712141550.noarch.rpm .//SRPMS/metron-0.4.2-201712141550.src.rpm ``` 1. Install the RPMs. ``` docker build -t rpm-docker . docker run -it -v `pwd`:/root rpm-docker:latest /bin/bash rpm -ivh RPMS/noarch/metron-*.rpm ``` 1. Capture the contents of what is installed by all of the RPMs. Capture the output of running `tree`. I have attached the output of what I get when doing this. ``` yum install tree -y tree /usr/metron/0.4.2 ``` I have attached the output of what I get when doing this to this PR; [centos.txt](https://github.com/apache/metron/files/1560504/centos.txt)). 1. Now I compare the two. In my testing, I have found that there is one extra directory on the Ubuntu/DEB side of the house; `/usr/metron/0.4.2/web/expressjs/etc`. This is just an empty directory that I believe gets stripped out when the RPMs are packaged. ``` $ diff debs.txt rpms.txt 1c1 < /usr/metron/0.4.2/ --- > /usr/metron/0.4.2 140d139 < | |-- etc 2186c2185 < 221 directories, 1962 files --- > 220 directories, 1962 files ``` You can merge this pull request into a Git repository by running: $ git pull https://github.com/nickwallen/metron METRON-1351 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/metron/pull/868.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #868 ---- commit 778cff2050769f89556182ad2eb2ed50bc9146c8 Author: Nick Allen <n...@nickallen.org> Date: 2017-12-13T23:27:59Z METRON-1351 Create Installable Packages for Ubuntu Trusty ---- ---