Y a-t-il un outil dans le paquet Cygwin similaire à apt-get
sur Debian ou yum
sur redhat qui me permet d'installer des composants à partir de la ligne de commande?
Y a-t-il un outil dans le paquet Cygwin similaire à apt-get
sur Debian ou yum
sur redhat qui me permet d'installer des composants à partir de la ligne de commande?
Réponses:
Il n'y a pas d'outil spécifique dans le programme d'installation de 'setup.exe' qui offre les fonctionnalités d'apt-get. Il existe cependant un programme d'installation de package en 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 Problèmes du projet pour voir les problèmes connus.
setup-x86.exe -q -P packagename1,packagename2
. Pas aussi sophistiqué apt-get
ni même, apt-cyg
mais cela fait l'affaire dans la plupart des cas. Et vous pouvez également l'exécuter à partir de cmd.exe
(après la fermeture de Cygwin).
La configuration de Cygwin accepte les arguments de ligne de commande pour installer les packages à partir de la ligne de commande.
par exemple setup-x86.exe -q -P packagename1,packagename2
pour installer des packages sans aucune interaction avec l'interface 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 packages.
setup-x86_64 --packages="openssh,python"
Pour un programme d'installation plus pratique, vous pouvez utiliser
apt-cyg
comme gestionnaire de paquets. Sa syntaxe 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, c'est apt-cyg
installé. Voici quelques exemples d'installation de certains packages
apt-cyg install nano
apt-cyg install git
apt-cyg install ca-certificates
wget
et il se télécharge apt-cyg
sans problèmes. À quel moment apparaît la 404?
Il existe quelques scripts qui peuvent être utilisés comme de simples gestionnaires de paquets pour Cygwin. Mais il est important de savoir, qu'ils seront toujours assez limités , à cause de ... ehm ... Windows.
L'installation ou la suppression de packages est très bien, chaque gestionnaire de packages pour Cygwin peut le faire. Mais la mise à jour est une douleur car Windows ne vous permet pas d'écraser un exécutable, qui est actuellement en cours d'exécution. Vous ne pouvez donc pas mettre à jour par exemple la DLL Cygwin ou tout autre package contenant l'exécutable en cours d'exécution à partir du Cygwin lui-même. Il y a aussi cette note sur la page d' installation de Cygwin :
«La raison fondamentale pour laquelle il n’ya pas de gestionnaire de paquets plus complet est qu’un tel programme aurait besoin d’un accès complet à toutes les fonctionnalités POSIX de Cygwin. Cela est cependant difficile à fournir dans un environnement sans Cygwin, tel qu’il existe au début De plus, Windows n'autorise pas facilement l'écrasement des exécutables en cours d'utilisation, il est donc problématique d'installer une nouvelle version de la DLL Cygwin alors qu'un gestionnaire de packages utilise la DLL. "
La configuration de Cygwin utilise le registre Windows pour écraser les exécutables en cours d'utilisation 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 package devrait se faire sans aucun problème. Je ne pense pas qu'aucun des gestionnaires de paquets, à l'exception de Cygwin, n'implémente de setup.exe
méthode pour écraser les fichiers en cours d'utilisation, donc cela échouerait simplement s'il ne pouvait pas les écraser.
Mise à jour : le référentiel a été désactivé récemment en raison de problèmes de droits d'auteur ( retrait DMCA ). Il semble que le propriétaire du référentiel ait émis le retrait DMCA sur son propre référentiel et créé un nouveau projet appelé Sage (voir ci-dessous).
Le meilleur pour moi. Tout simplement parce que c'est l'un des plus récents. Il n'utilise pas celui de Cygwin setup.exe
, il réimplémente plutôt ce qui setup.exe
fait. Il fonctionne correctement pour les deux plates-formes - x86 ainsi que x86_64 . Il existe de nombreuses fourches avec des fonctionnalités plus ou moins 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 référentiel), 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 existe également un tas de fourches avec différentes fonctionnalités.
Un autre gestionnaire de paquets implémenté sous forme de 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 les packages dans une catégorie, vérifier les dépendances, répertorier les fichiers de packages, etc. Il a des fonctionnalités que les autres gestionnaires de paquets n'ont pas.
Fourche de l'original abandonné cyg-aptavec des améliorations et des corrections de bugs. Il a beaucoup de fonctionnalités et il est implémenté en Python. L'installation se fait en utilisant make
.
Si vous avez utilisé Chocolatey pour installer Cygwin, vous pouvez installer le package cyg-get , qui est en fait un simple wrapper autour de Cygwin setup.exe
écrit dans PowerShell.
Il dispose également d'un mode ligne de commande . De plus, il vous permet de mettre à jour tous les paquets installés à la fois (comme le apt-get upgrade
fait 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"
Ensuite, vous pouvez, par exemple, installer le package Vim avec:
cyg-get vim
sage
est une fourchette de apt-cyg
par ses contributeurs les plus actifs depuis un an ou deux (Steven Penny). Il semble que plus tôt cette année, il avait eu un certain désaccord avec l' apt-cyg
auteur original (Stephen Jungels) et a émis le retrait du DMCA lorsqu'il a lancé le projet. Puisque Jungels (alias Transcode) est véritablement l'auteur original du projet, GitHub a restauré le projet original peu de temps après. Actuellement, les deux projets sont disponibles - bien que le projet d'origine n'ait pas eu de nouvelles mises à jour de code depuis la scission. C'est vraiment une situation compliquée.
Tout d'abord, téléchargez le programme d'installation sur: https://cygwin.com/setup-x86_64.exe (Windows 64bit), puis:
# move installer to cygwin folder
mv C:/Users/<you>/Downloads/setup-x86_64.exe C:/cygwin64/
# add alias to bash_aliases
echo "alias cygwin='C:/cygwin64/setup-x86_64.exe -q -P'" >> ~/.bash_aliases
source ~/.bash_aliases
# add bash_aliases to bashrc if missing
echo "source ~/.bash_aliases" >> ~/.profile
par exemple
# install vim
cygwin vim
# see other options
cygwin --help
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 analyse 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 affichera les chemins des paquets qui doivent être téléchargés, par rapport à la racine du miroir cygwin, en omettant tous les paquets déjà installés. Pour les télécharger, j'ai écrit la sortie dans un fichier cygwin-packages-list
, puis j'ai 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, j'avais besoin de copier à setup.ini
partir d'un cache de package cygwin précédent dans le répertoire avec les fichiers téléchargés (sinon le programme d'installation ne sait pas quoi).
Ancienne question, mais toujours d'actualité. Voici ce qui a fonctionné pour moi aujourd'hui (26/06/16).
Depuis le shell bash:
lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
install apt-cyg /bin
wget
ou curl
est probablement un meilleur outil pour cela. (Et personnellement, je l'installerais dans un autre répertoire dans mon $PATH
plutôt que dans /bin
.)
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 Chocolatey était le meilleur (du moins le seul que je pouvais mettre au travail).
Je voulais installer wget
, les étapes étaient les suivantes:
choco install cyg-get
Ensuite:
cyg-get wget
Habituellement, avant d'installer un package, il faut connaître son nom exact:
# define a string 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 "<<chosen_package_name>>"