2013-04-08 175 views
1

我想將特定的Cygwin安裝作爲一個zip文件歸檔,以便在不同的Windows PC上進行部署。在調查問題後,建議的方法是「試錯」Cygwin安裝和包選擇(What packages should I install with Cygwin to make it not bloated but also have everything I would need as a developer?) 可能更具體的需求將有所幫助:我需要最小化的Cygwin安裝+ Perl +着名的Perl庫(Win32: :API等)+ GNU make + Gcc編譯工具。我應該在安裝Cygwin時選擇哪些軟件包?最小Cygwin安裝+ Perl + Gcc

+0

我很確定Cygwin安裝寫入Windows註冊表。如果是這樣,我不認爲一個zip文件存檔將會正常工作。 – 2013-04-08 13:00:47

+0

@Mike - 如果在另一臺Windows PC上將c:\ cygwin複製到c:\ cygwin,則所有cygwin平臺都能正常工作。唯一需要的是將c:\ cygwin \ bin添加到PATH環境 – Sergey 2013-04-14 08:06:49

回答

0

對於Cygwin的依賴系統,您只需要進行新的安裝,取消選擇每個軟件包,然後選擇Perl,make和gcc,它將只安裝所需的軟件包。我認爲一些相關的軟件包只是推薦的,並不是必需的,但Cygwin安裝程序可方便地將它們標記爲推薦的。

+0

我嘗試了標準設置。我需要猜測我應該選擇什麼的問題。我還沒有在互聯網上找到任何可能的安裝設置的明確說明 – Sergey 2013-04-14 08:09:09

1

我一直在試驗Cygwin試圖獲得「最基本的安裝」。我發現安裝像grep,gawk,sed和類似工具的工具對cygwin,base-Cygwin和有時候不需要的工具(如bash,coreutils等)有依賴性,

我想只安裝工具及其所需的dll並開始檢查Cygwin軟件包。我發現不使用Cygwin提供的setup.exe是完成最小Cygwin安裝的替代方法。

這就是我如何完成它。

  1. 只從Cygwin鏡像 下載所需的軟件包使用ftp或http的網站。或者,您可以使用Cygwin提供的setup.exe 下載所有軟件包 - 僅下載和 不安裝。
  2. 一旦下載成功完成後,個別 包zlib的一樣,GAWK,grep的,libiconv的是在 的x86 /釋放或x86_64/release目錄下找到每個包「tar'red和 使用工具壓縮‘XZ’或bzip並存儲在相應的 目錄中。
  3. 要安裝像sed一個特定的工具或呆子,那 需求都做,是提取工具可執行文件及其 依賴文件(.dll)

在嘗試下面,請確保您有像7z.exe,xz.exe,bzip2的或其它的能夠解壓縮的.xz或存檔的bZIP

下面安裝GAWK示例的工具:從GAWK-4.1

  1. 提取gawk.exe。 3-1.tar.xz檔案e使用命令 - 7z.exe e -so gawk-4.1.3-1.tar.xz |焦油xvf命令 -
  2. 一旦做到這一點,你應該在一個子文件夾中找到gawk.exe通常,釋放/ GAWK文件夾
  3. 下USR/bin中查找gawk的依賴關係 - 你可以在一對夫婦的方式做到這一點。

檢查在x86或x86_64文件夾中找到的Cygwin setup.ini文件。 查看字符串'@ gawk',並在該行後面的行中找到列出依賴關係的「requires:」行。 我讀到這樣的 - 「要求:打擊cygwin libgmp10 libintl8 libmpfr4 libreadline7」

爲了gawk運行,bash不是必須的,因爲我們有Windows命令shell。 (包括bash以獲得gawk所需的其他一些dll,但是這會導致更多不必要的文件被安裝)。其他依賴包含gawk需要運行的文件。

使用諸如7z或xz之類的工具將上述每個軟件包提取到單個文件中。

所有的依賴提取完成後,你需要的工具(S)(的grep/SED/GAWK)複製到文件夾和所有相關的.dll

您現在應該能夠用最小的運行工具一套赤裸裸的cygwin安裝中需要的.dll文件。

注意:這可能是不夠的,只是提取的setup.ini每個工具中列出的依賴關係。有時,您可能需要執行/運行該工具以發現需要更多的dll。

有找出由一個.exe所需的dll文件的其他方式 - 您可以使用DUMPBIN從MS或依賴學步車,ndepends或類似的工具來查找相關的DLL列表

諮詢 - How do I detect the DLLs required by an application? How do I find out which dlls an executable will load?

我也野蠻被迫只是通過一個由所需的軟件包解壓運行該工具和安裝列出的一個丟失的dll文件這個dll信息。

當您運行一個工具並出現一個缺少.dll消息的錯誤時,請在此處搜索包含該dll的軟件包 - https://cygwin.com/cgi-bin2/package-grep.cgi。輸入缺少的dll的全部/部分名稱以查找包含該dll的包的名稱。

最終,我結束了一個只有我需要的工具和dll的裸機cygwin安裝。例如:gawk - gawk.exe和以下dll - 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和dll - cygwin1.dll,cygintl-8.dll

希望這對您有用。 Cywin安裝程序也會重新建立基礎,我不會冒險進入這裏。