GNU/Linux >> Linux Esercitazione >  >> Linux

Perché diverse distribuzioni Linux devono applicare patch ai pacchetti?

Ci sono voluti alcuni tentativi, ma penso di capire cosa stai chiedendo ora.

Ci sono diversi possibili motivi per cui una distribuzione corregga un determinato software prima di impacchettarlo. Proverò a fornire un elenco non esclusivo; Sono sicuro che ci sono altri possibili motivi.

Ai fini di questa discussione, "upstream" si riferisce al codice sorgente originale degli sviluppatori ufficiali del software

  1. Patch che l'upstream non ha (o non ha ancora) incorporato nel loro ramo principale per qualsiasi motivo o motivi. Di solito perché il manutentore del pacchetto della distribuzione per quel pacchetto ritiene che tali patch siano utili, o perché sono necessarie per mantenere la continuità nella distribuzione (supponiamo che tu abbia un server web e dopo un aggiornamento di routine a php diverse funzioni su cui hai fatto affidamento non funzionano più o non è in grado di leggere un file di configurazione dal vecchio stile)

  2. Le distribuzioni tendono ad apprezzare i modelli standardizzati per la loro gerarchia di filesystem in /etc/; ogni sviluppatore di software può o meno avere le proprie idee su ciò che costituisce standard adeguati. Pertanto, una delle prime cose che un manutentore di un pacchetto di distribuzione tende a fare è correggere gli script di build per configurare e aspettarsi detti file di configurazione in un modello gerarchico che corrisponda al resto della distribuzione.

  3. Continuando sull'argomento della configurazione, una delle prime "patch" tende ad essere un insieme di file di configurazione predefiniti che funzioneranno con il resto della distribuzione "out of the box" per così dire, consentendo all'utente finale di iniziare immediatamente dopo l'installazione anziché dover risolvere manualmente una configurazione funzionante.

Questo è appena fuori dalla parte superiore della mia testa. Potrebbero benissimo essercene altri, ma spero che questo ti dia un'idea.


Dall'alto della mia testa, oltre alla risposta di @Shadur:

  • Alcune distribuzioni scoraggiano l'uso di librerie di incorporamento o file forniti da un altro pacchetto. Ad esempio, molti software contengono JQuery incorporato, ma Debian ha un pacchetto libjs-jquery che lo fornisce.
  • Spesso l'upstream mescola patch di sicurezza e modifiche incompatibili con le versioni precedenti, ad es. dipende dalle librerie più recenti. Per evitare modifiche estese all'intera distribuzione solo per ottenere un controllo del certificato diciamo più corretto, il manutentore del pacchetto può scegliere di scegliere solo le patch di sicurezza.
  • Il software a monte potrebbe entrare in conflitto con altri software, ad esempio potrebbero fornire un file con lo stesso percorso, ma contenuto diverso. Per risolvere questo conflitto, potrebbe essere necessaria una patch per cercare il file altrove.
  • L'upstream spesso si accontenta delle istruzioni per aggiungere manualmente qualcosa a qualche altro file di configurazione del software, che è soggetto a errori durante l'installazione e la disinstallazione dei pacchetti, quindi la distribuzione potrebbe preferire utilizzare i file di frammento in una directory *.d.
  • Alcune parti dell'upstream potrebbero essere incompatibili con la licenza della distribuzione, quindi il manutentore del pacchetto potrebbe decidere di correggere le parti problematiche.
  • L'upstream utilizza percorsi con l'ipotesi di un altro software specifico (ad es. Apache), ma il manutentore vorrebbe che supportasse un server web generico.
  • A volte, lo sviluppatore a monte non comunica più e il software va in bitrot, quindi è necessaria una patch per farlo funzionare.

Ci sono diversi motivi:

  1. Non esiste un software perfetto
  2. Non esiste un software di pacchettizzazione universale su Linux:

    • appropriato
    • gnam
    • pacman
    • ...
  3. A causa del fork

  4. A causa delle diverse interpretazioni della Bibbia FHS
  5. A causa dell'ego

Linux
  1. Quando è utile setsid() o perché abbiamo bisogno di raggruppare i processi in Linux?

  2. Perché abbiamo bisogno di un bootloader in un dispositivo integrato?

  3. Perché abbiamo bisogno del file .so.1 in Linux?

  4. Quale distribuzione Linux ha i pacchetti più aggiornati?

  5. Perché Bash è ovunque (nella maggior parte se non in tutte le distribuzioni Linux)?

Perché non installare pacchetti software da Internet

Come installare VirtualBox in diverse distribuzioni Linux

Introduzione ai comandi di Pacman nelle distribuzioni Linux basate su Arch

6 Distribuzioni Linux per uso didattico

BCRYPT - Perché le distribuzioni Linux non lo usano di default?

Perché le distribuzioni Linux non montano di default tmpfs con inode infiniti?