Aktualisieren und Installieren von Paketen über die Cygwin-Befehlszeile?

113

Ich bin ein blinder Computerbenutzer, der Cygwin verwendet.

Das Installationsprogramm ist nicht sehr leicht zugänglich: Das Aktualisieren, Installieren und Entfernen bestimmter Pakete ist recht schwierig, da Sie simulierte Maustasten zum Klicken und Scrollen verwenden müssen.

Gibt es eine Möglichkeit, Pakete manuell zu installieren / zu aktualisieren oder über die Befehlszeile zu installieren / zu aktualisieren?

Jared
quelle

Antworten:

121

Installieren Sie apt-cyg :

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

Danach können Sie das Paket "lynx" einschließlich der Abhängigkeiten installieren, indem Sie Folgendes ausführen:

apt-cyg install lynx
knorv
quelle
4
Das Repository wird nicht bewegt : eine DMCA - Beschwerde wurde ausgestellt Againt Transcodierungs-open / apt-cyg. Übrigens hat Github-Benutzer svnpenn gleichzeitig eine Gabel namens "sage" erstellt, die behauptet, ihr Nachfolger zu sein
Lucas Cimon
Ich musste chmod + x apt-cyg, damit es ausführbar ist (nur für den Fall, dass es jemandem hilft)
Pedro A
23

Da einige Leute korrekt angegeben haben, dass sie apt-cygwget benötigen und um wget zu bekommen apt-cyg, gibt es eine einzige Bash-Lösung, um wgetin pure bash zu booten.

Erstellen Sie eine Funktion wie diese in Ihrer Mintty-Bash-Shell:

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

Jetzt können Sie es fast wie wget benutzen :

__wget http://apt-cyg.googlecode.com/svn/trunk/apt-cyg > /usr/bin/apt-cyg && chmod 0755 /usr/bin/apt-cyg
Moreaki
quelle
Entschuldigung, @moreaki, aber eines kann ich von apt-cyg nicht verstehen: Im klassischen CygWin-Windows-Installationsprogramm kann / muss ich den Speicherort der Repositorys / Pakete angeben, ob es sich um einen der (vielen) FTP- / HTTP-Downloads handelt Websites oder lokales Laufwerk (auf meinem Computer). Ich sehe eine solche Option nicht auf der offiziellen Googlecode-Website. Woher apt-cyglädt man die Pakete herunter?
Sopalajo de Arrierez
Entschuldigen Sie meine verspätete Antwort. Ich habe gerade den Code von apt-cyg auf der offiziellen Googlecode-Site durchgesehen und für mich sieht es so aus, als ob die ausgewählte Download-Site http://mirrors.kernel.org/sourceware/cygwinwie in angegeben wäre findworkspace(), wenn Sie den Spiegel nicht über die Befehlszeilenoption angegeben haben -m. Wenn Sie die Befehlszeile angeben, werden die Informationen zum Spiegelserver geschrieben /etc/setup/last-mirror.
Moreaki
Die Installation von apt-cyg ist nicht mehr auf wget angewiesen. Sie verwenden Luchs (der in Cygwin eingebaut zu sein scheint?) Auf ihrer Website.
Akauppi
@steven Was ist der Grund für die Bearbeitung im Großhandel, die sich mehr als nur zu einem wesentlichen Teil ändert? Es ist so ziemlich eine separate Antwort
zufällig
1
Dann stimmen Sie ab und geben Sie eine konkurrierende Antwort. Wenn Sie der Maintainer von apt-cyg sind, gibt es keine Anzeige in Ihrem Profil oder in Ihrer Bearbeitungszusammenfassung oder an einem anderen sichtbaren Ort, die auf diese Art von Autorität oder Hintergrund hindeutet, um sich mit solchen Änderungen zu beschäftigen
zufällig
21

Die offizielle Installationsmethode für apt-cyg lautet:

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

Zwei Schritte sind besser als drei. Dann:

apt-cyg install nano

Übrigens, damit es funktioniert, müssen Sie wget , tar , gawk und bzip2 installieren , um apt-cyg verwenden zu können. Abgesehen von wget werden die anderen mit der Standardinstallation von Cygwin geliefert.

Marc Climent
quelle
2
Für 64-Bit-Cygwin svnund apt-cygmöglicherweise defekt. So können Sie das verwenden, um three stepwget Ansatz zu installieren apt-cygund ersetzen Sie dann $mirror/setup...mit $mirror/x86_64/setup...in den Zeilen 98 und 105 von apt-cyg Datei.
Sagunms
17

Alte Frage, aber für andere, die googeln und hierher gekommen sind: Das offizielle Setup verfügt über Befehlszeilenargumente, mit denen ich ein einfaches * .bat-Skript erstellen konnte - fügen Sie einfach die folgende Zeile in z. B. "install-pkg.bat" ein und speichern Sie diese Datei in Ihrem Stammverzeichnis (zB C: \ cygwin):

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

Sie müssen http://www.cygwin.com/setup-x86.exe (32 Bit) oder http://www.cygwin.com/setup-x86_64.exe (64 Bit) herunterladen und in dasselbe Verzeichnis stellen. Jetzt müssen Sie nur noch Folgendes tun, um das Paket zu installieren:

install-pkg packagename

Positiv: offizielles Setup, sollte immer funktionieren, für jedes Paket. Negativ: Für das aktuelle (Juni / 2015) offizielle Setup sind Administratorrechte erforderlich, obwohl dies tatsächlich nicht der Fall ist (z. B. Stammverzeichnis außerhalb der Systemordner).

peenut
quelle
1
Gute Antwort, da es sich um ein Tool handelt, das Sie bereits in einer Cygwin-Installation haben. Es scheint jedoch, dass Sie nicht verhindern können, dass alle bereits installierten Pakete aktualisiert werden. Es ist ziemlich ärgerlich, wenn Sie nur ein neues Paket installieren möchten. in anderen Worten, es gibt keine Befehlszeile entspricht die „Keep“ Option des grafischen setup.exe
Golimar
1
note setup.exe heißt jetzt setup-x86.exe - oder eine Variante, die von den CPU-Bits abhängt.
ErichBSchulz
Link ist kaputt, jetzt ist es: cygwin.com/faq/faq.html#faq.setup.cli Kannst du das in deiner Antwort ändern ? Danke
Benj
Sie benötigen keine Administratorrechte, wenn Sie den --no-adminSchalter (wie -B) verwenden.
Cdlvcdlv
13

In Cygwins setup.exe ist, zumindest in der Version 1.7 "beta", ein "unbeaufsichtigter" Modus integriert. Ziehen Sie Ihre Verknüpfung setup.exe per Drag & Drop in ein Befehlsfenster (oder bereiten Sie die Ausführung auf andere Weise mit Schaltern vor) und fügen Sie -qfür den unbeaufsichtigten Modus gefolgt von durch -PKommas getrennten Paketnamen hinzu. Für mich installierte dieser Luchs:

$ "C:\Documents and Settings\martind\Desktop\setup-1.7.exe" -q -P lynx
Martin Dorey
quelle
Hey, es funktioniert, aber wie wäre es, wenn ich zur Installationszeit einige Pakete hinzufügen möchte?
Johnydep
1
note setup.exe heißt jetzt setup-x86.exe - oder eine Variante, die von den CPU-Bits abhängt.
ErichBSchulz
7
setup-x86 -nq -s http://box-soft.com -P curl,git,make

oder

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

Dadurch werden cURL, git und make ohne Verknüpfungen im stillen Modus installiert.

Steven Penny
quelle
0

Es liegt ein Hühnerei-Problem mit der akzeptierten Antwort vor . Wenn Sie wgetoder lynxwährend der Erstinstallation nicht erhalten haben , können Sie nicht verwenden apt-cyg. Hier ist, wie ich installiert wgethabe, damit ich verwenden kann apt-cyg. (Verwendet die CLI-Funktionen der cygwin setup exe .)

# 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
quelle
-1

Zumindest für Pakete, für die keine Konfiguration nach der Installation erforderlich ist, habe ich sie einfach aus dem Cygwin-Stammverzeichnis "/" entfernt. Ich benötigte eine ältere Version von Subversion (1.7.14), die über die beiden vom Setup behandelten Versionen hinausging.

Ein zusätzlicher Vorteil ist, dass das Paket außerhalb der Cygwin-Paketverwaltungswelt wird und somit in einer Art Ad-hoc-Blacklist nicht automatisch mit dem neuesten Paket aktualisiert wird, wenn die Standardeinstellungen beibehalten werden.

Chris
quelle