Skip to content

Create native package building for deb/rpm distributions #38

@parfenovvs

Description

@parfenovvs

Summary

Add native package building capabilities to create .deb and .rpm packages for easier distribution and installation across Linux distributions.

Current State

  • Manual installation via install.sh script
  • Binary releases requiring manual PATH setup
  • No integration with package managers

Proposed Solution

Package Formats

  • DEB packages (Ubuntu, Debian, derivatives)
  • RPM packages (Fedora, CentOS, RHEL, openSUSE)
  • Integration with existing Makefile build system

Package Features

  • Automatic dependency installation (wireguard-tools)
  • Proper file permissions and ownership
  • Service file installation for auto-connect
  • Shell completion scripts installation
  • Man page installation
  • Automatic PATH configuration

Build Integration

# Add to Makefile
make package-deb
make package-rpm
make package-all

# With environment specification  
make package-deb-staging
make package-rpm-production

Package Metadata

# For DEB packages
Package: mbvpn
Version: 0.0.1
Architecture: amd64
Depends: wireguard-tools
Maintainer: Malwarebytes <support@malwarebytes.com>
Description: Malwarebytes VPN client for Linux
# For RPM packages  
Name: mbvpn
Version: 0.0.1
Release: 1%{?dist}
Summary: Malwarebytes VPN client for Linux
Requires: wireguard-tools

Implementation Tools

Directory Structure

packaging/
├── nfpm.yaml          # nFPM configuration
├── mbvpn.service      # Systemd service file
├── mbvpn.1            # Man page
├── postinstall.sh     # Post-installation script
└── preremove.sh       # Pre-removal script

Installation Experience

# Ubuntu/Debian
sudo dpkg -i mbvpn_0.0.1_amd64.deb
sudo apt install -f  # Fix dependencies

# Fedora/CentOS  
sudo rpm -i mbvpn-0.0.1-1.x86_64.rpm
sudo dnf install mbvpn  # From repository

Repository Integration

  • Set up package repositories for automatic updates
  • GPG signing for package integrity
  • Integration with GitHub releases

Priority

🚀 Priority 2 (2-3 weeks)

Labels

  • enhancement
  • priority-2
  • distribution
  • packaging
  • user-experience

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions