Come usare le conchiglie di pesce in Cygwin?


15

È possibile utilizzare la conchiglia di pesce con Cygwin? Non sono riuscito a compilare il sorgente in cygwin e non ho trovato alcun pacchetto precompilato. C'è una buona ragione per non avere pesci in Cygwin?

Risposte:


23

fish shell 2.1.0 è ora ufficialmente supportato in Cygwin, è possibile installarlo utilizzando il programma di installazione predefinito.


15

Ecco come sono riuscito a compilare il pesce in Cygwin.

Passaggio 1: verificare che tutte le dipendenze siano installate

Innanzitutto, assicurati di avere i seguenti pacchetti cygwin:

  • libncurses-devel
  • libiconv
  • autoconf (non è una dipendenza dei pesci, ma ne abbiamo bisogno per un passaggio successivo)

Passaggio 2: scaricare ed estrarre l'ultima fonte

Quindi, scarica l'ultima fonte da http://fishshell.com (ho usato fish-1.23.1.tar.gz ). Estrai la fonte nella tua directory di scelta e cd ad essa:

$ tar zxvf fish-1.23.1.tar.gz -C /usr/local/src/
$ cd /usr/local/src/fish-1.23.1/

Passaggio 3: modifica configure.acper rimuovere i controlli periconv

Ora per qualche motivo, ./configurenon è possibile rilevare libiconvcorrettamente. Per aggirare il problema rimuoviamo il controllo per esso (specificeremo manualmente la lib in seguito). Per fare ciò, modifichiamo configure.ace rimuoviamo i controlli per iconv_open. La ricerca di iconv_openrivela 3 occorrenze; li commentiamo tutti. Quindi, da:

AC_SEARCH_LIBS( iconv_open, iconv, ....)

Passiamo a:

#AC_SEARCH_LIBS( iconv_open, iconv, ....)

Passaggio 4: ricostruire ed eseguire ./configure

Successivamente, ricostruiamo lo ./configurescript eseguendo ed autoconfeseguendo lo script configure:

$ autoconf && ./configure

Passaggio 5: modifica Makefileper includere il percorso corretto acurses.h

Un altro problema che ho dovuto affrontare era curses.h: gcc non riusciva a trovarlo. Una rapida ricerca ha rivelato che è dentro /usr/include/ncurses.

Il Makefileha un hardcoded includono percorso in CFLAGS, ma che punti a /usr/local/include/ncursesposto.

Quindi, modifichiamo Makefilee cambiamo:

CFLAGS = -I/usr/local/include/ncurses -std=c99 ....

per

CFLAGS = -I/usr/include/ncurses -std=c99 ...

Passaggio 6: esporta LDFLAGSper collegarti libiconve siamo pronti per compilare / installare.

Infine, esportiamo il necessario LDFLAGSper il collegamento iconv, quindi compiliamo e installiamo!

$ export LDFLAGS="-liconv"
$ make && make install

Godere fish

$ fish
Welcome to fish, the friendly interactive shell
Type help for instructions on how to use fish
me@home /u/l/s/fish-1.23.1> 

+1 Posso confermare che i passaggi sopra dovrebbero funzionare. Ho anche aggiunto #define HAVE_NCURSES_H 1il file di intestazione generato config.h(per gli stessi motivi indicati sopra)
Amro,

Ho installato libiconv e impostato LDFLAGS, ma ho ancora un errore: set_color.c: 16: 20: curses.h: nessun file o directory set_color.c: nella funzione translate_color': set_color.c:116: warning: implicit declaration of function strcasecmp 'set_color.c: nella funzione main': set_color.c:333: error: ERR' non dichiarato (primo utilizzo in questa funzione)
muriloq

All'inizio ho visto anche quell'errore. Hai installato libncurses-devele modificato il -Ipercorso modificato nel `Makefile (passaggio 5)?
Shawn Chin,

Sì, ho anche reinstallato di nuovo libncurses-devel, per essere sicuro. Forse c'è un'altra dipendenza che era già presente nel tuo sistema? Cercando il messaggio di errore ho trovato la seguente segnalazione di bug: sourceforge.net/tracker/…
muriloq

@muriloq Sembra che curses.hnon sia incluso ( ERRè definito lì). Puoi dare un'occhiata /usr/include/ncurses/e vedere se è lì?
Shawn Chin,

0

Controlla i problemi di pesce # 680 e # 319 su GitHub, c'è tutto il necessario per compilare il pesce su Cygwin.


2
I collegamenti a risorse esterne sono incoraggiati, ma per favore aggiungi un contesto attorno al collegamento in modo che i tuoi colleghi utenti abbiano qualche idea di cosa sia e perché sia ​​lì. Cita sempre la parte più pertinente di un link importante, nel caso in cui il sito di destinazione non sia raggiungibile o rimanga permanentemente offline.
Ashildr,
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.