Qual è la differenza tra dipendenze e pre-dipendenti?


Risposte:


20

Tratto da questo link: https://www.debian.org/doc/debian-policy/#document-ch-relationships

Esistono 5 tipi di dipendenze:

Il significato dei cinque campi di dipendenza è il seguente:

Dipende

  • Questo dichiara una dipendenza assoluta. Un pacchetto non verrà configurato a meno che tutti i pacchetti elencati nel suo campo Depends non siano stati configurati correttamente. Il campo Dipende deve essere utilizzato se il pacchetto dipendente è richiesto affinché il pacchetto dipendente fornisca una quantità significativa di funzionalità. Il campo Dipende dovrebbe essere usato anche se gli script postinst o prerm richiedono che il pacchetto dipendente sia decompresso o configurato per essere eseguito. Nel caso di configurazione postinst, i pacchetti dipendenti verranno decompressi e configurati per primi.

  • Nel caso di azioni preliminari o di altre azioni postinst, le dipendenze dei pacchetti saranno normalmente almeno spacchettate, ma potrebbero essere solo "installate a metà" se un precedente aggiornamento della dipendenza falliva. Infine, il campo Dipende dovrebbe essere usato se il pacchetto dipendente è necessario dallo script postrm per ripulire completamente dopo la rimozione del pacchetto. Non esiste alcuna garanzia che le dipendenze dei pacchetti saranno disponibili quando viene eseguito postrm, ma è più probabile che il pacchetto dipendente sia disponibile se il pacchetto dichiara una dipendenza (in particolare nel caso di rimozione di postrm). Lo script postrm deve saltare con garbo le azioni che richiedono una dipendenza se tale dipendenza non è disponibile.

Raccomanda

  • Questo dichiara una dipendenza forte, ma non assoluta. Il campo Raccomandazioni dovrebbe elencare i pacchetti che si troverebbero insieme a questo in tutte le installazioni tranne quelle insolite.

suggerisce

  • Questo è usato per dichiarare che un pacchetto può essere più utile con uno o più altri. L'uso di questo campo indica al sistema di packaging e all'utente che i pacchetti elencati sono correlati a questo e possono forse migliorarne l'utilità, ma l'installazione di questo senza di essi è perfettamente ragionevole.

Migliora

  • Questo campo è simile a Suggerimenti ma funziona nella direzione opposta. Viene utilizzato per dichiarare che un pacchetto può migliorare la funzionalità di un altro pacchetto.

Pre-Depends

  • Questo campo è come Dipende, tranne per il fatto che forza anche dpkg a completare l'installazione dei pacchetti nominati prima ancora di iniziare l'installazione del pacchetto che dichiara la pre-dipendenza , Funziona così, quando un pacchetto che dichiara una pre-dipendenza sta per essere decompresso la pre-dipendenza può essere soddisfatta se il pacchetto dipendente è completamente configurato, o anche se i pacchetti dipendenti sono solo decompressi o nello stato "Mezzo configurato", a condizione che siano stati configurati correttamente ad un certo punto nel passato (e non rimosso o parzialmente rimosso da allora).

  • In questo caso, entrambe le versioni precedentemente configurate e attualmente spacchettate o "Half-Configured" devono soddisfare qualsiasi clausola di versione nel campo Pre-Depends. Quando il pacchetto che dichiara una pre-dipendenza sta per essere configurato, la pre-dipendenza verrà trattata come una normale dipendenza. Sarà considerato soddisfatto solo se il pacchetto dipendente è stato configurato correttamente. Tuttavia, diversamente da Depends, Pre-Depends non consente di interrompere le dipendenze circolari. Se viene rilevata una dipendenza circolare durante il tentativo di onorare Pre-Dipendenze, l'installazione verrà interrotta.

  • Le pre-dipendenze sono necessarie anche se lo script preinst dipende dal pacchetto denominato. È meglio evitare questa situazione, se possibile. Pre-Depends dovrebbe essere usato con parsimonia, preferibilmente solo dai pacchetti il ​​cui aggiornamento o installazione prematura ostacolerebbe la capacità del sistema di continuare con qualsiasi aggiornamento che potrebbe essere in corso.

Versione più piccola:

  • Sia dipende che pre-dipendemenzionare le dipendenze di cui un pacchetto ha bisogno prima dell'installazione, ma pre-depend impone l'installazione e la configurazione dei pacchetti di dipendenze prima ancora di iniziare con il pacchetto che necessita delle dipendenze. dpkg non disimballerà nemmeno il pacchetto principale fino a quando non saranno stati trattati tutti i pacchetti pre-dipendenti. Con dipende, l'ordine dei pacchetti di dipendenza e quello principale non è importante. Con pre-depend prende in considerazione questo e anche la verifica se i pacchetti pre-dipendenti sono configurati e installati o meno. Senza questo, il pacchetto principale non sarà nemmeno decompresso, configurato o installato. È necessario disporre delle dipendenze installate prima di iniziare il processo di utilizzo del pacchetto principale. In caso contrario, devono essere scaricati / configurati / installati prima di procedere.

