Apakah ada alat dalam paket Cygwin mirip dengan apt-get
di Debian atau yum
di redhat yang memungkinkan saya untuk menginstal komponen dari baris perintah?
Apakah ada alat dalam paket Cygwin mirip dengan apt-get
di Debian atau yum
di redhat yang memungkinkan saya untuk menginstal komponen dari baris perintah?
Jawaban:
Tidak ada alat khusus di penginstal 'setup.exe' yang menawarkan fungsionalitas apt-get. Namun, ada penginstal paket baris-perintah untuk Cygwin yang dapat diunduh secara terpisah, tetapi tidak sepenuhnya stabil dan bergantung pada solusi.
apt-cyg: http://github.com/transcode-open/apt-cyg
Periksa tab masalah untuk proyek untuk melihat masalah yang diketahui.
setup-x86.exe -q -P packagename1,packagename2
. Tidak semewah apt-get
atau bahkan apt-cyg
tetapi itu berhasil dalam banyak kasus. Dan Anda juga dapat menjalankan ini dari cmd.exe
(setelah menutup Cygwin).
Setup Cygwin menerima argumen baris perintah untuk menginstal paket dari baris perintah.
mis. setup-x86.exe -q -P packagename1,packagename2
untuk menginstal paket tanpa interaksi GUI ('mode pengaturan tanpa pengawasan').
(Perhatikan bahwa Anda perlu menggunakan setup-x86.exe
atau setup-x86_64.exe
jika perlu.)
Lihat http://cygwin.com/packages/ untuk daftar paket.
setup-x86_64 --packages="openssh,python"
Untuk penginstal yang lebih nyaman, Anda mungkin ingin menggunakan
apt-cyg
sebagai manajer paket Anda. Sintaksnya mirip dengan
apt-get
, yang merupakan nilai tambah. Untuk ini, ikuti langkah-langkah di atas dan kemudian gunakan Cygwin Bash untuk langkah-langkah berikut
wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
chmod +x apt-cyg
mv apt-cyg /usr/local/bin
Sekarang apt-cyg
sudah terpasang. Berikut adalah beberapa contoh menginstal beberapa paket
apt-cyg install nano
apt-cyg install git
apt-cyg install ca-certificates
wget
dan unduhan apt-cyg
tanpa masalah. Kapan 404 muncul?
Ada beberapa skrip, yang dapat digunakan sebagai manajer paket sederhana untuk Cygwin. Tapi penting untuk diketahui, bahwa mereka akan selalu sangat terbatas , karena ... ehm ... Windows.
Menginstal atau menghapus paket tidak masalah, setiap manajer paket untuk Cygwin dapat melakukannya. Tetapi memperbarui itu menyusahkan karena Windows tidak memungkinkan Anda untuk menimpa executable, yang saat ini sedang berjalan. Jadi, Anda tidak dapat memperbarui mis. Cygwin DLL atau paket apa pun yang berisi executable yang sedang berjalan dari Cygwin itu sendiri. Ada juga catatan ini di halaman Instalasi Cygwin :
"Alasan dasar untuk tidak memiliki manajer paket berfitur lengkap adalah bahwa program seperti itu akan membutuhkan akses penuh ke semua fungsionalitas POSIX Cygwin. Namun, sulit untuk menyediakan dalam lingkungan yang bebas Cygwin, seperti yang ada di pertama instalasi. Selain itu, Windows tidak dengan mudah memungkinkan menimpa executable yang sedang digunakan sehingga menginstal versi baru dari Cygwin DLL saat manajer paket menggunakan DLL bermasalah. "
Setup Cygwin menggunakan registri Windows untuk menimpa executable yang sedang digunakan dan metode ini membutuhkan reboot Windows . Oleh karena itu, lebih baik untuk menutup semua proses Cygwin sebelum memperbarui paket , jadi Anda tidak perlu me-reboot komputer Anda untuk benar-benar menerapkan perubahan. Instalasi paket baru harus sepenuhnya tanpa gangguan. Saya tidak berpikir satu pun dari manajer paket kecuali Cygwin setup.exe
mengimplementasikan metode apa pun untuk menimpa file yang digunakan, jadi itu hanya akan gagal jika tidak bisa menimpa mereka.
Pembaruan : repositori dinonaktifkan baru-baru ini karena masalah hak cipta ( penghapusan DMCA ). Ini terlihat seperti pemilik repositori mengeluarkan pencopotan DMCA pada sendiri repositori dan menciptakan sebuah proyek baru yang disebut Sage (lihat di bawah).
Yang terbaik untukku. Hanya karena itu salah satu yang terbaru. Itu tidak menggunakan Cygwin setup.exe
, melainkan mengimplementasikan kembali, apa setup.exe
. Ini berfungsi dengan baik untuk kedua platform - x86 dan juga x86_64 . Ada banyak garpu dengan fitur tambahan yang kurang lebih. Misalnya, garpu kou1okada adalah salah satu versi yang disempurnakan , yang benar-benar hebat.
apt-cyg hanyalah skrip shell, tidak ada instalasi. Cukup unduh (atau gandakan repositori), buat itu dapat dieksekusi dan salin ke suatu tempat ke PATH:
chmod +x apt-cyg # set executable bit
mv apt-cyg /usr/local/bin # move somewhere to PATH
# ...and use it:
apt-cyg install vim
Ada juga banyak garpu dengan fitur berbeda.
Manajer paket lain diimplementasikan sebagai skrip shell. Saya tidak mencobanya tetapi sebenarnya terlihat bagus.
Itu dapat mencari paket dalam repositori, daftar paket dalam kategori, memeriksa dependensi, daftar file paket, dan banyak lagi. Ini memiliki fitur yang tidak dimiliki manajer paket lain.
Garpu asli yang ditinggalkan cyg-aptdengan perbaikan dan perbaikan bug. Ini memiliki banyak fitur dan diimplementasikan dalam Python. Instalasi dibuat menggunakan make
.
Jika Anda menggunakan Chocolatey untuk menginstal Cygwin, Anda dapat menginstal paket cyg-get , yang sebenarnya merupakan pembungkus sederhana seputar Cygwin yang setup.exe
ditulis dalam PowerShell.
Ini juga memiliki mode baris perintah . Selain itu, ini memungkinkan Anda untuk memutakhirkan semua paket yang diinstal sekaligus (seperti apt-get upgrade
halnya pada Linux berbasis Debian).
Contoh penggunaan:
setup-x86_64.exe -q --packages=bash,vim
Anda dapat membuat alias untuk penggunaan yang lebih mudah, misalnya:
alias cyg-get="/cygdrive/d/path/to/cygwin/setup-x86_64.exe -q -P"
Maka Anda dapat, misalnya, menginstal paket Vim dengan:
cyg-get vim
sage
adalah pertanda apt-cyg
oleh kontributor paling aktif selama satu atau dua tahun terakhir (Steven Penny). Tampaknya awal tahun ini dia memiliki beberapa ketidaksepakatan dengan apt-cyg
penulis asli (Stephen Jungels) dan mengeluarkan penghentian DMCA ketika dia melakukan forked pada proyek tersebut. Karena Jungels (alias Transcode) diverifikasi sebagai penulis asli proyek, GitHub memulihkan proyek asli segera setelah itu. Saat ini, kedua proyek tersedia - meskipun proyek asli belum memiliki pembaruan kode baru sejak pemisahan. Ini situasi yang berantakan, sungguh.
Pertama, unduh pemasang di: https://cygwin.com/setup-x86_64.exe (Windows 64bit), lalu:
# move installer to cygwin folder
mv C:/Users/<you>/Downloads/setup-x86_64.exe C:/cygwin64/
# add alias to bash_aliases
echo "alias cygwin='C:/cygwin64/setup-x86_64.exe -q -P'" >> ~/.bash_aliases
source ~/.bash_aliases
# add bash_aliases to bashrc if missing
echo "source ~/.bash_aliases" >> ~/.profile
misalnya
# install vim
cygwin vim
# see other options
cygwin --help
Saya ingin solusi untuk ini mirip apt-get --print-uris
, tetapi sayangnya apt-cyg tidak melakukan ini. Berikut ini adalah solusi yang memungkinkan saya untuk mengunduh hanya paket yang saya butuhkan, dengan dependensinya, dan menyalinnya ke target untuk instalasi. Berikut ini adalah skrip bash yang mem-parsing output apt-cyg
menjadi daftar URI:
#!/usr/bin/bash
package=$1
depends=$( \
apt-cyg depends $package \
| perl -ne 'while ($x = /> ([^>\s]+)/g) { print "$1\n"; }' \
| sort \
| uniq)
depends=$(echo -e "$depends\n$package")
for curpkg in $depends; do
if ! grep -q "^$curpkg " /etc/setup/installed.db; then
apt-cyg show $curpkg \
| perl -ne '
if ($x = /install: ([^\s]+)/) {
print "$1\n";
}
if (/\[prev\]/) {
exit;
}'
fi
done
Hal di atas akan mencetak jalur paket yang perlu diunduh, relatif terhadap cygwin mirror root, menghilangkan paket apa pun yang sudah diinstal. Untuk mengunduhnya, saya menulis output ke file cygwin-packages-list
dan kemudian menggunakan wget:
mirror=http://cygwin.mirror.constant.com/
uris=$(for line in $(cat cygwin-packages-list); do echo "$mirror$line"; done)
wget -x $uris
Penginstal kemudian dapat digunakan untuk menginstal dari direktori cache lokal. Perhatikan bahwa agar ini berfungsi, saya perlu menyalin setup.ini
dari cache paket cygwin sebelumnya ke direktori dengan file yang diunduh (jika installer tidak tahu apa apa).
Pertanyaan lama, tetapi masih relevan. Inilah yang bekerja untuk saya hari ini (26/6/16).
Dari bash shell:
lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
install apt-cyg /bin
wget
atau curl
mungkin alat yang lebih baik untuk ini. (Dan secara pribadi, saya akan menginstalnya di beberapa direktori lain $PATH
daripada di /bin
.)
Jawaban Dawid Ferenczy cukup lengkap tetapi setelah saya mencoba hampir semua opsinya, saya menemukan bahwa Chocolate-Cyg-get adalah yang terbaik (setidaknya satu-satunya yang bisa saya peroleh).
Saya ingin menginstal wget
, langkah-langkahnya adalah ini:
choco install cyg-get
Kemudian:
cyg-get wget
Biasanya sebelum menginstal paket kita harus tahu nama persisnya:
# define a string to search
export to_srch=perl
# get html output of search and pick only the cygwin package names
wget -qO- "https://cygwin.com/cgi-bin2/package-grep.cgi?grep=$to_srch&arch=x86_64" | \
perl -l -ne 'm!(.*?)<\/a>\s+\-(.*?)\:(.*?)<\/li>!;print $2'
# and install
# install multiple packages at once, note the
setup-x86_64.exe -q -s http://cygwin.mirror.constant.com -P "<<chosen_package_name>>"