Nâng cấp và cài đặt các gói thông qua dòng lệnh Cygwin?


113

Tôi là một người dùng máy tính mù sử dụng Cygwin.

Chương trình cài đặt không dễ truy cập: nâng cấp, cài đặt và xóa các gói cụ thể là khá khó thực hiện do bạn phải sử dụng tổ hợp phím chuột mô phỏng để nhấp và cuộn.

Có cách nào để tự cài đặt / nâng cấp gói hoặc cài đặt / nâng cấp chúng thông qua dòng lệnh không?

Câu trả lời:


121

Cài đặt apt-cyg :

lynx -source https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
install apt-cyg /bin

Sau đó, bạn sẽ có thể cài đặt gói "lynx" bao gồm các phụ thuộc bằng cách chạy:

apt-cyg install lynx

4
Kho lưu trữ chưa được di chuyển : một khiếu nại DMCA đã được ban hành chuyển mã đơn giản-open / apt-cyg. Tình cờ, người dùng Github svnpenn đã tạo ra một ngã ba có tên là "hiền nhân" cùng một lúc, tự xưng là người kế vị của nó
Lucas Cimon


Tôi đã phải chmod + x apt-cyg để nó có thể được thực thi (chỉ trong trường hợp nó giúp được ai đó)
Pedro A

23

Vì một số người tuyên bố chính xác rằng apt-cygbản thân cần wget và để giúp apt-cygbạn cần wget, có một giải pháp bash duy nhất để bootstrap wgettrong bash thuần.

Tạo một chức năng như thế này trong vỏ bash mintty của bạn:

function __wget() {
    : ${DEBUG:=0}
    local URL=$1
    local tag="Connection: close"
    local mark=0

    if [ -z "${URL}" ]; then
        printf "Usage: %s \"URL\" [e.g.: %s http://www.google.com/]" \
               "${FUNCNAME[0]}" "${FUNCNAME[0]}"
        return 1;
    fi
    read proto server path <<<$(echo ${URL//// })
    DOC=/${path// //}
    HOST=${server//:*}
    PORT=${server//*:}
    [[ x"${HOST}" == x"${PORT}" ]] && PORT=80
    [[ $DEBUG -eq 1 ]] && echo "HOST=$HOST"
    [[ $DEBUG -eq 1 ]] && echo "PORT=$PORT"
    [[ $DEBUG -eq 1 ]] && echo "DOC =$DOC"

    exec 3<>/dev/tcp/${HOST}/$PORT
    echo -en "GET ${DOC} HTTP/1.1\r\nHost: ${HOST}\r\n${tag}\r\n\r\n" >&3
    while read line; do
        [[ $mark -eq 1 ]] && echo $line
        if [[ "${line}" =~ "${tag}" ]]; then
            mark=1
        fi
    done <&3
    exec 3>&-
}

Bây giờ bạn có thể sử dụng nó gần giống như wget:

__wget http://apt-cyg.googlecode.com/svn/trunk/apt-cyg > /usr/bin/apt-cyg && chmod 0755 /usr/bin/apt-cyg

Xin lỗi, @moreaki, nhưng có một điều tôi không thể hiểu được từ apt-cyg: trong trình cài đặt CygWin Windows cổ điển, tôi có thể / phải chỉ định vị trí kho / gói, cho dù đó là một trong (rất nhiều) tải xuống ftp / http trang web, hoặc ổ đĩa cục bộ (trong máy tính của tôi). Tôi không thấy tùy chọn như vậy trong trang web chính thức. Trường hợp apt-cygtải về các gói từ đâu?
Sopalajo de Arrierez

Xin lỗi tôi trả lời muộn. Tôi vừa lướt qua mã apt-cyg trên trang web googlecode chính thức và với tôi có vẻ như trang tải xuống được chọn dường như http://mirrors.kernel.org/sourceware/cygwin, như được chỉ định trong findworkspace(), khi bạn chưa chỉ định nhân bản bằng tùy chọn dòng lệnh -m. Nếu bạn chỉ định dòng lệnh, thông tin máy chủ nhân bản sẽ được ghi vào /etc/setup/last-mirror.
Moreaki

cài đặt apt-cyg không còn phụ thuộc vào wget, vì vậy không có gì trong số này có thể quan trọng nữa? Họ sử dụng lynx (dường như được tích hợp sẵn trong cygwin?) Trên trang web của họ.
akauppi

@steven Lý do cho việc chỉnh sửa bán buôn thay đổi nhiều hơn một phần đáng kể là gì? Đó là khá nhiều câu trả lời riêng biệt
ngẫu nhiên

1
Sau đó downvote và cung cấp một câu trả lời cạnh tranh. Nếu bạn là người duy trì apt-cyg, không có dấu hiệu nào trong hồ sơ của bạn hoặc trong bản tóm tắt chỉnh sửa của bạn hoặc bất cứ nơi nào có thể nhìn thấy gợi ý rằng loại thẩm quyền hoặc nền tảng cho steamroll trong các loại chỉnh sửa này
ngẫu nhiên

21

Các cài đặt apt-CYG chính thức phương pháp là:

lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
install apt-cyg /bin

Hai bước tốt hơn ba. Sau đó:

apt-cyg install nano

Nhân tiện, để làm cho nó hoạt động, bạn sẽ cần cài đặt wget , tar , gawkbzip2 để sử dụng apt-cyg. Ngoài wget, những cái khác đi kèm với cài đặt Cygwin mặc định.


2
Đối với Cygwin 64 bit, svnapt-cygcó thể bị hỏng. Vì vậy, bạn có thể phải sử dụng three stepphương pháp wget để cài đặt apt-cygvà sau đó thay thế $mirror/setup...bằng $mirror/x86_64/setup...trong dòng 98 và 105 của tệp apt-cyg.
sagunms

17

Câu hỏi cũ, nhưng đối với những người khác mà google và đã có ở đây: Thiết lập chính thức có các đối số dòng lệnh cho phép tôi chuẩn bị tập lệnh * .bat đơn giản - chỉ cần đặt dòng sau vào ví dụ "install-pkg.bat" và đặt tệp đó vào thư mục gốc của bạn (ví dụ: C: \ cygwin):

setup-x86.exe --no-desktop --no-shortcuts --no-startmenu --quiet-mode --root "%cd%" --packages %*

Bạn cần tải xuống và đặt http://www.cygwin.com/setup-x86.exe (32 bit) hoặc http://www.cygwin.com/setup-x86_64.exe (64 bit) vào cùng một thư mục. Bây giờ tất cả những gì bạn phải làm để cài đặt gói là:

install-pkg packagename

Tích cực: thiết lập chính thức, nên luôn luôn hoạt động, cho bất kỳ gói. Tiêu cực: thiết lập chính thức hiện tại (tháng sáu / 2015) yêu cầu quyền quản trị viên mặc dù thực sự không cần một (ví dụ: thư mục gốc bên ngoài các thư mục hệ thống).


1
câu trả lời hay, vì đây là một công cụ mà bạn đã có trong bất kỳ cài đặt Cygwin nào; tuy nhiên, có vẻ như bạn không thể ngăn nó cập nhật tất cả các gói đã cài đặt? Sẽ khá khó chịu nếu bạn chỉ muốn cài đặt một gói mới; nói cách khác, không có dòng lệnh nào tương đương với tùy chọn "Keep" của đồ họa setup.exe
golimar

1
lưu ý setup.exe hiện được gọi là setup-x86.exe - hoặc một biến thể tùy thuộc vào các bit cpu.
ErichBSchulz

Liên kết bị hỏng, bây giờ là: cygwin.com/faq/faq.html#faq.setup.cli Bạn có thể chỉnh sửa điều đó trong câu trả lời của mình không? Cảm ơn
Đã đến

Bạn không cần quyền quản trị nếu bạn sử dụng công --no-admintắc (giống như -B).
cdlvcdlv

13

Cygwin's setup.exe, ít nhất là trong bản phát hành 1.7 "beta", có chế độ "không giám sát" được tích hợp sẵn. Kéo và thả phím tắt setup.exe của bạn vào cửa sổ lệnh (hoặc nếu không thì chuẩn bị chạy nó bằng các công tắc) và thêm -qcho chế độ không giám sát theo sau là -Ptên gói được phân tách bằng dấu phẩy. Vì vậy, đối với tôi, lynx được cài đặt này:

$ "C:\Documents and Settings\martind\Desktop\setup-1.7.exe" -q -P lynx

này, nó hoạt động nhưng nếu tôi muốn thêm một số gói khi cài đặt, làm thế nào để làm điều đó ??
Johnydep

1
lưu ý setup.exe hiện được gọi là setup-x86.exe - hoặc một biến thể tùy thuộc vào các bit cpu.
ErichBSchulz

7
setup-x86 -nq -s http://box-soft.com -P curl,git,make

hoặc là

setup-x86 -nq -s http://box-soft.com -P curl -P git -P make

Điều này sẽ cài đặt cURL, git và make, không có phím tắt trong chế độ im lặng.



0

Có một con gà <=> vấn đề trứng với câu trả lời được chấp nhận . Nếu bạn không nhận được wgethoặc lynxtrong quá trình cài đặt ban đầu, bạn không thể sử dụng apt-cyg. Đây là cách tôi cài đặt wgetđể tôi có thể sử dụng apt-cyg. (Nó sử dụng các tính năng CLI của exe thiết lập cygwin .)

# check to see if you are running 64 bit cygwin
$ uname -a
CYGWIN_NT-10.0 WINDOWS-ABMESEI 2.6.0(0.304/5/3) 2016-08-31 14:32 x86_64 Cygwin

# if you are not using 64 bit, get http://www.cygwin.com/setup-x86.exe instead of...
$ curl -o cygwin-setup.exe http://www.cygwin.com/setup-x86_64.exe
$ chmod +x cygwin-setup.exe

# now you are ready to use it according to: https://cygwin.com/faq/faq.html#faq.setup.cli
$ cygwin-setup.exe --no-desktop --no-shortcuts --no-startmenu --quiet-mode --packages wget

-1

Đối với ít nhất các gói không yêu cầu cấu hình sau khi cài đặt, tôi chỉ đơn giản là đã gỡ bỏ chúng từ gốc cygwin '/'. Tôi yêu cầu một phiên bản cũ hơn của lật đổ (1.7,14) đã vượt qua hai phiên bản được xử lý bằng thiết lập.

Một lợi thế nữa là gói trở nên nằm ngoài thế giới quản lý gói cygwin và do đó, trong một loại danh sách đen adhoc không được tự động cập nhật với gói mới nhất nếu mặc định được giữ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.