1

If I download Linux that comes with a pre-installed program in a binary form licensed under, let's say, BSD 2-clause, how does it comply with the following:

Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

Where can I find licenses of installed binaries? Is there a common practice for this.

I'm asking this because I plan to distribute my program that uses some of BSD 2-clause libraries in a binary form via docker images. Should I compile LICENSES.md file with licenses of all libs my program uses and put it to, I don't know, the root directory of docker image?

1 Answer 1

5

Generally, it's handled by the distro's package management utility. For example, if I examine the contents of postgresql-libs on my desktop (Fedora 28), I find that:

[me@risby personal]$ rpm -ql postgresql-libs
[...]
/usr/lib64/libpq.so.5
/usr/lib64/libpq.so.5.10
/usr/lib64/pgsql
/usr/share/doc/postgresql-libs
/usr/share/doc/postgresql-libs/COPYRIGHT
[...]

and sure enough, therein it lies:

[me@risby personal]$ head -11 /usr/share/doc/postgresql-libs/COPYRIGHT
PostgreSQL Database Management System
(formerly known as Postgres, then as Postgres95)

Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group

Portions Copyright (c) 1994, The Regents of the University of California

Permission to use, copy, modify, and distribute this software and its
documentation for any purpose, without fee, and without a written agreement
is hereby granted, provided that the above copyright notice and this
paragraph and the following two paragraphs appear in all copies.

This is equally true for packages that don't come from RedHat, but from a different repo; compat-ffmpeg28 from rpmfusion-free includes the following files:

/usr/share/doc/compat-ffmpeg28/COPYING.GPLv2
/usr/share/doc/compat-ffmpeg28/COPYING.GPLv3
/usr/share/doc/compat-ffmpeg28/COPYING.LGPLv2.1
/usr/share/doc/compat-ffmpeg28/COPYING.LGPLv3

So you can see that although there's no standard name for the file, there's a standard approach to including it.

You're not planning on shipping binaries, you're planning on shipping an entire OS image, which is a slightly different problem. Personally, I'd encourage you not to do that, because more people will use your software if (a) it's easy to see exactly what they're installing, and (b) it interacts properly with everything else on their systems. But if you must, I'm sure you can find somewhere inside that image to package some text.

3
  • 2
    And on Debian-based distros every package installs a /usr/share/doc/<package-name>/copyright file, usually in a machine-readable format.
    – amon
    Nov 14, 2018 at 12:18
  • 1
    @amon thanks! I'd certainly not meant to imply that only RedHat-like systems did this thing; more that all systems with package management tended to do this thing. But thank you again for helping make that explicit.
    – MadHatter
    Nov 16, 2018 at 6:58
  • Sorry, I did not mean to imply anything either. It's just that Debian is really anal about proper licensing and has standardized this file, so you don't have to guess the file name. Of course, as OP is asking about Docker they are most likely using Alpine, but I have no idea about that.
    – amon
    Nov 16, 2018 at 7:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.