Mise à niveau et installation de packages via la ligne de commande Cygwin?

113

Je suis un utilisateur d’ordinateur aveugle qui utilise Cygwin.

Le programme d'installation n'est pas très accessible: il est assez difficile de mettre à niveau, d'installer et de supprimer des packages spécifiques car vous devez utiliser des frappes de souris simulées pour cliquer et faire défiler.

Est-il possible d'installer / mettre à niveau manuellement les packages ou de les installer / mettre à niveau via la ligne de commande?

Jared
la source

Réponses:

121

Installez apt-cyg :

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

Après cela, vous pourrez installer le paquet "lynx", y compris les dépendances, en exécutant:

apt-cyg install lynx
connaissance
la source
4
Le référentiel n'a pas été déplacé : une plainte DMCA a été émise contre transcode-open / apt-cyg. Soit dit en passant, svnpenn, l'utilisateur de Github, a créé une fourche nommée "sage" en même temps, prétendant en être le successeur
Lucas Cimon
Je devais chmod + x apt-cyg pour que ce soit exécutable (juste au cas où cela aiderait quelqu'un)
Pedro A
23

Puisque certaines personnes ont correctement déclaré que apt-cygwget avait besoin de lui - même et afin de apt-cygvous en procurer, il existe une solution uniquement en bash qui permet d’amorcer wgeten pur bash.

Créez une fonction comme celle-ci dans votre coquille menthe bash:

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

Maintenant, vous pouvez l'utiliser presque comme wget:

__wget http://apt-cyg.googlecode.com/svn/trunk/apt-cyg > /usr/bin/apt-cyg && chmod 0755 /usr/bin/apt-cyg
Moreaki
la source
Excusez-moi, @moreaki, mais il y a une chose que je ne peux pas comprendre d'apt-cyg: dans le programme d'installation classique de CygWin Windows, je peux / dois spécifier l'emplacement des dépôts / packages, que ce soit l'un des nombreux téléchargements FTP / HTTP. des sites ou un lecteur local (sur mon ordinateur). Je ne vois pas une telle option sur le site officiel de googlecode. D'où apt-cygtélécharge les packages?
Sopalajo de Arrierez
Pardon ma réponse tardive. Je viens de parcourir le code d'apt-cyg sur le site officiel de googlecode et il me semble que le site de téléchargement sélectionné semble être http://mirrors.kernel.org/sourceware/cygwin, comme spécifié dans findworkspace(), lorsque vous n'avez pas spécifié le miroir à l'aide de l'option de ligne de commande -m. Si vous spécifiez la ligne de commande, les informations du serveur miroir seront écrites /etc/setup/last-mirror.
Moreaki
L'installation d'apt-cyg ne repose plus sur wget, donc rien de tout cela n'a probablement plus d'importance? Ils utilisent le lynx (qui semble être intégré à cygwin?) Sur leur site web.
akauppi
@steven Quelle est la raison de la modification en gros qui change plus d'une partie substantielle? C'est à peu près une réponse séparée elle
aléatoire
1
Ensuite, votez et donnez une réponse concurrente. Si vous êtes le responsable d'apt-cyg, rien dans votre profil ni dans votre résumé d'édition ni dans aucun endroit visible ne suggère ce type d'autorité ou d'arrière-plan lui permettant de se lancer avec des pans de ce type de modifications
hasard
21

La méthode d' installation officielle d'apt-cyg est la suivante:

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

Deux étapes valent mieux que trois. Ensuite:

apt-cyg install nano

En passant, pour que cela fonctionne, vous devrez installer wget , tar , gawk et bzip2 pour pouvoir utiliser apt-cyg. En dehors de wget, les autres viennent avec l'installation par défaut de Cygwin.

Marc Climent
la source
2
Pour Cygwin 64 bits, svnet apt-cygpeut être cassé. Vous devrez donc peut-être utiliser l' three stepapproche wget pour installer apt-cygpuis remplacer $mirror/setup...par les $mirror/x86_64/setup...lignes 98 et 105 du fichier apt-cyg.
vendredi
17

Ancienne question, mais pour les autres qui google et sont arrivés ici: La configuration officielle a des arguments en ligne de commande qui m'ont permis de préparer un simple script * .bat - il suffit de mettre la ligne suivante dans, par exemple "install-pkg.bat" et de placer ce fichier dans votre répertoire racine. (par exemple C: \ cygwin):

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

Vous devez télécharger et placer http://www.cygwin.com/setup-x86.exe (32 bits) ou http://www.cygwin.com/setup-x86_64.exe (64 bits) dans le même répertoire. Maintenant, tout ce que vous avez à faire pour installer le paquet est:

install-pkg packagename

Positif: l'installation officielle, devrait toujours fonctionner, pour n'importe quel paquet. Négatif: la configuration officielle actuelle (juin / 2015) nécessite des droits d'administrateur même si elle n'en a pas réellement besoin (par exemple, le répertoire racine en dehors des dossiers système).

peenut
la source
1
bonne réponse, car c'est un outil que vous avez déjà dans toute installation Cygwin; Cependant, il semble que vous ne pouvez pas l'empêcher de mettre à jour tous les packages déjà installés? c'est assez gênant si vous voulez juste installer un nouveau paquet; en d'autres termes, il n'y a pas d'équivalent en ligne de commande équivalent à l'option "Conserver" du programme d'
installation
1
note setup.exe s'appelle maintenant setup-x86.exe - ou une variante qui dépend des bits de l'unité centrale de traitement.
ErichBSchulz
Le lien est cassé, c'est maintenant: cygwin.com/faq/faq.html#faq.setup.cli Pouvez-vous modifier cela dans votre réponse? Merci
Benj
Vous n'avez pas besoin de droits d'administrateur si vous utilisez le --no-admincommutateur (idem -B).
cdlvcdlv le
13

Le fichier setup.exe de Cygwin, du moins dans la version 1.7 "bêta", intègre un mode "sans assistance". Faites glisser et déposez votre raccourci setup.exe dans une fenêtre de commande (ou préparez-vous à l'exécuter avec des commutateurs), et ajoutez-le -qpour le mode sans surveillance suivi de -Pet des noms de package séparés par des virgules. Donc, pour moi, ce lynx installé:

$ "C:\Documents and Settings\martind\Desktop\setup-1.7.exe" -q -P lynx
Martin Dorey
la source
Hé, ça marche, mais si je veux ajouter des paquets au moment de l’installation, comment faire ça?
Johnydep
1
note setup.exe s'appelle maintenant setup-x86.exe - ou une variante qui dépend des bits de l'unité centrale de traitement.
ErichBSchulz
7
setup-x86 -nq -s http://box-soft.com -P curl,git,make

ou

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

Cela installera cURL, git et make sans raccourcis en mode silencieux.

Steven Penny
la source
0

Il y a un problème <=> d'oeuf de poule avec la réponse acceptée . Si vous n'avez pas obtenu wgetou lynxlors de l'installation initiale, vous ne pouvez pas utiliser apt-cyg. Voici comment j'ai installé wgetpour pouvoir utiliser apt-cyg. (Il utilise les fonctionnalités CLI de l'exécutable 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
la source
-1

Pour au moins les paquets ne nécessitant pas de configuration post-installation, je les ai tout simplement supprimés de la racine cygwin '/'. J'avais besoin d'une version plus ancienne de Subversion (1.7.14) qui était passée au-delà des deux versions gérées par le programme d'installation.

Un avantage supplémentaire est que le paquet devient en dehors du monde de la gestion des paquets de cygwin et que, par conséquent, une sorte de liste noire adhoc n'est pas automatiquement mise à jour avec le paquet le plus récent si les valeurs par défaut sont conservées.

Chris
la source