Wie benutzt man Fischschalen in Cygwin?

15

Ist es möglich, die Fischschale mit Cygwin zu verwenden? Ich konnte den Quellcode in Cygwin nicht kompilieren und habe keine vorkompilierten Pakete gefunden. Gibt es einen guten Grund, keinen Fisch in Cygwin zu haben?

muriloq
quelle

Antworten:

23

fish shell 2.1.0 wird jetzt offiziell von Cygwin unterstützt. Es ist möglich, es mit dem Standardinstaller zu installieren.

muriloq
quelle
15

Hier ist, wie ich es geschafft habe, Fische in Cygwin zu kompilieren .

Schritt 1: Überprüfen Sie, ob alle Abhängigkeiten installiert sind

Stellen Sie zunächst sicher, dass wir die folgenden Cygwin-Pakete haben:

  • libncurses-devel
  • libiconv
  • autoconf (keine wirkliche Abhängigkeit von Fischen, aber wir brauchen sie für einen späteren Schritt)

Schritt 2: Laden Sie die neueste Quelle herunter und extrahieren Sie sie

Laden Sie als Nächstes die neueste Quelle von http://fishshell.com herunter (ich habe fish-1.23.1.tar.gz verwendet ). Extrahieren Sie den Quellcode in ein Verzeichnis Ihrer Wahl und kopieren Sie ihn auf eine CD:

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

Schritt 3: Bearbeiten configure.ac, um Schecks zu entferneniconv

Jetzt aus irgendeinem Grund ./configurenicht libiconvrichtig erkennen . Um das Problem zu umgehen, entfernen wir die Prüfung (die lib wird später manuell angegeben). Zu diesem Zweck bearbeiten configure.acund entfernen wir Schecks für iconv_open. Das Suchen nach iconv_openenthüllt 3 Vorkommen; wir kommentieren sie alle aus. Also von:

AC_SEARCH_LIBS( iconv_open, iconv, ....)

Wir wechseln zu:

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

Schritt 4: Neu erstellen und ausführen ./configure

Als Nächstes erstellen wir das ./configureSkript neu, indem wir autoconfdas configure-Skript ausführen:

$ autoconf && ./configure

Schritt 5: Bearbeiten Makefile , um den korrekten Pfad zu enthaltencurses.h

Ein weiteres Problem, mit dem ich konfrontiert war, war curses.h- gcc konnte es nicht finden. Eine schnelle Suche ergab, dass es in ist/usr/include/ncurses .

Der Makefileenthält einen fest codierten Include-Pfad CFLAGS, der jedoch auf verweist /usr/local/include/ncurses.

Also bearbeiten Makefileund ändern wir :

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

zu

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

Schritt 6: Exportieren, LDFLAGSum eine Verknüpfung herzustellen libiconv, und wir können kompilieren / installieren.

Zum Schluss exportieren wir die LDFLAGSzum Einbinden notwendigen iconv, kompilieren und installieren sie dann!

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

Genießen 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
quelle
+1 Ich kann bestätigen, dass die obigen Schritte funktionieren sollten. Ich habe auch #define HAVE_NCURSES_H 1in der generierten Header-Datei hinzugefügt config.h(aus den gleichen Gründen wie oben angegeben)
Amro
Ich habe libiconv installiert und LDFLAGS gesetzt, bekomme aber immer noch eine Fehlermeldung: set_color.c: 16: 20: curses.h: Keine solche Datei oder kein solches Verzeichnis set_color.c: In der Funktion translate_color': set_color.c:116: warning: implicit declaration of function strcasecmp 'set_color.c: In der Funktion main': set_color.c:333: error: ERR' nicht deklariert (erstmalige Verwendung in dieser Funktion)
muriloq
Ich habe diesen Fehler auch anfangs gesehen. Hast du installiertlibncurses-devel und geändert, den -IPfad im `Makefile geändert (Schritt 5)?
Shawn Chin
Ja, ich habe libncurses-devel sogar noch einmal neu installiert, nur um sicherzugehen. Vielleicht gab es eine andere Abhängigkeit, die bereits in Ihrem System vorhanden war? Auf der Suche nach der Fehlermeldung habe ich den folgenden Fehlerbericht gefunden: sourceforge.net/tracker/…
muriloq
@muriloq Klingt so, als wäre curses.hes nicht enthalten ( ERRwird dort definiert). Können Sie einen Blick darauf werfen /usr/include/ncurses/und sehen, ob es da ist?
Shawn Chin
0

Überprüfen Sie die Fischprobleme # 680 und # 319 bei GitHub, es gibt alles, was Sie brauchen, um Fisch auf Cygwin zu kompilieren.

Maciej Matys
quelle
2
Links zu externen Ressourcen werden empfohlen. Fügen Sie jedoch bitte einen Kontext hinzu, damit Ihre Mitbenutzer eine Vorstellung davon haben, was es ist und warum es dort ist. Geben Sie immer den relevantesten Teil eines wichtigen Links an, falls die Zielsite nicht erreichbar ist oder dauerhaft offline geschaltet wird.
Ashildr