Come mantenere il mio sistema Debian con gli ultimi pacchetti?


9

La maggior parte del "software" che installo sul mio server deve essere l'ultima versione (Java, Tomcat, MySQL-Cluster). Quindi non ho mai avuto la fortuna che ci siano pacchetti Debian pre-compilati (nella distribuzione) disponibili. Pertanto, tutto il software viene scaricato dalla pagina web del progetto e creato dal sorgente.

Ora la mia domanda è: qual è il modo corretto di installarli sul mio sistema Debian?

Il mio problema principale è che, installandoli direttamente dal sorgente, non sono inclusi nella gestione dei pacchetti (con aptitude). Checkinstall sembra non essere realmente suggerito per essere usato ed equiv ha anche degli svantaggi. L'unico modo corretto di gestirlo è costruire i miei pacchetti con dh_make e dpkg-buildpackage?

Cosa fai se hai sempre bisogno dell'ultima versione?

Risposte:


10

Volere pacchetti più recenti è un problema comune su qualsiasi sistema operativo. Il ciclo di rilascio di Debian è stato in media di 2 anni negli ultimi anni, quindi verso la fine di questo ciclo, è forse un problema più urgente. Un modo per mitigarlo è passare ai test verso la fine del ciclo di rilascio stabile, quando la versione successiva è quasi stabile. Non è chiaro dalla domanda se si tratti di stabile su più in generale di test e / o anche instabile. Indipendentemente da ciò, avere la versione più recente può essere un problema anche se in esecuzione instabile, poiché la versione più recente potrebbe non essere ancora impacchettata. Gli sviluppatori / packager Debian sono volontari, quindi possono annoiarsi o impegnarsi con altre cose, con il risultato che il pacchetto languisce.

