È possibile impostare una versione specifica dei pacchetti, da quale pacchetto principale dipende?


10

Abbiamo un ambiente di sviluppo su FreeBSD 10.3. Ho sentito che FreeBSD gestisce le dipendenze dei pacchetti in quel modo, che cerca sempre la versione più recente di tutti i pacchetti, da cui dipende il pacchetto principale. E sembra vero. Quindi, le mie domande sono:

  1. È vero? ci sono documenti ufficiali che lo provano?
  2. Il modo migliore come superare questo problema?

7
Ho il sospetto, è possibile installare prima il pacchetto della versione specifica richiesta, quindi pkg lock, quindi installare tutto il resto che si desidera.
arrowd

1
Dipende anche da quale porta / pacchetto si desidera e in quale versione. Ad esempio puoi avere diverse versioni di python / postgresql / php. A volte sono disponibili più pacchetti per un software, a volte puoi creare il tuo pacchetto speciale dalle porte.
Raphael Ahrens,

3
Se esegui ciecamente aggiornamenti di freebsd (o pkg upugrade), sì, troverà il più recente possibile e proverà a installarlo. Come diceva arrowd, ora (dal 9.2 o giù di lì), puoi bloccare pkg <pkg> che dovrebbe proteggere ciò che hai installato e le sue dipendenze dalle modifiche. YMMV.
quadruplebucky

Risposte:


1

Come FreeBSD costruisce i pacchetti

Il progetto FreeBSD usato per costruire pacchetti solo per le versioni e occasionalmente per le filiali STABLE. I vecchi compilatori di pacchetti utilizzavano un sistema distribuito chiamato Portbuild. Userebbe un grande gruppo di macchine più piccole da 2 GB-4 GB per costruire pacchetti. Questo era soggetto a errori e lento, principalmente a causa delle macchine più vecchie. Una build completa potrebbe richiedere ancora una settimana. Oggi i pacchetti vengono creati utilizzando macchine singole di grandi dimensioni utilizzando Poudriere. (Dalla pagina web di Brian Drewery ).

Vedi anche: Come aggiornare un mix di pacchetti e porte su FreeBSD

FreeBSD ha un ABI (e API) in evoluzione come Solaris e Windows mentre Linux ha un ABI (e API) stabile (stagnante?), Quindi con i vecchi binari Linux verrà comunque eseguito su una versione del sistema operativo più recente mentre con sistemi operativi non Linux questo non è ' t sempre il caso (a volte lo è).

L'utilizzo pkg lockpuò comunque causare mal di testa , mentre si bloccherà (offrirà un avviso) quando si tenta di eseguire l'aggiornamento pkg upgrade, tuttavia presuppone che le versioni con numero maggiore siano migliori (desiderabili) e che sia qualcosa che vorresti fare, quindi chiede il permesso, e puoi permetterlo, ma non garantisce che qualcos'altro non verrà rotto. Vedi l'URL sopra o questa discussione: " Preferiresti che FreeBSD blocchi le versioni dei pacchetti binari distribuiti tramite pkg per una versione del sistema operativo? ".

Se un pacchetto è bloccato a volte dovrai dare il permesso di sbloccarlo e fare l'aggiornamento, mentre quello funzionerà per l'unico pacchetto (e tutte le sue dipendenze) non c'è alcuna garanzia che qualcos'altro non sarà incompatibile con le nuove librerie ( e quindi anche bisogno di un aggiornamento, se uno è attualmente disponibile).

Blog di Brian Drewery: " FreeBSD Journal: Poudriere " opines:

"Smetti di usare portmaster, portupgrade e porte sui tuoi server e passa ai pacchetti.

Configurare i tuoi pacchetti con Poudriere richiede solo pochi minuti e ti farà risparmiare un sacco di tempo in futuro.

...

Se stai mantenendo più di un sistema FreeBSD e non stai già usando i pacchetti, dovresti. Mantengo solo 20 server, ma la costruzione di porte su ciascun sistema ha richiesto molto tempo e ha sprecato risorse sulle macchine di produzione. Quando si creano porte su più server, è molto facile sincronizzare le loro opzioni o versioni. Creando pacchetti una volta su un sistema, ho ridotto il carico sui miei sistemi, ridotto la quantità di lavoro che dovevo fare e reso coerenti tutti i miei sistemi. Invece di affrontare lo stesso errore su ciascun sistema, ho solo bisogno di gestirlo sul sistema di compilazione.

Ma il problema ...

Perché dovresti deviare dai pacchetti ufficiali? Il framework delle porte fornisce opzioni di supporto per le porte per modificare la configurazione in fase di creazione. Non tutte le applicazioni supportano la configurazione di runtime. Alcune applicazioni devono essere compilate in modo diverso a seconda delle funzionalità abilitate. Altri hanno opzioni semplicemente per ridurre la quantità di funzionalità e dipendenze nella porta predefinita. Per gli amministratori di server, ciò può portare rapidamente a scoprire che alcuni dei pacchetti predefiniti non soddisfano i loro requisiti.

Così ...

Esistono alcuni modi per ottenere pacchetti personalizzati. Pkg supporta l'utilizzo di più repository. Può essere configurato per usare il repository ufficiale di FreeBSD come primario e uno personalizzato come secondario. Pkg non è limitato dal numero di repository che può monitorare e possono essere riordinati per priorità. Il problema con più repository è che attualmente può essere difficile da mantenere. Quando Pkg rileva che un pacchetto installato ha opzioni o dipendenze diverse da un repository che sta monitorando, il pacchetto verrà reinstallato da qualsiasi versione remota. Puoi bloccare il pacchetto durante gli aggiornamenti con pkg lock PKGNAME e pkg sbloccare PKGNAME o associarlo a un repository specifico con pkg annotate -A repository PKGNAME REPONAME. C'è anche il sottile problema di mantenere sincronizzato l'albero delle porte per il tuo repository personalizzato con i pacchetti di FreeBSD. Poiché i pacchetti vengono creati da un'istantanea dell'albero delle porte eseguita una volta alla settimana, se il repository personalizzato non corrisponde può causare conflitti. È molto più semplice creare un intero pacchetto di tutto ciò di cui hai bisogno con le opzioni che desideri.

La soluzione:

Poudriere (approssimativamente pronunciato poo-dree-year, francese per "fusto in polvere") è stato scritto come un sostituto più rapido e semplice di Tinderbox. È stato scritto dall'autore di Pkg Baptiste Daroussin e ora è per lo più gestito da me insieme a Baptiste e ad altri collaboratori. È diventato rapidamente lo strumento di test delle porte di FreeBSD e lo sviluppo di pacchetti. È lo strumento ufficiale per la creazione di cluster ed è anche usato dal progetto Ports di FreeBSD per testare ampie patch in quelle che vengono chiamate "esecuzioni". È scritto nella shell POSIX e viene lentamente spostato nei componenti C. A differenza di Tinderbox, non ha dipendenze e non richiede un database. È stato notevolmente ottimizzato per essere altamente parallelo in tutte le operazioni. Utilizza jail per costruire porte in ambienti sandbox in condizioni molto rigide. La creazione della prigione viene eseguita una volta con un semplice comando. Durante le build, la jail viene clonata automaticamente per ogni CPU utilizzata per dare alle porte un posto pulito dove costruire ".

Configurare il proprio repository con poudriere consente di avere la flessibilità dei porti e la facilità di gestione dei pacchetti.

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.