Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Installare patch

  1. #1

    Installare patch

    Salve a tutti, ho installato su centOS il server jabber: ejabberd.

    Dovrei installare una patch per ejabberd con un file .diff:
    ejabberd_local_address.diff

    ma non riesco a capire come fare.
    Voi sapete come fare?

    grazie.
    My website: .....:::{[( www.oltrecalcio.com )]}:::.....
    My works: .....:::{[( win.oltrecalcio.com/lavori )]}:::.....

    "PALLA TAGLIATA...MESSA FUORI...C'è PIRLO PIRLO...ANCORA PIRLO...DI TACCO...TIRO... GOOOOOOOOOOOOOOOOOL GRROSOOO GRROSOOO GRROSSOOO GOL DI GROSSOOOOOOOO..."

  2. #2
    Utente di HTML.it L'avatar di GunMan
    Registrato dal
    Dec 2005
    Messaggi
    2,642
    non conosco centOS ma i comandi diff e patch sono usati in molti frangenti.

    qualche spunto che spero possa essere utile

    http://en.wikipedia.org/wiki/Patch_(Unix)

    http://www.cpqlinux.com/patch.html
    Chaos A.D. Disorder unleashed.
    Starting to burn. Starting to lynch.
    Silence means death. Stand on your feet.
    Inner fear. Your worst enemy.

    Refuse / Resist

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    225
    Neanch'io conosco centOS, ma di solito le patch si applicano AI SORGENTI dei programmi, qualcosa tipo (vado molto a memoria, che e' scarsa)
    cat miapatch.diff | patch -p1
    oppure patch -p1 < miapatch.diff
    per poi compilare ed installare.

  4. #4
    Si allora, io ho i sorgenti.
    Ma non riesco a capire proprio il meccanismo...cioè, questo file .diff deve andare a sostituire un altro file con lo stesso nome? Oppure devo aggiungerlo in qualche cartella?

    sono riuscito solo a capire che un file diff rappresenta una differenza tra 2 file...ma come si applica ancora no....
    My website: .....:::{[( www.oltrecalcio.com )]}:::.....
    My works: .....:::{[( win.oltrecalcio.com/lavori )]}:::.....

    "PALLA TAGLIATA...MESSA FUORI...C'è PIRLO PIRLO...ANCORA PIRLO...DI TACCO...TIRO... GOOOOOOOOOOOOOOOOOL GRROSOOO GRROSOOO GRROSSOOO GOL DI GROSSOOOOOOOO..."

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    225
    Allora... la cosa si fa dura...
    Il file diff e' un condensato di differenze tra due file sorgente o adirittura tra due rami di sviluppo, e va interpretato da un programma che riporta le differenze nei posti giusti.
    Ti riassumo come si fa di solito, ma devi capire tu a che punto sei del procedimento e con quali directory (LEGGI man patch):
    1) Estrazione dei sorgenti in /tmp/mioprogramma-1.0
    2) Copia di miapatch.diff in /tmp/mioprogramma-1.0
    3) Da /tmp/mioprogramma-1.0 richiamo del comando: patch -p1 <miapatch.diff
    4) Interpretazione dei risultati per verificare che le modifiche sono state riportate tutte.
    5) Creazione dei binari con la compilazione

    Il punto 3 presenta la prima difficolta', perche' quel -p1 dipende da come e' stata creata la patch.
    il punto 4 presentala seconda: se ci sono problemi patch prova a rimediare, se non riesce a rimediare crea dei files per gestire il conflitto, quindi sarebbe meglio un po' capirne di programmazione...
    Comunque leggi la documentazione di patch (man patch)

  6. #6
    allora....
    io mio programma si chiama ejabberd.
    ho scompattato il source code nella cartella opt e mi è uscita una cartella chiamata: ejabberd-2.0.2.

    entro nella cartella ejabberd-2.0.2 e ho una serie di cartelle tra cui la cartella src nella quale ci sono tutti i sorgenti.

    seguendo la guida di ejabberd sono entrato da terminale nella cartella src e ho digitato i comandi:
    ./configure
    make

    A questo punto dovrei applicare la patch...se ho capito bene quello che dici, metto il file ejabberd_local_address.diff all'interno della cartella dei sorgenti src.

    da terminale (nella cartella src) digito:
    patch -p1 <ejabberd_local_address.diff
    oppure
    patch -p0 <ejabberd_local_address.diff

    mi dice....

    "can't find file to patch at input line 5
    Perhaps you used the wrong -p or --strip option?
    The text leading up to this was:
    ---------------------------------
    |diff --git a/src/ejabberd.cfg.example b/src/ejabberd.cfg.example
    |index d03fb2d..8f17e76 100644
    |--- a/src/ejabberd.cfg.example
    |+++ b/src/ejabberd.cfg.example
    ---------------------------------
    File to patch:"

    e non so cosa mettere....


    se invece digito
    patch -p2 <ejabberd_local_address.diff
    mi dice:
    patching file ejabberd.cfg.example
    Hunk #1 succeded at 191 with fuzz 2 (offset 46 lines).
    patching file ejabberd_config.erl
    Hunk #1 succeded at 146 with fuzz 2 (offset 38 lines).
    patching file ejabberd_s2s_out.erl
    Hunk #1 FAILED at 180.
    1 out of 1 hunk FAILED --saving rejects to file ejabberd_s2s_out.erl.rej
    patching file win32/ejabberd.cfg
    patch: **** malformed patch at line 86:




    riesci a percepire qualcosa?
    premetto che la patch mi deve andare ad aggiungere una opzione nella connessione s2s...li dove mi ha dato errore....
    grazie...
    My website: .....:::{[( www.oltrecalcio.com )]}:::.....
    My works: .....:::{[( win.oltrecalcio.com/lavori )]}:::.....

    "PALLA TAGLIATA...MESSA FUORI...C'è PIRLO PIRLO...ANCORA PIRLO...DI TACCO...TIRO... GOOOOOOOOOOOOOOOOOL GRROSOOO GRROSOOO GRROSSOOO GOL DI GROSSOOOOOOOO..."

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    225
    Intanto devi applicare la patch PRIMA di compilare, perche' la patch e' riferita al codice sorgente (il punto 3 viene prima del punto 5).
    Direi che la patch viene generata a partire dalla dir che contiene src, quindi devi fare tutto da dentro ejabberd-2.0.2, non da dentro src.
    A quel punto dovrebbe andare -p1.
    Leggendo l'output di patch mi sorge un dubbio: controlla molto bene la patch che hai scaricato, perche' deve essere apposita per la versione di programma che hai (compresa la piattaforma). Vedo invece che nell'applicazione delle differenze il programma patch ha dovuto adattare le differenze al codice spostandole anche di parecchie righe (il significato di quel "offset 46 lines") e comunque si e' arreso con un file sotto win32, cioe' un file per piattaforma windows: tu non stai compilando sotto linux?

  8. #8
    Si me ne sono reso conto, infatti ho rifatto tutto daccapo, cioè ho scompattato ma non ho compilato.

    Poi ho copiato la patch nella cartella ejabberd-2.0.2 e ho fatto il comando con -p1, quindi funziona, ma mi da le stesse linee di codice che ho scritto prima.

    Comunque si, io sto compilando sotto linux.

    Il rilascio della patch è ufficiale e sta qui:
    https://support.process-one.net/browse/EJAB-418

    cavolo ho notato che nell'intesazione dice:
    Affects Version/s: ejabberd 1.1.4

    forse devo provare con quella versione dei codici sorgente??

    grazie ancora...
    My website: .....:::{[( www.oltrecalcio.com )]}:::.....
    My works: .....:::{[( win.oltrecalcio.com/lavori )]}:::.....

    "PALLA TAGLIATA...MESSA FUORI...C'è PIRLO PIRLO...ANCORA PIRLO...DI TACCO...TIRO... GOOOOOOOOOOOOOOOOOL GRROSOOO GRROSOOO GRROSSOOO GOL DI GROSSOOOOOOOO..."

  9. #9
    Allora ti aggiorno:

    ho rifatto tutti i passaggi per la versione ejabberd-1.1.4 e l'output mi dice:

    patching file src/ejabberd.cfg.example
    patching file src/ejabberd_config.erl
    Hunk #1 succeded at 127 (offset 19 lines).
    patching file src/ejabberd_s2s_out.erl
    patching file src/win32/ejabberd.cfg
    patch: **** malformed patch at line 86:



    pensi che ora il patching sia stato fatto correttamente?

    grazie...
    My website: .....:::{[( www.oltrecalcio.com )]}:::.....
    My works: .....:::{[( win.oltrecalcio.com/lavori )]}:::.....

    "PALLA TAGLIATA...MESSA FUORI...C'è PIRLO PIRLO...ANCORA PIRLO...DI TACCO...TIRO... GOOOOOOOOOOOOOOOOOL GRROSOOO GRROSOOO GRROSSOOO GOL DI GROSSOOOOOOOO..."

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    225
    Direi che quello che hai fatto tu e' corretto, ma il messaggio di errore mi ha un po' impensierito, e sono andato ad aprire il file patch: mi pare che ci siano delle righe vuote alla fine, e precisamente quelle pari dalla 80 compresa. Se apri il file con un visualizzatore di file diff (o un editor ti testi qualsiasi che evidenzi anche spazi e ritorni a capo) ti accorgi che tutto il resto del file non contiene righe vuote, questo perche' patch considera i primi caratteri come comandi da eseguire e in alcuni casi probabilmente non gestisce bene le righe che non comprendono questi comandi. Prova ad eliminarle e vedi cosa succede...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.