kcat icon indicating copy to clipboard operation
kcat copied to clipboard

Native binaries bundles as deb/rpm/exe

Open whatsupbros opened this issue 5 years ago • 0 comments

kafkacat is a great utility!

But it is not as popular as it could be because of a simple fact - it is damn hard to get proper binaries for your platform. kafkacat is a tool, not a library, so why is it distributed only as source code here on GitHub?

I am not an expert in this, but I already spent days trying to get proper builds for Ubuntu Linux and for Windows.

The issues, I already had to face:

  • kafkacat, installable from Ubuntu official repositories, is only version 1.5.0-1.1 (current 1.6.0-1), and it lacks support for Avro and Schema Registry
  • It is not easy to build kafkacat on Ubuntu yourself. When you use configure script, it lacks a lot of requirements. When you go for bootstrap.sh sctipt, it is not easy either - it took me several hours to get it, that I have to install these packages to be able to build the project: sudo apt install pkg-config build-essential cmake libtool libssl-dev zlib1g-dev libzstd-dev libsasl2-dev libjansson-dev libcurl4-openssl-dev. Which was not mentioned in the "how-to build" section.
  • When you finally build the application with bootstrap.sh, the dependancies are linked statically, which is probably not the best and definitely not a reusable way. Also, your kafkacat build is not integrated with the system, you have to add its location to PATH manually and maintain it there.
  • It is even worse when it comes to Windows - first, you have to download NuGet (a package manager tool for .NET), with which you hardly is familiar. Then, you will need a compiler for the win32 build. And this has to be Visual C++ Build Tools 14 (for Visual Studio 2015) exactly, because another version (i.e. the current one - for Visual Studio 2019) of the build tools fails in the middle of the build process.
  • When you finally build the application for Windows, you realize it's only version 1.4.0 (current 1.6.0-1). After some time, I found that this must be adjusted manually in win32_config.h. After you do so, you get the version 1.6.0, but it still lacks support for Avro and Schema Registry.

What would be really great, if we were able to download the most current binary bundles with proper support of all features (JSON, Avro, Schema Registry at the moment I am writing this here) directly from GitHub:

  • As deb package for Debian-based systems such as Debian Linux, Ubuntu Linux, etc.
  • As rpm package for RPM-based systems, such as RHEL, CentOS, Oracle Linux, SUSE, Fedora, etc.
  • As zipped exe or Windows Installer for Windows x64

Because it is much easier for the developers to build their projects for the end-users, than for each user to do this themselves every time.

whatsupbros avatar Mar 09 '21 10:03 whatsupbros