Memutakhirkan dan menginstal paket melalui baris perintah Cygwin?

113

Saya pengguna komputer buta yang menggunakan Cygwin.

Program instalasi tidak terlalu mudah diakses: memutakhirkan, menginstal, dan menghapus paket tertentu cukup sulit dilakukan karena Anda harus menggunakan penekanan tombol mouse untuk mengklik dan menggulir.

Apakah ada cara untuk menginstal / meningkatkan paket secara manual atau menginstal / memutakhirkannya melalui command-line?

Jared
sumber

Jawaban:

121

Pasang apt-cyg :

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

Setelah itu Anda akan dapat menginstal katakan paket "lynx" termasuk dependensi dengan menjalankan:

apt-cyg install lynx
Knorv
sumber
4
Repositori belum bergerak : keluhan DMCA telah dikeluarkan terhadap transcode-open / apt-cyg. Kebetulan, pengguna Github svnpenn membuat garpu bernama "bijak" pada saat yang sama, mengklaim sebagai penggantinya
Lucas Cimon
Saya harus chmod + x apt-cyg agar dapat dieksekusi (kalau-kalau itu membantu seseorang)
Pedro A
23

Karena beberapa orang dengan benar menyatakan bahwa apt-cygitu sendiri membutuhkan wget dan untuk mendapatkan apt-cygAnda membutuhkan wget, ada solusi bash only untuk bootstrap wgetdi bash murni.

Buat fungsi seperti ini di shell bash mintty Anda:

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>&-
}

Sekarang Anda dapat menggunakannya hampir seperti wget:

__wget http://apt-cyg.googlecode.com/svn/trunk/apt-cyg > /usr/bin/apt-cyg && chmod 0755 /usr/bin/apt-cyg
Moreaki
sumber
Maaf, @moreaki, tapi ada satu hal yang saya tidak bisa mengerti dari apt-cyg: di installer CygWin Windows klasik saya dapat / harus menentukan lokasi repositori / paket, apakah itu salah satu dari (banyak) download ftp / http situs, atau drive lokal (di komputer saya). Saya tidak melihat opsi seperti itu di situs resmi googlecode. Dari mana apt-cygasal paket?
Sopalajo de Arrierez
Maafkan jawaban saya yang terlambat. Saya baru saja membaca kode apt-cyg di situs googlecode resmi dan bagi saya sepertinya situs unduhan yang dipilih tampaknya http://mirrors.kernel.org/sourceware/cygwin, seperti yang ditentukan findworkspace(), ketika Anda belum menentukan mirror menggunakan opsi baris perintah -m. Jika Anda menentukan baris perintah, informasi server cermin akan ditulis ke /etc/setup/last-mirror.
Moreaki
Instalasi apt-cyg tidak lagi bergantung pada wget, jadi tidak ada yang lebih penting? Mereka menggunakan lynx (yang tampaknya built-in di cygwin?) Di situs web mereka.
akauppi
@steven Apa alasan untuk pengeditan grosir yang mengubah lebih dari sebagian besar? Hal ini cukup banyak jawaban yang terpisah itu sendiri
random
1
Kemudian downvote dan berikan jawaban yang bersaing. Jika Anda adalah pengelola apt-cyg, tidak ada indikasi pada profil Anda atau dalam ringkasan edit Anda atau di mana pun yang terlihat yang menyarankan otoritas atau latar belakang semacam itu untuk ikut serta dengan sejumlah suntingan semacam ini
acak
21

The instalasi apt-Cyg resmi metode adalah:

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

Dua langkah lebih baik dari tiga. Kemudian:

apt-cyg install nano

Omong-omong, untuk membuatnya berfungsi, Anda harus menginstal wget , tar , gawk dan bzip2 untuk menggunakan apt-cyg. Selain wget, yang lain datang dengan instalasi Cygwin default.

Marc Climent
sumber
2
Untuk Cygwin 64-bit, svndan apt-cygmungkin rusak. Jadi, Anda mungkin harus menggunakan three steppendekatan wget untuk menginstal apt-cygdan kemudian mengganti $mirror/setup...dengan $mirror/x86_64/setup...di baris 98 dan 105 file apt-cyg.
sagunms
17

