Ich habe mit Cygwin experimentiert und versucht, eine "Bare-Bones", minimale Installation zu bekommen. Ich finde, dass die Installation von Dienstprogrammen wie grep, gawk, sed und ähnlichen Tools Abhängigkeiten von Cygwin, Base-Cygwin und manchmal unerwünschten Tools wie Bash, Coreutils usw. aufweist. Ich habe nicht versucht, vollständig zu verstehen, warum diese Abhängigkeit besteht, aber das ist nicht meine Tor. Ich wollte nur die Tools und die erforderlichen DLLs installieren und begann, das Cygwin-Paket zu untersuchen. Ich habe festgestellt, dass die Nichtverwendung der von Cygwin bereitgestellten setup.exe eine alternative Möglichkeit ist, minimale Cygwin-Installationen durchzuführen. Und so habe ich es geschafft.
- Verwenden Sie die von Cygwin bereitgestellte setup.exe, um alle Pakete herunterzuladen - nur herunterladen und nicht installieren.
- Sobald der Download erfolgreich abgeschlossen wurde, befinden sich einzelne Pakete wie zlib, gawk, grep, libiconv im Verzeichnis x86 / release oder x86_64 / release.
- Jedes Paket wird mit dem Tool 'xz' oder bzip 'tar'red und komprimiert und in den entsprechenden Verzeichnissen gespeichert.
Um ein bestimmtes Tool wie sed oder gawk zu installieren, müssen Sie lediglich die ausführbare Datei des Tools und ihre Abhängigkeiten (.dll) extrahieren.
Bevor Sie Folgendes versuchen, stellen Sie bitte sicher, dass Sie über ein Tool wie 7z.exe, xz.exe, bzip2 oder ein anderes verfügen, mit dem ein .xz- oder bzip-Archiv dekomprimiert werden kann
Beispiel für die Installation von gawk unten:
- Extrahieren Sie gawk.exe aus dem Archiv gawk-4.1.3-1.tar.xz mit dem Befehl - 7z.exe e -so gawk-4.1.3-1.tar.xz | tar xvf -
- Sobald dies erledigt ist, sollten Sie gawk.exe normalerweise in einem Unterordner finden, usr / bin unter dem Ordner release / gawk
- Finden Sie die Abhängigkeiten für gawk - Sie können dies auf verschiedene Arten tun.
Untersuchen Sie die Datei Cygwin setup.ini im Ordner x86 oder x86_64. Suchen Sie nach der Zeichenfolge '@ gawk' und in den Zeilen nach dieser Zeile sollten Sie eine Zeile "require:" finden, in der die Abhängigkeiten aufgeführt sind.
Meins lautet wie folgt: "erfordert: bash cygwin libgmp10 libintl8 libmpfr4 libreadline7"
Damit gawk ausgeführt werden kann, ist bash kein Muss, da wir die Windows-Befehlsshell haben. (Bash ist enthalten, um ein paar andere DLLs zu erhalten, die von Gawk benötigt werden. Dies führt jedoch dazu, dass viel mehr unnötige Dateien installiert werden.) Die anderen Abhängigkeiten enthalten Dateien, die gawk ausführen muss. Extrahieren Sie jedes der oben genannten Pakete mit Tools wie 7z oder xz in einzelne Dateien.
Nachdem alle Abhängigkeiten extrahiert wurden, kopieren Sie die benötigten Tools (grep / sed / gawk) in einen Ordner und alle abhängigen DLLs. Sie sollten nun in der Lage sein, Ihr Tool mit dem Mindestsatz an DLLs auszuführen, die in einem Bare erforderlich sind -Bones Cygwin Installation.
Achtung: Es reicht möglicherweise nicht aus, nur die in setup.ini aufgeführten Abhängigkeiten für jedes Tool zu extrahieren. Manchmal müssen Sie das Tool möglicherweise ausführen / ausführen, um festzustellen, dass weitere DLLs erforderlich sind.
Es gibt andere Möglichkeiten, die von einer exe benötigten DLLs herauszufinden - Sie können dumpbin von MS oder Dependency Walker, ndepends oder ähnlichen Tools verwenden, um die Liste der abhängigen DLLs zu finden
Konsultieren Sie - /programming/362560/how-do-i-detect-the-dlls-required-by-an-application /programming/475148/how-do-i -find-out-which-dlls-eine-ausführbare-Datei-wird geladen
Ich habe auch die abhängigen DLL-Informationen brutal erzwungen, indem ich einfach das Tool ausgeführt und die fehlenden DLLs nacheinander installiert habe, indem ich sie aus den erforderlichen Paketen extrahiert habe.
Wenn Sie eine Exe ausführen und ein Fehler mit einer fehlenden DLL-Nachricht auftritt, suchen Sie hier nach dem Paket, das die DLL enthält - https://cygwin.com/cgi-bin2/package-grep.cgi . Geben Sie den vollständigen / teilweisen Namen der fehlenden DLL ein, um den Namen des Pakets zu finden, das die DLL enthält.
Schließlich habe ich eine reine Cygwin-Installation mit nur den Tools und DLLs erhalten, die ich benötige. Beispiel: gawk - gawk.exe und die folgenden DLLs - cygwin1.dll, cyggmp-10.dll, cygiconv-2.dll, cygintl-8.dll, cygmpfr-4.dll, cyggcc_s-seh-1.dll, cygncursesw- 10.dll, cygreadline7.dll
sed - sed.exe und dlls - cygwin1.dll, cygintl-8.dll
Hoffe das wird nützlich gefunden. Das Cywin-Installationsprogramm führt auch eine DLL-Neuausrichtung durch, auf die ich hier nicht eingehen werde