Comment installer les composants cygwin à partir de la ligne de commande?

Existe-t-il un outil dans le package Cygwin similaire à apt-get sur Debian ou yum on redhat qui me permet d’installer des composants à partir de la ligne de commande?

Il n’y a pas d’outil spécifique dans le programme d’installation ‘setup.exe’ qui offre les fonctionnalités d’apt-get. Il existe toutefois un programme d’installation de paquet de ligne de commande pour Cygwin qui peut être téléchargé séparément, mais il n’est pas entièrement stable et repose sur des solutions de contournement.

apt-cyg: http://github.com/transcode-open/apt-cyg

Consultez l’onglet des problèmes du projet pour voir les problèmes connus.

Pour un installateur plus pratique, vous pouvez utiliser apt-cyg comme gestionnaire de paquets. Sa syntaxe est similaire à apt-get , ce qui est un plus. Pour cela, suivez les étapes ci-dessus, puis utilisez Cygwin Bash pour les étapes suivantes

 wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg chmod +x apt-cyg mv apt-cyg /usr/local/bin 

Maintenant que apt-cyg est installé. Voici quelques exemples d’installation de certains paquets

 apt-cyg install nano apt-cyg install git apt-cyg install ca-certificatees 

L’installation de Cygwin accepte les arguments de ligne de commande pour installer les packages à partir de la ligne de commande.

ex. setup-x86.exe -q -P packagename1,packagename2 pour installer les packages sans aucune interaction graphique (‘mode d’installation sans assistance’).

(Notez que vous devez utiliser setup-x86.exe ou setup-x86_64.exe selon le cas.)

Voir http://cygwin.com/packages/ pour la liste des paquets.

Il existe des scripts, qui peuvent être utilisés comme gestionnaires de packages simples pour Cygwin. Mais il est important de savoir qu’ils seront toujours assez limités , à cause de … euh … Windows.

L’installation ou la suppression de paquets est une bonne chose, chaque gestionnaire de paquets pour Cygwin peut le faire. Mais la mise à jour est un problème car Windows ne vous permet pas de remplacer un exécutable en cours d’exécution. Donc, vous ne pouvez pas mettre à jour par exemple Cygwin DLL ou tout paquet contenant l’exécutable en cours d’exécution depuis Cygwin lui-même. Il y a aussi cette note sur la page d’ installation de Cygwin :

“La raison fondamentale pour ne pas avoir un gestionnaire de paquetages plus complet est qu’un tel programme nécessiterait un access complet à toutes les fonctionnalités POSIX de Cygwin. Cela est cependant difficile à fournir dans un environnement exempt de Cygwin, tel qu’il existe au premier En outre, Windows n’autorise pas facilement le remplacement des exécutables en cours d’utilisation. Par conséquent, l’installation d’une nouvelle version de la DLL Cygwin lorsqu’un gestionnaire de paquets utilise la DLL pose problème. ”

L’installation de Cygwin utilise le registre Windows pour écraser les fichiers exécutables utilisés et cette méthode nécessite un redémarrage de Windows . Par conséquent, il est préférable de fermer tous les processus Cygwin avant de mettre à jour les packages , afin de ne pas avoir à redémarrer votre ordinateur pour appliquer les modifications. L’installation d’un nouveau paquet devrait être complètement sans tracas. Je ne pense pas que les gestionnaires de paquets, à l’exception de setup.exe de Cygwin, implémentent une méthode pour remplacer les fichiers en cours d’utilisation. Par conséquent, ils échoueraient simplement s’ils ne pouvaient pas les écraser.


Certains gestionnaires de paquets pour Cygwin:

apt-cyg

Mise à jour : le référentiel a été désactivé récemment en raison de problèmes de droits d’auteur ( DMCA takedown ). Il semblerait que le propriétaire du référentiel ait lancé le déassembly DMCA sur son propre référentiel et créé un nouveau projet appelé Sage (voir ci-dessous).

Le meilleur pour moi. Simplement parce que c’est l’un des plus récents. Il n’utilise pas setup.exe de Cygwin, il ré-implémente plutôt ce que setup.exe fait. Il fonctionne correctement pour les deux plates-formes – x86 ainsi que x86_64 . Il y a beaucoup de fourches avec plus ou moins de fonctionnalités supplémentaires. Par exemple, la fourche kou1okada est l’une des versions améliorées , ce qui est vraiment génial.

