2012-06-02 10 views
5

sto cercando di caricare hunchentoot via quicklisp in slime, e ottenere il seguente errore:Come posso ottenere quicklisp per caricare rfc2388 nella melma?

READ error during COMPILE-FILE: 

    :ASCII stream decoding error on 
    #<SB-SYS:FD-STREAM 
    for "file [redacted]/dists/quicklisp/software/rfc2388-20120107-http/rfc2388.asd" 
    {100607B723}>: 

    the octet sequence #(196) cannot be decoded. 

    (in form starting at line: 29, column: 29, 
    file-position: 1615) 
[Condition of type ASDF:LOAD-SYSTEM-DEFINITION-ERROR] 

Ottengo questo quando si tenta di eseguire uno:

(ql:quickload "hunchentoot") 

O semplicemente:

(ql:quickload "rfc2388") 

Sembra che altri siano gettingthis troppo. Ho trovato uno hint ad una possibile risposta, dicendo:

The system file is encoded as UTF-8. 
I'm not sure how to configure things so that SBCL on Windows starts with 
UTF-8 as its default encoding for loading sources, but that's what you 
need to do. 

Da lì, ho provato (ad esempio, in base a [questo] aggiungendo quanto segue alla mia emacs config:

(set-language-environment "UTF-8") 
(setq slime-lisp-implementations 
     '((sbcl ("/opt/local/bin/sbcl") :coding-system utf-8-unix))) 
(setq slime-net-coding-system 'utf-8-unix) 

Ma .. Ho ancora lo stesso errore, anche dopo aver riavviato completamente emacs, per assicurarmi di avere un nuovo Slime che stava leggendo la configurazione di cui sopra.

Quindi, cosa mi manca e/o altrimenti come posso ottenere questo da caricare?

Grazie in anticipo! (Più grazie a venire per una risposta di successo.)

+0

prova questo: (setq slime-net-coding-system 'utf-8-unix) –

+0

@VsevolodDyomkin: Noterai che l'ho provato (vedi l'ultima riga dell'ultimo blocco di testo) già .. C'è qualcosa che devo fare per farlo vedere a sbcl? Quella variabile sembra (se sto leggendo la documentazione correttamente) per controllare le connessioni di rete (presumo con swank?), Ma cosa controlla con cosa viene lanciato SBCL? – lindes

risposta

2

Hai controllato le impostazioni locali? La configurazione di Emacs indica solo quali sistemi di codifica impostare per la comunicazione tra SLIME e SWANK.

È possibile verificare la presenza di impostazioni internazionali con/usr/bin/locale, ad esempio:

navi ~ » locale 
LANG=pl_PL.UTF-8 
LC_CTYPE=pl_PL.UTF-8 
LC_NUMERIC=pl_PL.UTF-8 
LC_TIME=pl_PL.UTF-8 
LC_COLLATE="pl_PL.UTF-8" 
LC_MONETARY=pl_PL.UTF-8 
LC_MESSAGES=C 
LC_PAPER=pl_PL.UTF-8 
LC_NAME="pl_PL.UTF-8" 
LC_ADDRESS="pl_PL.UTF-8" 
LC_TELEPHONE="pl_PL.UTF-8" 
LC_MEASUREMENT=pl_PL.UTF-8 
LC_IDENTIFICATION=pl_PL.UTF-8 
LC_ALL= 
navi ~ » 

mio è setup per UTF-8 in tutto il mondo, come si può vedere, tranne che per la visualizzazione di messaggi 'C'.

+2

Aggiungendo '(setenv" LANG "" en_US.UTF-8 ")' al mio file init di emacs (e riavviando, come un modo pigro di riavviare slime/sbcl) ha effettivamente risolto il problema. Grazie! (Questa risposta non lo ha dato esattamente, ma mi ha indirizzato nella direzione di cui avevo bisogno, e questo è apprezzato.) – lindes

-1

Ci dovrebbe essere una directory .cache in HOME che contenga tutti i file fasl. A volte rimuovere quei vecchi file fasl sembra funzionare per me quando qualcosa va storto con la compilazione.

+0

Li ho rinominati e non sembra aver fatto la differenza. Sono abbastanza sicuro che ci sia una sorta di impostazione per ottenere il sistema di codifica che è necessario, e questo sarebbe solo una cache di qualcosa compilato - non posso compilare il file, però. Potrei immaginare che qualcosa precedentemente compilato possa interferire, ma ... non sembra cambiare nulla. – lindes

0

Prova questa:

cambiamento nella .../quicklisp/dists/quicklisp/software/rfc2388 * directory e caricare rfc2388.asd in un editor di testo. Spostarsi verso il basso: parametro dell'autore del modulo defsystem. Sostituisci il nome dell'autore con il nome indicato nella parte superiore del file. Memorizza il file usando la codifica ASCII.

Ovviamente, quando viene pubblicata una nuova versione della libreria, la soluzione si perde. Oppure memorizzare il progetto modificato in progetti locali.

+0

Sono molto più felice di trovare una soluzione che non mi richiede di cambiare la rappresentazione del nome di qualcuno, né di gestire le patch alle cose. Sono sicuro che questo avrebbe funzionato, ma impostare LANG mi sembra una soluzione (per lo più, per lo meno) più felice. Penso che i miei giorni di assunzione di LANG = C si avvicinino probabilmente alla fine. :) – lindes

0

Con la codifica UTF-8 originale ancora in vigore, il DEBUGGER deve presentare un'opzione INPUT-REPLACEMENT per sostituire i caratteri di immissione in errore con una stringa di sostituzione. Scegli questa opzione, digita "?" o "x" o qualsiasi stringa che ti piace al prompt e poi INVIO. Il carico quindi completa. Certo, non è qualcosa che ti piacerebbe fare ogni volta.

Quindi l'idea migliore è probabilmente quella di inviare una e-mail all'autore e chiedere di fornire una versione ascii per quicklisp.

+0

Hmm, non ricordo di aver visto quell'opzione nel debugger ... I riavvii che erano disponibili per me erano: '0: [ABORT] Interrompe il caricamento del file" [...]/rfc2388.asd ". 1: [REINITIALIZE-SOURCE-REGISTRY-AND-RETRY] ​​Riprovare il sistema di ricerca rfc2388 dopo aver reinizializzato il registro di origine. 2: [ABORT] Lascia su "rfc2388" 3: [RETRY] ​​Riprova la richiesta di valutazione REPL SLIME. 4: [* ABORT] Torna al livello superiore di SLIME. 5: [ABORT] Interrompi thread (# ) '- cosa ti aspettavi di vedere lì? – lindes

Problemi correlati