2
Si noti che esistono anche anti-dipendenze come conflitti e interruzioni. E costruisci dipendenze come Build-Depends.
Alexis Wilke,

3

Il termine "dipendenza" può essere usato in senso lato per comprendere le relazioni "Dipende" e "Pre-Dipende" (e talvolta anche altre relazioni più deboli), oppure può essere usato in senso stretto come sinonimo di "Dipende".

La differenza tra le relazioni del pacchetto "Depends" e "Pre-Depends" è che se X dipende da Y, allora Y deve essere completamente configurato prima che X venga configurato. (La configurazione è la fase di installazione in cui un pacchetto, una volta decompresso i suoi file nelle posizioni appropriate - ovvero, una volta "installato" - ha fatto qualsiasi altra modifica necessaria in modo che sia possibile usare effettivamente il software che fornisce. Ad esempio , la configurazione di un server HTTP potrebbe comportare la garanzia che ci sia un wwwutente con le capacità adeguate e una /var/wwwdirectory con le autorizzazioni appropriate. Al contrario, se X dipende da Y allora Y deve essere installato e (di solito) completamente configurato prima che X sia pari installato .

Vedere la Sezione 7.2 del Manuale delle politiche di Debian per maggiori dettagli. Cito qui le due sezioni più rilevanti, ma ci sono altre informazioni in quella sezione (e nel capitolo 7 più in generale) che aiutano a chiarire come funzionano le dipendenze.


Depends

Questo dichiara una dipendenza assoluta. Un pacchetto non verrà configurato a meno che tutti i pacchetti elencati nel suo Dependscampo non siano stati configurati correttamente (a meno che non vi sia una dipendenza circolare come descritto sopra).

Il Dependscampo deve essere utilizzato se il pacchetto dipendente è richiesto affinché il pacchetto dipendente fornisca una quantità significativa di funzionalità.

Il Dependscampo deve essere utilizzato anche se gli script postinsto prermrichiedono che il pacchetto dipendente sia decompresso o configurato per essere eseguito. Nel caso di configurazione postinst, i pacchetti dipendenti verranno decompressi e configurati per primi. (Se entrambi i pacchetti sono coinvolti in un ciclo di dipendenze, questo potrebbe non funzionare come previsto; vedere la spiegazione alcuni paragrafi indietro.) Nel caso di prermo altre postinstazioni, le dipendenze dei pacchetti saranno normalmente almeno spacchettate, ma potrebbero essere solo "Installato a metà" se un precedente aggiornamento della dipendenza non è riuscito.

Infine, il Dependscampo deve essere utilizzato se lo postrmscript dipende dal pacchetto dipendente per ripulire completamente dopo la rimozione del pacchetto. Non è garantito che le dipendenze dei pacchetti siano disponibili quando postrmviene eseguito, ma è più probabile che il pacchetto dipendente sia disponibile se il pacchetto dichiara una dipendenza (in particolare nel caso di postrm remove). Lo postrmscript deve saltare con garbo le azioni che richiedono una dipendenza se tale dipendenza non è disponibile.


Pre-Depends

Questo campo è simile Depends, tranne per il fatto che impone anche dpkgdi completare l'installazione dei pacchetti denominati prima ancora di iniziare l'installazione del pacchetto che dichiara la pre-dipendenza, come segue:

Quando un pacchetto che dichiara una pre-dipendenza sta per essere decompresso, la pre-dipendenza può essere soddisfatta se il pacchetto dipendente è completamente configurato, o anche se i pacchetti dipendenti sono solo decompressi o nella "metà -Configurato "stato, a condizione che siano stati configurati correttamente ad un certo punto in passato (e non rimossi o parzialmente rimossi da allora). In questo caso, entrambe le versioni precedentemente configurate e attualmente spacchettate o "Half-Configured" devono soddisfare qualsiasi clausola di versione nel Pre-Dependscampo.

Quando il pacchetto che dichiara una pre-dipendenza sta per essere configurato , la pre-dipendenza verrà considerata come normale Depends. Sarà considerato soddisfatto solo se il pacchetto dipendente è stato configurato correttamente. Tuttavia, a differenza di Depends, Pre-Dependsnon consente di interrompere le dipendenze circolari. Se si incontra una dipendenza circolare durante il tentativo di onorare Pre-Depends, l'installazione verrà interrotta.

Pre-Dependssono richiesti anche se lo preinstscript dipende dal pacchetto denominato. È meglio evitare questa situazione, se possibile.

Pre-Depends dovrebbe essere usato con parsimonia, preferibilmente solo dai pacchetti il ​​cui aggiornamento o installazione prematura ostacolerebbe la capacità del sistema di continuare con qualsiasi aggiornamento che potrebbe essere in corso.

Non è necessario specificare una Pre-Dependsvoce per un pacchetto prima che questo sia stato discusso sulla debian-develmailing list e sia stato raggiunto un consenso su come farlo. Vedi Dipendenze, Sezione 3.5 .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.