Có một công cụ nào trong gói Cygwin tương tự như apt-get
trên Debian hoặc yum
trên redhat cho phép tôi cài đặt các thành phần từ dòng lệnh không?
Có một công cụ nào trong gói Cygwin tương tự như apt-get
trên Debian hoặc yum
trên redhat cho phép tôi cài đặt các thành phần từ dòng lệnh không?
Câu trả lời:
Không có công cụ cụ thể nào trong trình cài đặt 'setup.exe' cung cấp chức năng của apt-get. Tuy nhiên, có một trình cài đặt gói dòng lệnh cho Cygwin có thể được tải xuống riêng, nhưng nó không hoàn toàn ổn định và phụ thuộc vào cách giải quyết.
apt-cyg: http://github.com/transcode-open/apt-cyg
Kiểm tra tab vấn đề cho dự án để xem các vấn đề đã biết.
setup-x86.exe -q -P packagename1,packagename2
. Không phải là ưa thích như apt-get
hoặc thậm chí apt-cyg
nhưng nó thực hiện các mẹo trong hầu hết các trường hợp. Và bạn cũng có thể chạy nó từ cmd.exe
(sau khi đóng Cygwin).
Thiết lập của Cygwin chấp nhận các đối số dòng lệnh để cài đặt các gói từ dòng lệnh.
ví dụ: setup-x86.exe -q -P packagename1,packagename2
để cài đặt các gói mà không có bất kỳ tương tác GUI nào ('chế độ thiết lập không giám sát').
(Lưu ý rằng bạn cần sử dụng setup-x86.exe
hoặc setup-x86_64.exe
khi thích hợp.)
Xem http://cygwin.com/packages/ để biết danh sách gói.
setup-x86_64 --packages="openssh,python"
Để cài đặt thuận tiện hơn, bạn có thể muốn sử dụng
apt-cyg
làm trình quản lý gói của mình. Cú pháp của nó tương tự
apt-get
, đó là một điểm cộng. Đối với điều này, hãy làm theo các bước trên và sau đó sử dụng Cygwin Bash cho các bước sau
wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
chmod +x apt-cyg
mv apt-cyg /usr/local/bin
Bây giờ apt-cyg
được cài đặt. Dưới đây là một vài ví dụ về việc cài đặt một số gói
apt-cyg install nano
apt-cyg install git
apt-cyg install ca-certificates
wget
và nó tải xuống apt-cyg
mà không có vấn đề. Tại thời điểm nào 404 xuất hiện?
Có tồn tại một số tập lệnh, có thể được sử dụng làm trình quản lý gói đơn giản cho Cygwin. Nhưng điều quan trọng cần biết là chúng luôn luôn bị giới hạn bởi vì ... ehm ... Windows.
Cài đặt hoặc gỡ bỏ các gói là tốt, mỗi người quản lý gói cho Cygwin có thể làm điều đó. Nhưng cập nhật là một nỗi đau vì Windows không cho phép bạn ghi đè lên một tệp thực thi, hiện đang chạy. Vì vậy, bạn không thể cập nhật, ví dụ Cygwin DLL hoặc bất kỳ gói nào có chứa tệp thực thi hiện đang chạy từ chính Cygwin. Ngoài ra còn có ghi chú này trên trang Cài đặt Cygwin :
"Lý do cơ bản để không có trình quản lý gói đầy đủ tính năng là vì một chương trình như vậy sẽ cần quyền truy cập đầy đủ vào tất cả các chức năng POSIX của Cygwin. Tuy nhiên, điều đó rất khó để cung cấp trong môi trường không có Cygwin, như trước tiên là tồn tại Ngoài ra, Windows không dễ dàng cho phép ghi đè các tệp thực thi đang sử dụng nên việc cài đặt phiên bản mới của Cygwin DLL trong khi trình quản lý gói đang sử dụng DLL là vấn đề. "
Thiết lập của Cygwin sử dụng sổ đăng ký Windows để ghi đè lên các tệp thực thi đang sử dụng và phương pháp này yêu cầu khởi động lại Windows . Do đó, tốt hơn hết là đóng tất cả các quy trình Cygwin trước khi cập nhật các gói , vì vậy bạn không phải khởi động lại máy tính để thực sự áp dụng các thay đổi. Việc cài đặt một gói mới nên hoàn toàn không có bất kỳ rắc rối nào. Tôi không nghĩ rằng bất kỳ người quản lý gói nào ngoại trừ Cygwin đều setup.exe
thực hiện bất kỳ phương pháp nào để ghi đè lên các tệp đang sử dụng, vì vậy nó sẽ thất bại nếu không thể ghi đè lên chúng.
Cập nhật : kho lưu trữ đã bị vô hiệu hóa gần đây do vấn đề bản quyền ( gỡ xuống DMCA ). Có vẻ như chủ sở hữu của kho lưu trữ đã phát hành triệt phá DMCA trên kho lưu trữ của riêng mình và tạo ra một dự án mới gọi là Sage (xem dưới đây).
Một trong những tốt nhất cho tôi. Đơn giản vì đó là một trong những thứ gần đây nhất. Nó không sử dụng Cygwin setup.exe
, nó thực hiện lại, làm gì setup.exe
. Nó hoạt động chính xác cho cả hai nền tảng - x86 cũng như x86_64 . Có rất nhiều dĩa với ít nhiều tính năng bổ sung. Ví dụ, ngã ba kou1okada là một trong những phiên bản cải tiến , thực sự tuyệt vời.
apt-cyg chỉ là một kịch bản shell, không có cài đặt. Chỉ cần tải xuống (hoặc sao chép kho lưu trữ), làm cho nó có thể thực thi được và sao chép nó ở đâu đó vào 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
Ngoài ra còn có một loạt các dĩa với các tính năng khác nhau.
Một trình quản lý gói khác được triển khai như một kịch bản shell. Tôi đã không thử nó nhưng nó thực sự có vẻ tốt.
Nó có thể tìm kiếm các gói trong một kho lưu trữ, liệt kê các gói trong một danh mục, kiểm tra các phụ thuộc, liệt kê các tệp gói, v.v. Nó có các tính năng mà các nhà quản lý gói khác không có.
Ngã ba gốc bỏ hoang cyg-aptvới những cải tiến và sửa lỗi. Nó có khá nhiều tính năng và được triển khai trong Python. Cài đặt được thực hiện bằng cách sử dụng make
.
Nếu bạn đã sử dụng Chocolatey để cài đặt Cygwin, bạn có thể cài đặt gói cyg-get , đây thực sự là một trình bao bọc đơn giản xung quanh Cygwin setup.exe
được viết bằng PowerShell.
Nó cũng có chế độ dòng lệnh . Hơn nữa, nó cho phép bạn nâng cấp tất cả các gói đã cài đặt cùng một lúc (cũng như apt-get upgrade
trên Linux dựa trên Debian).
Ví dụ sử dụng:
setup-x86_64.exe -q --packages=bash,vim
Bạn có thể tạo bí danh để sử dụng dễ dàng hơn, ví dụ:
alias cyg-get="/cygdrive/d/path/to/cygwin/setup-x86_64.exe -q -P"
Sau đó, bạn có thể cài đặt gói Vim với:
cyg-get vim
sage
là một nhánh của apt-cyg
những người đóng góp tích cực nhất của nó trong một hoặc hai năm qua (Steven Penny). Có vẻ như đầu năm nay, ông đã có một số bất đồng với apt-cyg
tác giả ban đầu (Stephen Jungels) và đưa ra bản gỡ xuống DMCA khi ông rẽ nhánh dự án. Vì Jungels (còn gọi là Transcode) được xác minh là tác giả ban đầu của dự án, GitHub đã khôi phục dự án ban đầu ngay sau đó. Hiện tại, cả hai dự án đều có sẵn - mặc dù dự án ban đầu chưa có bất kỳ cập nhật mã mới nào kể từ khi chia tách. Đó là một tình huống lộn xộn, thực sự.
Đầu tiên, tải xuống trình cài đặt tại: https://cygwin.com/setup-x86_64.exe (Windows 64bit), sau đó:
# 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
ví dụ
# install vim
cygwin vim
# see other options
cygwin --help
Tôi muốn một giải pháp cho việc này tương tự apt-get --print-uris
, nhưng không may là apt-cyg không làm điều này. Sau đây là một giải pháp cho phép tôi chỉ tải xuống các gói tôi cần, với sự phụ thuộc của chúng và sao chép chúng vào mục tiêu để cài đặt. Đây là một tập lệnh bash phân tích đầu ra apt-cyg
thành một danh sách các 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
Ở trên sẽ in ra các đường dẫn của các gói cần tải xuống, liên quan đến root nhân bản cygwin, bỏ qua mọi gói đã được cài đặt. Để tải chúng xuống, tôi đã viết đầu ra thành một tệp cygwin-packages-list
và sau đó sử dụng wget:
mirror=http://cygwin.mirror.constant.com/
uris=$(for line in $(cat cygwin-packages-list); do echo "$mirror$line"; done)
wget -x $uris
Trình cài đặt sau đó có thể được sử dụng để cài đặt từ thư mục bộ đệm cục bộ. Lưu ý rằng để làm việc này, tôi cần sao chép setup.ini
từ bộ đệm của gói cygwin trước đó vào thư mục chứa các tệp đã tải xuống (nếu không trình cài đặt không biết là gì).
Câu hỏi cũ, nhưng vẫn có liên quan. Đây là những gì làm việc cho tôi ngày hôm nay (26/11/16).
Từ vỏ bash:
lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
install apt-cyg /bin
wget
hoặc curl
có lẽ là một công cụ tốt hơn cho việc này. (Và cá nhân, tôi sẽ cài đặt nó trong một số thư mục khác trong tôi $PATH
chứ không phải trong /bin
.)
Câu trả lời của Dawid Ferenczy khá đầy đủ nhưng sau khi tôi thử hầu hết tất cả các lựa chọn của anh ấy, tôi thấy rằng cyg-get của Chocolate là tốt nhất (ít nhất là cách duy nhất tôi có thể làm việc).
Tôi đã muốn cài đặt wget
, các bước là thế này:
choco install cyg-get
Sau đó:
cyg-get wget
Thông thường trước khi cài đặt một gói, người ta phải biết tên chính xác của nó:
# 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>>"