Non sono esattamente sicuro di quale sia la storia alla base di questo, ma Debian e Ubuntu racchiudono attualmente alcune delle utility di PostgreSQL con qualcosa chiamato pg_wrapper
. Questa utility utilizza LD_PRELOAD
per indicare al linker il linker contro libreadline
. Quindi ci sono due librerie che sono simili:
-
libreadline
una versione GPL -
libedit
una versione con licenza BSD
Sembra che libedit
utilizzi ABI che libreadline
fa e essenzialmente reimplementa la funzionalità di libreadline
con una licenza diversa più permissiva. Questo mi sembra ammissibile, ma supponiamo che lo sia.
Detto questo, è il mio sospetto che l'utilizzo di LD_PRELOAD
per aggirare la licenza su indifendibile. Debian ricollega il runtime creato contro libedit
con libreadline
.
Le Domande frequenti sulla GPL dicono ,
Linking a GPL covered work statically or dynamically with other modules is making a combined work based on the GPL covered work. Thus, the terms and conditions of the GNU General Public License cover the whole combination. See also What legal issues come up if I use GPL-incompatible libraries with GPL software?
È anche molto chiaro l'obiettivo di Debian è quello di eludere la licenza in questo, riconoscendo inoltre che libedit
è "rotto",
pg_wrapper
: If libreadline is installed, LD_PRELOAD this for "psql", to avoid using the rather brokenlibedit
. We need to build thepostgresql-X.Y
packages againstlibedit
for license reasons (#603599), but aslibreadline
has a drop-in compatible ABI, this works around the licensing restrictions. Thanks to Andreas Barth for working this out! Add a recommends to libreadline6. (Closes: #608442, #607907, #607109, #611918)
C'è una precedenza per questo? È un programma non GPL che dipende da un ABI implementato da due librerie distinte una delle quali è libera da GPL per utilizzare la libreria GPL perché non è un lavoro derivato della libreria GPL, ma solo un ABI che è condiviso in comune con due librerie?
E più semplicemente, puoi usare il codice GPL e non essere te stesso un lavoro derivato?
Puoi leggere ulteriori informazioni su LD_PRELOAD
qui .