apt-cyg est juste un script shell, il n’y a pas d’installation. Téléchargez-le simplement (ou clonez le repository), rendez-le exécutable et copiez-le quelque part dans le PATH:

 chmod +x apt-cyg # set executable bit mv apt-cyg /usr/local/bin # move somewhere to PATH # ...and use it: apt-cyg install vim 

Il y a aussi un tas de fourches avec des fonctionnalités différentes.


sauge

Un autre gestionnaire de paquets implémenté en tant que script shell. Je ne l’ai pas essayé mais ça a l’air bien.

Il peut rechercher des packages dans un référentiel, répertorier des packages dans une catégorie, vérifier des dépendances, répertorier des fichiers de package, etc. Il a des fonctionnalités que les autres gestionnaires de paquets n’ont pas.


cyg-apt

Fourche d’original abandonné cyg-apt avec des améliorations et des corrections de bugs. Il a pas mal de fonctionnalités et est implémenté en Python. L’installation est faite en utilisant make .


Le chocolat au chocolat

Si vous avez utilisé Chocolatey pour installer Cygwin, vous pouvez installer le paquet cyg-get , qui est en fait un simple wrapper autour du setup.exe de Cygwin écrit dans PowerShell.


Setup.exe de Cygwin

Il a également un mode ligne de commande . De plus, il vous permet de mettre à jour tous les paquets installés en même temps (comme le fait apt-get upgrade sur Linux basé sur Debian).

Exemple d’utilisation:

 setup-x86_64.exe -q --packages=bash,vim 

Vous pouvez créer un alias pour une utilisation plus facile, par exemple:

alias cyg-get="/cygdrive/d/path/to/cygwin/setup-x86_64.exe -q -P"

Vous pouvez ensuite, par exemple, installer le package Vim avec:

cyg-get vim

Ancienne question, mais toujours pertinente. Voici ce qui a fonctionné pour moi aujourd’hui (26/06/16).

Du shell bash:

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

Je voulais une solution similaire à apt-get --print-uris , mais malheureusement apt-cyg ne le fait pas. Voici une solution qui m’a permis de télécharger uniquement les packages dont j’avais besoin, avec leurs dépendances, et de les copier sur la cible pour l’installation. Voici un script bash qui parsing la sortie de apt-cyg dans une liste d’URI:

 #!/usr/bin/bash package=$1 depends=$( \ apt-cyg depends $package \ | perl -ne 'while ($x = /> ([^>\s]+)/g) { print "$1\n"; }' \ | sort \ | uniq) depends=$(echo -e "$depends\n$package") for curpkg in $depends; do if ! grep -q "^$curpkg " /etc/setup/installed.db; then apt-cyg show $curpkg \ | perl -ne ' if ($x = /install: ([^\s]+)/) { print "$1\n"; } if (/\[prev\]/) { exit; }' fi done 

Ce qui précède imprimera les chemins des paquets à télécharger, relatifs à la racine miroir cygwin, en omettant les paquets déjà installés. Pour les télécharger, j’ai écrit la sortie dans un fichier cygwin-packages-list puis utilisé wget:

 mirror=http://cygwin.mirror.constant.com/ uris=$(for line in $(cat cygwin-packages-list); do echo "$mirror$line"; done) wget -x $uris 

Le programme d’installation peut ensuite être utilisé pour installer à partir d’un répertoire de cache local. Notez que pour que cela fonctionne, je devais copier setup.ini partir d’un précédent cache de paquet cygwin vers le répertoire contenant les fichiers téléchargés (sinon le programme d’installation ne sait pas ce que c’est).

La réponse de Dawid Ferenczy est assez complète mais après avoir essayé presque toutes ses options, j’ai trouvé que le cyg-get de Chocolate était le meilleur (du moins le seul que je pouvais faire au travail).

Je voulais installer wget , les étapes étaient les suivantes:

 choco install cyg-get 

Alors:

 cyg-get wget 

Avant d’installer un paquet, il faut généralement connaître son nom exact:

 # define a ssortingng to search export to_srch=perl # get html output of search and pick only the cygwin package names wget -qO- "https://cygwin.com/cgi-bin2/package-grep.cgi?grep=$to_srch&arch=x86_64" | \ perl -l -ne 'm!(.*?)<\/a>\s+\-(.*?)\:(.*?)<\/li>!;print $2' # and install # install multiple packages at once, note the setup-x86_64.exe -q -s http://cygwin.mirror.constant.com -P "<>"