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:
-
libreadlineuna versione GPL -
libedituna 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.Ypackages againstlibeditfor license reasons (#603599), but aslibreadlinehas 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 .