Per semplicità e concretezza presumo in quanto segue che il piano è di riportare un pacchetto su stabile, ma si applica più in generale. Quindi, ecco cosa faccio se voglio una versione più recente del software che non è presente in modo stabile, in un ordine approssimativo.

  1. Cerca il pacchetto in Debian Backports . A volte puoi trovare un pacchetto abbastanza recente da soddisfare i tuoi scopi. Tuttavia, spesso accade che questi pacchetti siano obsoleti rispetto alla versione in unstable o sperimentale o upstream.

  2. Prova a installare il pacchetto direttamente dal test, instabile o sperimentale. Se stable non è molto diverso dalla versione da cui si sta tentando di installare, potrebbe funzionare. Saprai che questo approccio è negativo se il sistema inizia a provare a installare o aggiornare i pacchetti di base dalla versione più recente. Supponiamo che tu stia provando a installare da unstable, quindi

    apt-get install packagename/unstable
    

    è la prima cosa da provare. Con le versioni di apt in stable, ciò spesso fallirà, poiché richiede altri pacchetti da unstable, e questo incantesimo aumenta solo la preferenza di packagenamesufficientemente alta da poter essere installata in unstable. Se non capisci cosa significhi, vai via e leggi man apt_preferences. Continua ad aggiungere dipendenze da unstable, assicurandoti che non stia tentando di aggiornare i pacchetti di base. Ad esempio, se inizia a provare ad aggiornare libc6 o X o KDE o Gnome, interrompere immediatamente. Di solito va bene se si tenta di aggiornare altri pacchetti dallo stesso pacchetto sorgente, poiché questi sono solitamente strettamente accoppiati. Per vedere da quale pacchetto sorgente dipende un pacchetto binario, fare

    apt-cache showsrc packagename
    

    Dato che molte cose dipendono dalla libreria GNU C (libc6), questo era un problema. Più recentemente, l'API sembra essersi stabilizzata, quindi ora è più spesso possibile cavarsela senza dover aggiornarla. Se un pacchetto soddisfa le sue dipendenze di runtime su stable, ma continua a non funzionare correttamente, inviare un bug. Se il packager ti dice che non è un bug, si sbagliano. :-)

  3. Esegui il backport del pacchetto da test, instabile o sperimentale.

    Come accennato in precedenza, i backport sono un'opzione, ma spesso questi pacchetti sono obsoleti rispetto alla versione in unstable o sperimentale o upstream.

    Questo può spesso richiedere un tipo di ciclo di compilazione di dipendenza ricorsiva. Per prima cosa devi ottenere le dipendenze di build

    apt-get build-dep packagename    
    

    Se ciò non riesce perché una delle dipendenze non è abbastanza recente, è necessario eseguire prima il backport di tale dipendenza. Questo può sfuggire al controllo. Di solito mi arrendo se devo affrontare più di 2 livelli di ricorsione. Si noti tuttavia che le dipendenze reali non sono necessariamente strette come indicato, ad es. una versione precedente potrebbe funzionare. Il packager spesso non cerca di trovare la versione più vecchia di una dipendenza build (o, in effetti, di runtime) che funzionerà.

  4. Verificare la disponibilità dei pacchetti dal corrispondente upstream. Idealmente questi corrisponderebbero alla versione di distribuzione, ma potresti anche essere in grado di ricostruirli se necessario.

  5. Crea pacchetti per la versione del software più recente rispetto ai pacchetti più recenti in testing / unstable / sperimentale. Questo può essere relativamente impegnativo, ma a volte sorprendentemente fattibile. La prima cosa da notare è che se si sta cercando di impacchettare una versione più recente di un pacchetto che è già in Debian, si sta già iniziando con un grande vantaggio, vale a dire che si ha il pacchetto esistente con cui lavorare. Basta fare

    apt-get source packagename
    

    e apt-getscaricherà il pacchetto sorgente corrispondente, inclusa la sottodirectory debian in cui risiede il pacchetto. Si noti inoltre che in questi giorni questo pacchetto spesso vive all'interno di un repository di controllo verson (git sembra popolare con Debian) e un apt stabile (attualmente 0.8.10.3 ) ti dice dove si trova quando invochi apt-get source. Dovresti dare un'occhiata a questo, perché i packager potrebbero avere versioni più recenti della confezione rispetto a qualsiasi pacchetto rilasciato. Per esempio.

    $ apt-get source mercurial
      Reading package lists... Done
      Building dependency tree       
      Reading state information... Done
      NOTICE: 'mercurial' packaging is maintained in the 'Svn' version control system at:
      svn://svn.debian.org/python-apps/packages/mercurial/trunk
    

    In alternativa, potresti semplicemente usare

    apt-cache showsrc mercurial | grep Vcs
    

    per elencare il repository.

    Se il pacchetto non è aggiornato, potrebbe essere necessario apportare modifiche al
    pacchetto, aggiornare le patch applicate ma di solito è comunque un buon
    punto di partenza . Debian sembra essere in procinto di standardizzare la gestione dei pacchetti su
    quilt secondo il formato dpkg-source 3.0 (quilt) , in modo da facilitare l'aggiornamento delle patch.

    Concluderò con un esempio reale di come ho eseguito il backport del pacchetto Debian di pgf . L'ultima versione in pacchetto di pgf era la 2.00 nel 2008 e da allora la 2.10 era stata rilasciata. Vedi la discussione in Si prega di aggiornare all'ultima versione stabile di pgf (2.10) e il mio bug di follow-up con una patch, pgf: patches contro il pacchetto Debian 2.0 . A quanto pare, il pacchetto Debian di pgf era molto semplice e ho dovuto cambiare una riga nel pacchetto 2.10 per farlo funzionare. Ho finito per reprimere anche tutte le lamentele di lintian , ma era strettamente facoltativo.


L'ultima frase del primo paragrafo può essere fuorviante. Si prega di chiarire che il problema si verifica solo a volte . Il modo in cui metti sembra che i DD siano generalmente così.
Tshepang,

@Tshepang: buon punto. Va bene adesso?
Faheem Mitha,

Sì, molto meglio.
Tshepang,

5

Puoi sicuramente creare i tuoi pacchetti e funzionerà. Tuttavia, consiglierei di usare i backport prima i se ciò che desideri è disponibile lì.

I backport sono gestiti da Debian e si ottengono aggiornamenti di sicurezza per loro.


