¿Cómo usar la concha de pescado en cygwin?


15

¿Es posible usar la concha de pescado con cygwin? No pude compilar la fuente en cygwin, y no encontré ningún paquete precompilado. ¿Hay una buena razón para no tener peces en Cygwin?

Respuestas:


23

fish shell 2.1.0 ahora es oficialmente compatible con Cygwin, es posible instalarlo utilizando el instalador predeterminado.


15

Así es como logré compilar pescado en Cygwin.

Paso 1: compruebe que todas las dependencias estén instaladas

Primero, asegúrese de tener los siguientes paquetes de cygwin:

  • libncurses-devel
  • libiconv
  • autoconf (no es realmente una dependencia del pescado, pero lo necesitamos para un paso posterior)

Paso 2: descargue y extraiga la última fuente

Luego, descargue la última fuente de http://fishshell.com (utilicé fish-1.23.1.tar.gz ). Extraiga la fuente a su directorio de elección y cd a él:

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

Paso 3: Editar configure.acpara eliminar cheques paraiconv

Ahora por alguna razón, ./configureno se puede detectar libiconvcorrectamente. Para solucionar el problema, eliminamos la verificación (especificaremos la lib manualmente más adelante). Para hacerlo, editamos configure.acy eliminamos cheques para iconv_open. La búsqueda iconv_openrevela 3 ocurrencias; Los comentamos a todos. Entonces, de:

AC_SEARCH_LIBS( iconv_open, iconv, ....)

Cambiamos a:

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

Paso 4: Reconstruye y ejecuta ./configure

A continuación, reconstruimos el ./configurescript ejecutando y autoconfluego ejecutamos el script de configuración:

$ autoconf && ./configure

Paso 5: Editar Makefilepara incluir la ruta correcta acurses.h

Otro problema al que me enfrenté fue curses.h: gcc no pudo encontrarlo. Una búsqueda rápida reveló que está dentro /usr/include/ncurses.

El Makefiletiene una trayectoria para hardcoded incluyen en CFLAGS, pero señala que /usr/local/include/ncursesen su lugar.

Entonces, editamos Makefiley cambiamos:

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

a

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

Paso 6: Exportar LDFLAGSpara vincular libiconv, y estamos listos para compilar / instalar.

Finalmente, exportamos lo necesario LDFLAGSpara vincular iconv, luego compilamos e instalamos.

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

Disfrutar 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 Puedo confirmar que los pasos anteriores deberían funcionar. También agregué #define HAVE_NCURSES_H 1el archivo de encabezado generado config.h(por las mismas razones indicadas anteriormente)
Amro

Instalé libiconv y configuré LDFLAGS, pero sigo recibiendo un error: set_color.c: 16: 20: curses.h: No existe tal archivo o directorio set_color.c: En la función translate_color': set_color.c:116: warning: implicit declaration of function strcasecmp 'set_color.c: En la función main': set_color.c:333: error: ERR' no declarado (primer uso en esta función)
muriloq

Vi ese error inicialmente también. ¿Ha instalado libncurses-devely cambiado la -Iruta cambiada en el `Makefile (paso 5)?
Shawn Chin

Sí, incluso reinstalé libncurses-devel nuevamente, solo para asegurarme. ¿Quizás hay otra dependencia que ya estaba presente en su sistema? Buscando el mensaje de error, he encontrado el siguiente informe de error: sourceforge.net/tracker/…
muriloq

@muriloq Parece que curses.hno se incluye ( ERRse define allí). ¿Puedes echar un vistazo /usr/include/ncurses/y ver si está allí?
Shawn Chin

0

Verifique los problemas de pescado # 680 y # 319 en GitHub, hay todo lo que necesita para compilar pescado en cygwin.


2
Se recomiendan enlaces a recursos externos, pero agregue contexto alrededor del enlace para que sus usuarios tengan una idea de qué es y por qué está allí. Siempre cite la parte más relevante de un enlace importante, en caso de que no se pueda acceder al sitio de destino o se desconecte permanentemente.
Ashildr
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.