Aggiornamento e installazione di pacchetti tramite la riga di comando di Cygwin?


113

Sono un utente cieco di computer che utilizza Cygwin.

Il programma di installazione non è molto accessibile: l'aggiornamento, l'installazione e la rimozione di pacchetti specifici è piuttosto difficile da fare poiché è necessario utilizzare i tasti del mouse simulati per fare clic e scorrere.

Esiste un modo per installare / aggiornare manualmente i pacchetti o installarli / aggiornarli dalla riga di comando?

Risposte:


121

Installa apt-cyg :

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

Dopodiché potrai installare dire il pacchetto "lynx" comprese le dipendenze eseguendo:

apt-cyg install lynx

4
Il repository non è stato spostato : è stato emesso un reclamo DMCA con un transcode-open / apt-cyg. Per inciso, l'utente svnpenn di Github ha creato contemporaneamente un fork chiamato "sage", sostenendo di essere il suo successore
Lucas Cimon,


Ho dovuto chmod + x apt-cyg perché fosse eseguibile (nel caso in cui aiuti qualcuno)
Pedro A

23

Dal momento che alcune persone hanno affermato correttamente che apt-cygha bisogno di wget e per ottenerlo apt-cyghai bisogno di wget, esiste una sola soluzione bash per bootstrap wgetin bash puro.

Crea una funzione come questa nella tua conchiglia alla menta:

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

Ora puoi usarlo quasi come wget:

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

Mi scusi, @moreaki, ma c'è una cosa che non riesco a capire da apt-cyg: nel classico programma di installazione di CygWin Windows posso / devo specificare la posizione dei repository / pacchetti, sia che si tratti di uno dei (molti) download ftp / http siti o unità locale (nel mio computer). Non vedo tale opzione nel sito ufficiale googlecode. Da dove apt-cygscarica i pacchetti?
Sopalajo de Arrierez,

Perdonate la mia risposta tardiva. Ho appena sfogliato il codice di apt-cyg sul sito googlecode ufficiale e a me sembra che il sito di download selezionato sembra essere http://mirrors.kernel.org/sourceware/cygwin, come specificato in findworkspace(), quando non hai specificato il mirror usando l'opzione della riga di comando -m. Se si specifica la riga di comando, verranno scritte le informazioni sul server mirror /etc/setup/last-mirror.
Moreaki,

L'installazione di apt-cyg non si basa più su wget, quindi nulla di tutto ciò probabilmente conta più? Usano la lince (che sembra essere integrata in Cygwin?) Sul loro sito web.
akauppi,

@steven Qual è il motivo della modifica all'ingrosso che cambia più di una porzione sostanziale? È praticamente una risposta separata
casuale

1
Quindi effettuare il downvote e fornire una risposta in competizione. Se sei il manutentore di apt-cyg non ci sono indicazioni sul tuo profilo o nel tuo sommario di modifica o in qualsiasi punto visibile che suggerisca quel tipo di autorità o background per entrare in steambreak con parti di questo tipo di modifiche
casuali

21

Il metodo di installazione ufficiale di apt-cyg è:

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

Due passaggi sono meglio di tre. Poi:

apt-cyg install nano

A proposito, per farlo funzionare dovrai installare wget , tar , gawk e bzip2 per usare apt-cyg. Oltre a wget, gli altri sono dotati dell'installazione predefinita di Cygwin.


2
Per Cygwin a 64 bit, svne apt-cygpotrebbe essere rotto. Quindi potresti dover usare l' three stepapproccio wget per installare apt-cyge poi sostituire $mirror/setup...con $mirror/x86_64/setup...nelle righe 98 e 105 del file apt-cyg.
sagunms

17

Vecchia domanda, ma per gli altri che google e sono arrivati ​​qui: l' installazione ufficiale ha argomenti da riga di comando che mi hanno permesso di preparare un semplice script * .bat - basta inserire la seguente riga in es. "Install-pkg.bat" e inserire quel file nella directory principale (ad es. C: \ cygwin):

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

È necessario scaricare e inserire http://www.cygwin.com/setup-x86.exe (32 bit) o http://www.cygwin.com/setup-x86_64.exe (64 bit) nella stessa directory. Ora tutto ciò che devi fare per installare il pacchetto è:

install-pkg packagename

Positivo: installazione ufficiale, dovrebbe sempre funzionare, per qualsiasi pacchetto. Negativo: l'attuale installazione ufficiale (giugno / 2015) richiede i diritti di amministratore anche se in realtà non ne ha bisogno (es. Directory root al di fuori delle cartelle di sistema).


1
bella risposta, in quanto è uno strumento che hai già in qualsiasi installazione di Cygwin; tuttavia, sembra che non riesca a impedirgli di aggiornare tutti i pacchetti già installati? è abbastanza fastidioso se vuoi solo installare un nuovo pacchetto; in altre parole, non esiste una riga di comando equivalente all'opzione "Mantieni" del setup.exe grafico
golimar

1
note setup.exe è ora chiamato setup-x86.exe - o una variante a seconda dei bit della cpu.
ErichBSchulz,

Il collegamento è interrotto, ora è: cygwin.com/faq/faq.html#faq.setup.cli Puoi modificarlo nella tua risposta? Grazie
Benj il

Non è necessario disporre dei diritti di amministratore se si utilizza l' --no-adminopzione (uguale a -B).
cdlvcdlv,

13

Il setup.exe di Cygwin, almeno nella versione 1.7 "beta", ha una modalità "incustodita" incorporata. Trascina e rilascia il collegamento setup.exe in una finestra di comando (o altrimenti preparati a eseguirlo con gli switch) e aggiungi -qper la modalità automatica seguita da -Pnomi di pacchetti separati da virgola. Quindi, per me, questa lince installata:

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

ehi, funziona ma che ne dici se voglio aggiungere alcuni pacchetti al momento dell'installazione, come farlo ??
Johnydep,

1
note setup.exe è ora chiamato setup-x86.exe - o una variante a seconda dei bit della cpu.
ErichBSchulz,

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

o

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

Ciò installerà cURL, git e make, senza scorciatoie in modalità silenziosa.



0

C'è un problema con l'uovo di pollo <=> l' la risposta accettata . Se non hai ricevuto wgeto lynxdurante l'installazione iniziale, non puoi utilizzarlo apt-cyg. Ecco come ho installato in wgetmodo da poterlo utilizzare apt-cyg. (Utilizza le funzionalità CLI del file exe di installazione di 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

Per almeno i pacchetti che non richiedono la configurazione post-installazione, li ho semplicemente decompressi dalla radice cygwin '/'. Ho richiesto una versione precedente di Subversion (1.7.14) che era passata oltre le due versioni gestite dall'installazione.

Un ulteriore vantaggio è che il pacchetto diventa al di fuori del mondo di gestione dei pacchetti cygwin e quindi in una sorta di lista nera ad hoc non viene automaticamente aggiornato con il pacchetto più recente se vengono mantenute le impostazioni predefinite.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.