3

Costruire i propri pacchetti è la strada da percorrere (IMHO). A seconda dell'età della versione di Debian di un pacchetto e di cosa è cambiato, questo può essere facile come sostituire il nome del file tarball di origine nella descrizione del pacchetto e nel caso peggiore è ancora possibile usarlo come modello per la propria versione.


1

Cosa fai se hai sempre bisogno dell'ultima versione?

  1. Come già accennato , utilizzare i backport.

  2. Solo un piccolo sottoinsieme di pacchetti Debian è backportato, quindi suggerisco di usare Debian Testing . Offre un buon equilibrio tra stabilità e attualità, ed è in un certo senso, come una distribuzione a rotazione.

  3. Se sei un po 'più audace, usa Debian Unstable . Si dice che sia ragionevolmente stabile. Alcuni arrivano addirittura a sostenere che è più stabile di altre versioni "stabili" della distribuzione. Ad ogni modo, Unstable è dove normalmente arrivano le nuove versioni dei pacchetti. Di solito restano seduti lì per circa 10 giorni, per consentire il test, prima di migrare al Test.

  4. Anche usando questi due, potresti ritrovarti a non avere le ultime versioni. In tal caso, dai un'occhiata a Debian Experimental . Viene normalmente utilizzato quando i nuovi pacchetti sono troppo dannosi per gli archivi normali (instabili e test).

  5. Se Experimental non ha ancora versioni software abbastanza nuove, dai un'occhiata al PPA di Ubuntu . Ho visto versioni software più recenti di quelle che mancano in tutti gli archivi di cui sopra. Usalo con cautela, poiché Ubuntu non è compatibile al 100% con Debian (ma nella maggior parte dei casi non dovrebbero esserci problemi).

  6. Se quanto sopra fallisce, suppongo che crei i tuoi pacchetti, come detto .


La gente che dice che l'instabile di Debian è più stabile di quella di altre distro, scherza al massimo. Modifiche instabili ogni giorno, stable è un repository fisso. L'instabile non significa che andrà in crash, ma significa che gli sviluppatori apportano molte modifiche ai pacchetti. Stabile significa che è stato rilasciato e verranno aggiunte solo le correzioni di sicurezza. Non ho mai avuto strani incidenti con instabilità. Ho visto i pacchetti rompersi e problemi di dipendenza dopo l'aggiornamento, attenzione ;-) Come tutto ciò si confronta con le versioni "stabili" di altre distro è oltre me. Non c'è "più stabile" in questo contesto. Cambia o no.
Arjan Drieman,

@ArjanDrieman: in realtà quelle persone non scherzano, e in quel contesto si riferiscono ad essere più a prova di crash.
Tshepang,

Stanno ancora scherzando al massimo. Ho davvero visto persone scherzare al riguardo. Una fiamma di micro-distribuzione ;-) Nel corso del tempo ho usato alcune distro e non ho mai avuto strani incidenti con nessuno degli altri, persone che affermano che sul serio non è possibile eseguire il backup con ricerche o statistiche. Potrebbe essere ignoranza, arroganza, pregiudizio, qualsiasi cosa ... ma è meglio di uno scherzo? Puoi dirmi chi sono questi misteriosi "Alcuni", così posso chiedere loro la loro ricerca? "Alcuni vanno persino lontano" ... quelle sono parole da donnola. Cosa ti piacerebbe in una risposta, fatti o opinioni popolari e affermazioni ambigue?
Arjan Drieman,

1
@Arjan Drieman: in realtà sono d'accordo instabile, può "a volte" essere all'altezza del suo nome. Scambi stabilità per andare più vicino al limite, chiunque affermi che non è il caso è nella migliore delle ipotesi insingenuo. Nel complesso è sorprendentemente stabile, ma la stabilità non è la massima priorità per gli instabili. Tendo anche ad essere d'accordo con te, per quanto riguarda i termini "scivolosi". È quasi un meccanismo di difesa qui, poiché ogni affermazione assoluta / diretta viene immediatamente attaccata.
JM Becker,
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.