Saya telah bereksperimen dengan Cygwin berusaha untuk mendapatkan "instalasi tanpa tulang", minimal. Saya menemukan bahwa menginstal utilitas seperti grep, gawk, sed dan alat serupa memiliki ketergantungan pada cygwin, base-Cygwin dan terkadang alat yang tidak diinginkan seperti bash, coreutils dll. tujuan. Saya hanya ingin mendapatkan alat dan dll yang diperlukan mereka diinstal dan mulai memeriksa paket Cygwin. Saya menemukan bahwa tidak menggunakan setup.exe yang disediakan oleh Cygwin adalah cara alternatif untuk menyelesaikan instalasi Cygwin minimal. Dan ini adalah bagaimana saya menyelesaikannya.
- Gunakan setup.exe yang disediakan oleh Cygwin untuk mengunduh semua paket - unduh saja dan tidak ada instal.
- Setelah unduhan berhasil diselesaikan, paket-paket individual seperti zlib, gawk, grep, libiconv ditemukan di bawah direktori x86 / release atau x86_64 / release.
- Setiap paket 'tar'red dan dikompresi menggunakan alat' xz 'atau bzip dan disimpan di direktori masing-masing.
Untuk menginstal alat tertentu seperti sed atau gawk, yang perlu dilakukan adalah mengekstrak alat yang dapat dieksekusi dan dependensinya (.dll)
Sebelum Anda mencoba yang berikut, pastikan Anda memiliki alat seperti
7z.exe, xz.exe, bzip2 atau lainnya yang mampu Uncompressing sebuah
Arsip .xz atau bzip
Menginstal contoh gawk di bawah ini:
- Ekstrak arsip gawk.exe dari gawk-4.1.3-1.tar.xz menggunakan perintah - 7z.exe e -so gawk-4.1.3-1.tar.xz | tar xvf -
- Setelah selesai, Anda harus menemukan gawk.exe dalam subfolder biasanya, usr / bin di bawah folder release / gawk
- Temukan dependensi untuk gawk - Anda dapat melakukan ini dalam beberapa cara.
Periksa file setup.ini Cygwin yang ditemukan di folder x86 atau x86_64. Cari string '@ gawk' dan di baris setelah baris ini Anda harus menemukan baris "wajib:" yang mencantumkan dependensi.
Milik saya berbunyi seperti ini - "membutuhkan: bash cygwin libgmp10 libintl8 libmpfr4 libreadline7"
Agar gawk dapat berjalan, bash bukanlah suatu keharusan karena kita memiliki shell perintah windows. (bash disertakan untuk mendapatkan beberapa dll yang diperlukan oleh gawk. Namun, hal itu menyebabkan lebih banyak file yang tidak perlu diinstal). Ketergantungan lainnya berisi file yang harus dijalankan oleh gawk. Ekstrak masing-masing paket di atas menggunakan alat seperti 7z atau xz ke file individual.
Setelah semua dependensi diekstraksi, salin alat yang Anda butuhkan (grep / sed / gawk) ke folder dan semua .dlls yang tergantung Anda sekarang dapat menjalankan alat Anda dengan set minimum. Instalasi cygwin-tulang.
Perhatian: Mungkin tidak cukup hanya mengekstrak dependensi yang tercantum dalam setup.ini untuk setiap alat. Terkadang, Anda mungkin perlu menjalankan / menjalankan alat untuk menemukan bahwa ada lebih banyak dll yang diperlukan.
Ada cara lain untuk mengetahui dll yang diperlukan oleh exe - Anda dapat menggunakan dumpbin dari MS atau dependensi walker, ndepends atau alat serupa untuk menemukan daftar dll dependen
Berkonsultasi - https://stackoverflow.com/questions/362560/how-do-i-detect-the-dlls-required-by-an-application https://stackoverflow.com/questions/475148/how-do-i-find-out-which-dlls-an-executable-will-load
Saya juga brute memaksa info dll dependen dengan hanya menjalankan alat dan menginstal dll hilang yang tercantum satu per satu dengan mengekstraksi dari paket yang diperlukan.
Ketika Anda menjalankan exe dan jika ada kesalahan dengan pesan .dll yang hilang, cari paket yang berisi dll di sini - https://cygwin.com/cgi-bin2/package-grep.cgi . Masukkan nama lengkap / sebagian dari dll yang hilang untuk menemukan nama paket yang berisi dll.
Akhirnya, saya berakhir dengan instalasi cygwin telanjang-tulang hanya dengan alat dan dll yang saya butuhkan. Contoh: gawk - gawk.exe dan dll berikut - 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 dan lain-lain - cygwin1.dll, cygintl-8.dll
Semoga ini bermanfaat. Penginstal Cywin juga melakukan hal-hal mendasar, yang tidak akan saya bahas di sini