Building and maintaining a contrib Zentyal module

From Zentyal Linux Small Business Server
Jump to: navigation, search

If you want to build one of the former Zentyal modules that have been moved to contrib, the first step would be to clone the Zentyal repository

git clone https://github.com/Zentyal/zentyal.git

You will notice there is a directory contrib directly under the main repo directory, where you have the source code of the modules that have been (or will be) moved away from official support.

Let's assume in this example that you want to build the ftp module for Zentyal Server 3.5

You will need to install the package zbuildtools in your host, adding the following line to /etc/apt/sources.list

deb http://archive.zentyal.org/zentyal 3.5 main extra

and then

# apt-get update
# apt-get install zbuildtools build-essential fakeroot

Move to the specific module that you want to build and run

contrib/ftp$ zentyal-package

FTP still depends on zentyal-users, you can check the enable dependencies in the contrib/ftp/schemas/ftp.yaml file. From Zentyal 3.5 on, all the users and LDAP services required for the other services are managed by Samba4, so we replace the enabledepends list to look like this

contrib/ftp/schemas$ cat ftp.yaml 
class: 'EBox::FTP'
    - samba

    - Options

If the module was built without any issues, you will find the package under debs-ppa

/zentyal/contrib/ftp/debs-ppa$ ls
Packages.gz  zentyal-ftp_3.5_all.deb        zentyal-ftp_3.5.dsc
Sources.gz   zentyal-ftp_3.5_amd64.changes  zentyal-ftp_3.5.tar.gz

You can now copy the resulting .deb file to your Zentyal machine

contrib/ftp/debs-ppa$ scp zentyal-ftp_3.5_all.deb administrator@

Now you can just install the .deb file in your Zentyal Server, it will probably have extra dependencies requiring additional software to be installed, you can just run sudo apt-get -f install to install those dependencies

root@zentyal:~# dpkg -i zentyal-ftp_3.5_all.deb 
Selecting previously unselected package zentyal-ftp.
(Reading database ... 122755 files and directories currently installed.)
Preparing to unpack zentyal-ftp_3.5_all.deb ...
Unpacking zentyal-ftp (3.5) ...
dpkg: dependency problems prevent configuration of zentyal-ftp:
 zentyal-ftp depends on vsftpd (>= 2.3.5-1ubuntu2ppa1); however:
  Package vsftpd is not installed.

dpkg: error processing package zentyal-ftp (--install):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
root@zentyal:~# apt-get -f install


Setting up zentyal-ftp (3.5) ...
Processing triggers for zentyal-core (3.5.2) ...
 * Restarting Zentyal module: haproxy                                    [ OK ] 
 * Restarting Zentyal module: webadmin                                   [ OK ] 
 * Restarting Zentyal module: logs                                       [ OK ] 
 * Restarting Zentyal module: events                                     [ OK ] 

You should be able to see and enable the FTP module from the Zentyal web interface now.

Creating a local repository

Another possibility is to gather all your custom .deb files in a local repository. This way you won't need to run apt-get -f install to fix dependencies and the extra Zentyal components will appear directly on the Zentyal modules list of the interface.

Let's assume that you have a directory containing you .deb files

root@zentyal:/var/www/zentyal-contrib# ls
zentyal-ftp_3.5_all.deb  zentyal-pptp_3.0.2_all.deb

This directory is reachable through a webserver, this way it's easier to provide the modules to several machines. Inside this directory, run

# apt-ftparchive packages .|gzip > Packages.gz

And you will see a new file Packages.gz containing the package list for this repository. Now you just need to add the following line in the /etc/apt/sources.list of the Zentyal host

deb http://localhost/zentyal-contrib ./

Replace localhost with the IP or FQDN if you are accessing remotely. Now you just need to apt-get update and the zentyal packages will show up in the interface.

Maintaining a module

We encourage anyone willing to maintain any of the contrib modules to create a github account, fork the Zentyal repository and start submitting pull requests.

If there are active contributors and interest in maintaining an specific module, we will be glad to provide separate Git repositories, package repositories or any other required development resource.

Need Help?

To know more about Zentyal development, check Zentyal's Development documentation

There are several mailing list and channels to contact other members of the community and Zentyal staff detailed here:


Personal tools


Zentyal Wiki

Zentyal Doc