Pertanyaan lama, tetapi untuk orang lain yang mendapatkan Google dan mendapatkan di sini: Pengaturan resmi memiliki argumen baris perintah yang memungkinkan saya untuk menyiapkan skrip * .bat sederhana - cukup masukkan baris berikut dalam mis. "Install-pkg.bat" dan masukkan file itu ke direktori root Anda (mis. C: \ cygwin):

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

Anda perlu mengunduh dan memasukkan http://www.cygwin.com/setup-x86.exe (32bit) atau http://www.cygwin.com/setup-x86_64.exe (64bit) ke direktori yang sama. Sekarang yang harus Anda lakukan untuk menginstal paket adalah:

install-pkg packagename

Positif: pengaturan resmi, harus selalu berfungsi, untuk paket apa pun. Negatif: pengaturan resmi saat ini (Juni / 2015) memerlukan hak administrator meskipun sebenarnya tidak memerlukannya (misalnya direktori root di luar folder sistem).

peenut
sumber
1
jawaban yang bagus, karena ini adalah alat yang sudah Anda miliki di setiap instalasi Cygwin; Namun, tampaknya Anda tidak dapat mencegahnya memperbarui semua paket yang sudah diinstal? itu cukup menjengkelkan jika Anda hanya ingin menginstal satu paket baru; dengan kata lain, tidak ada baris perintah yang setara dengan opsi "Keep" dari grafis setup.exe
golimar
1
note setup.exe sekarang disebut setup-x86.exe - atau varian tergantung pada bit cpu.
ErichBSchulz
Tautan rusak, sekarang adalah: cygwin.com/faq/faq.html#faq.setup.cli Bisakah Anda mengeditnya dalam jawaban Anda? Terima kasih
Benj
Anda tidak memerlukan hak administrator jika Anda menggunakan --no-adminsakelar (sama dengan -B).
cdlvcdlv
13

Setup.exe Cygwin, setidaknya dalam rilis 1,7 "beta", memiliki mode "tanpa pengawasan" bawaan. Seret dan letakkan pintasan setup.exe Anda ke jendela perintah (atau siapkan untuk menjalankannya dengan sakelar), dan tambahkan -quntuk mode tanpa pengawasan diikuti oleh -Pdan nama paket yang dipisahkan koma. Jadi, bagi saya, lynx yang diinstal ini:

$ "C:\Documents and Settings\martind\Desktop\setup-1.7.exe" -q -P lynx
Martin Dorey
sumber
hei, itu berfungsi tetapi bagaimana kalau saya ingin menambahkan beberapa paket pada waktu instalasi, bagaimana melakukannya ??
Johnydep
1
note setup.exe sekarang disebut setup-x86.exe - atau varian tergantung pada bit cpu.
ErichBSchulz
7
setup-x86 -nq -s http://box-soft.com -P curl,git,make

atau

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

Ini akan menginstal cURL, git, dan make, tanpa pintasan dalam mode sunyi.

Steven Penny
sumber
0

Ada masalah ayam <=> telur dengan jawaban yang diterima . Jika Anda tidak mendapatkan wgetatau lynxselama pemasangan awal, Anda tidak dapat menggunakan apt-cyg. Inilah cara saya menginstal wgetsehingga saya bisa menggunakannya apt-cyg. (Ini menggunakan fitur CLI dari exe pengaturan 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
Bruno Bronosky
sumber
-1

Untuk setidaknya paket-paket yang tidak memerlukan konfigurasi post-install, saya cukup membatalkannya dari root cygwin '/'. Saya membutuhkan versi subversi yang lebih lama (1.7.14) yang telah melampaui dua versi yang ditangani oleh pengaturan.

Keuntungan tambahan adalah paket menjadi di luar dunia manajemen paket cygwin dan dengan demikian dalam semacam daftar hitam adhoc tidak secara otomatis diperbarui dengan paket terbaru jika default disimpan.

Chris
sumber