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?

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

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

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.


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).


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

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.



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

-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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.