Como usar a casca de peixe no cygwin?

15

É possível usar a casca do peixe com cygwin? Não consegui compilar o código-fonte no cygwin e não encontrei nenhum pacote pré-compilado. Existe uma boa razão para não ter peixe no cygwin?

muriloq
fonte

Respostas:

23

O fish shell 2.1.0 agora é oficialmente suportado no Cygwin, é possível instalá-lo usando o instalador padrão.

muriloq
fonte
15

Veja como consegui compilar peixe em Cygwin.

Etapa 1: verifique se todas as dependências estão instaladas

Primeiro, certifique-se de que temos os seguintes pacotes do cygwin:

  • libncurses-devel
  • libiconv
  • autoconf (não é realmente uma dependência de peixe, mas precisamos disso para uma etapa posterior)

Etapa 2: faça o download e extraia a última fonte

Em seguida, baixe a última fonte de http://fishshell.com (Eu usei fish-1.23.1.tar.gz ). Extraia a fonte para o seu diretório de escolha e cd para ele:

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

Etapa 3: editar configure.ac para remover cheques para iconv

Agora, por algum motivo, ./configure não pode detectar libiconv devidamente. Para contornar o problema, removemos a verificação (especificaremos a lib manualmente mais tarde). Para isso, editamos configure.ac e remova cheques para iconv_open. Procurando por iconv_open revela 3 ocorrências; nós comentamos todos eles. Então, de:

AC_SEARCH_LIBS( iconv_open, iconv, ....)

Nós mudamos para:

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

Etapa 4: reconstruir e executar ./configure

Em seguida, reconstruímos o ./configure roteiro executando autoconf então execute o script de configuração:

$ autoconf && ./configure

Etapa 5: editar Makefile para incluir o caminho correto para curses.h

Outro problema que enfrentei foi com curses.h - O gcc não conseguiu encontrá-lo. Uma pesquisa rápida revelou que está em /usr/include/ncurses.

o Makefile tem um caminho de inclusão codificado para ele em CFLAGS, mas aponta para /usr/local/include/ncurses em vez de.

Então, nós editamos Makefile e mude:

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

para

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

Etapa 6: Exportar LDFLAGS para ligar libiconve estamos prontos para compilar / instalar.

Finalmente, exportamos o necessário LDFLAGS para ligar iconv, então compile e instale!

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

Apreciar 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> 
Shawn Chin
fonte
Eu posso confirmar que as etapas acima devem funcionar. Eu também adicionei #define HAVE_NCURSES_H 1 no arquivo de cabeçalho gerado config.h (pelas mesmas razões declaradas acima)
Amro
Eu instalei o libiconv e configurei o LDFLAGS, mas eu ainda recebo um erro: set_color.c: 16: 20: curses.h: Nenhum arquivo ou diretório set_color.c: Na função translate_color': set_color.c:116: warning: implicit declaration of function strcasecmp 'set_color.c: Na função main': set_color.c:333: error: ERR 'não declarado (primeiro uso nesta função)
muriloq
Eu vi esse erro inicialmente também. Você instalou libncurses-devel e mudou o mudou o -I caminho no `Makefile (passo 5)?
Shawn Chin
Sim, eu mesmo reinstalei o libncurses-devel novamente, só para ter certeza. Talvez haja outra dependência que já estava presente no seu sistema? Procurando pela mensagem de erro, encontrei o seguinte relatório de bug: sourceforge.net/tracker/
muriloq
@muriloq Soa como curses.h não está sendo incluído ( ERR está definido lá). Você pode dar uma espiada /usr/include/ncurses/ e ver se está aí?
Shawn Chin
0

Verifique os problemas dos peixes # 680 e # 319 no GitHub, há tudo o que você precisa para compilar peixes no cygwin.

Maciej Matys
fonte
2
Os links para recursos externos são incentivados, mas adicione o contexto ao redor do link para que seus usuários tenham uma ideia do que é e por que ele está lá. Sempre cite a parte mais relevante de um link importante, caso o site de destino esteja inacessível ou permaneça offline permanentemente.
Ashildr