Existe-t-il un outil dans le package Cygwin similaire à apt-get
sur Debian ou yum
sur 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' offrant 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 des problèmes du projet pour voir les problèmes connus.
Pour un programme d'installation plus pratique, vous pouvez utiliser apt-cyg
en tant que gestionnaire de paquets. Sa syntaxe s'apparente à 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 paquets
apt-cyg install nano
apt-cyg install git
apt-cyg install ca-certificates
La configuration de Cygwin accepte 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.
Il existe certains scripts, qui peuvent être utilisés comme simples gestionnaires de paquets pour Cygwin. Mais il est important de savoir qu’ils seront toujours très limités , à cause de ... euh ... Windows.
L'installation ou la suppression de paquetages convient, chaque gestionnaire de paquetages de Cygwin peut le faire. Toutefois, la mise à jour est une tâche ardue, car Windows ne vous permet pas de remplacer un fichier exécutable en cours d’exécution. Vous ne pouvez donc pas mettre à jour, par exemple, Cygwin DLL ou tout package contenant l'exécutable en cours d'exécution à partir de Cygwin lui-même. Il y a aussi cette note sur la page Installation de Cygwin :
"La raison fondamentale pour ne pas avoir un gestionnaire de paquets plus complet est qu'un tel programme nécessiterait un accès complet à toutes les fonctionnalités POSIX de Cygwin. Il est toutefois difficile à fournir dans un environnement sans Cygwin, tel qu'il en existe à l'origine. De plus, Windows n'autorisant pas facilement le remplacement des exécutables en cours d'utilisation, l'installation d'une nouvelle version de Cygwin DLL alors qu'un gestionnaire de paquets utilise le DLL pose problème. "
La configuration de Cygwin utilise le registre Windows pour écraser les exécutables en cours d’utilisation. 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 , de sorte que vous n’ayez pas à 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 l’un des gestionnaires de paquets, à l’exception de setup.exe
de Cygwin, implémente une méthode pour écraser les fichiers en cours d’utilisation; donc, cela échouerait simplement s’il ne pouvait pas les écraser.
Update : le référentiel a été désactivé récemment en raison de problèmes de copyright ( DMCA takedown ). Il ressemble à le propriétaire du référentiel a publié le retrait DMCA sur son propre référentiel et a 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 setup.exe
de Cygwin, il ré-implémente ce que setup.exe
fait. Cela 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, le kou1okada fork 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. Il suffit de le télécharger (ou de cloner le référentiel), de le rendre exécutable et de le copier quelque part dans 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 groupe de fourchettes avec différentes fonctionnalités.
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 les packages dans une catégorie, vérifier les dépendances, répertorier les fichiers de package, etc. Il a des fonctionnalités que d'autres gestionnaires de paquets n'ont pas.
Fourchette d'original abandonné cyg-apt avec des améliorations et corrections de bugs. Il a beaucoup de fonctionnalités et est implémenté en Python. L'installation est réalisée avec make
.
Si vous avez utilisé Chocolatey pour installer Cygwin, vous pouvez installer le package cyg-get , qui est en fait un simple wrapper autour du setup.exe
de Cygwin écrit dans PowerShell.
Il a également un mode ligne de commande . De plus, cela vous permet de mettre à jour tous les paquets installés à la fois (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"
Ensuite, vous pouvez, par exemple, installer le paquet Vim avec:
cyg-get vim
Commencez par télécharger le programme d'installation à l'adresse suivante: https://cygwin.com/setup-x86_64.exe (Windows 64 bits), 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
Ancienne question, mais toujours d'actualité. Voici ce qui a fonctionné pour moi aujourd'hui (26/06/16).
De la bash Shell:
lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
install apt-cyg /bin
Je voulais une solution semblable à apt-get --print-uris
, mais malheureusement, apt-cyg ne le fait pas. Voici une solution qui m'a permis de ne télécharger que 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 packages à télécharger, par rapport à la racine miroir de cygwin, en omettant les packages déjà installés. Pour les télécharger, j'ai écrit le résultat 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 cache de paquet cygwin précédent dans 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 Chocolatey’s cyg-get était le meilleur (au moins le seul qui m’ait permis de travailler).
Je voulais installer wget
, la procédure était la suivante:
choco install cyg-get
Ensuite:
cyg-get wget
Habituellement, avant d'installer un paquet, 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>>"