192 votes

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

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

2 votes

Stack Overflow est un site pour les questions de programmation et de développement. Cette question semble être hors sujet car elle ne concerne pas la programmation ou le développement. Voir Quels sont les sujets sur lesquels je peux poser des questions ici dans le centre d'aide. Peut-être Super utilisateur serait un meilleur endroit pour demander. Voir aussi Où puis-je poster des questions sur le Dev Ops ?

8 votes

@jww, Ce n'est pas du devops.

4voto

wakjah Points 4129

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

#!/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 qui ont besoin d'être téléchargés, par rapport à la racine du miroir cygwin, en omettant les paquets qui sont déjà installés. Pour les télécharger, j'ai écrit la sortie dans un fichier cygwin-packages-list et ensuite 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'ai dû copier le fichier setup.ini d'un cache de paquetage cygwin précédent vers le répertoire avec les fichiers téléchargés (sinon l'installateur ne sait pas ce qui est quoi).

4voto

Steve Isenberg Points 343

Vieille question, mais toujours pertinente. Voici ce qui a fonctionné pour moi aujourd'hui (6/26/16).

Depuis le shell bash :

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

1 votes

wget o curl est probablement un meilleur outil pour cela. (Et personnellement, je l'installerais dans un autre répertoire de mon site web. $PATH plutôt que dans /bin .)

3voto

fabriciorissetto Points 100

La réponse de Dawid Ferenczy est assez complète, mais après avoir essayé presque toutes ses options, j'ai constaté que le Le cyg-get de Chocolatey était le meilleur (du moins le seul que j'ai pu faire fonctionner).

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

choco install cyg-get

Ensuite :

cyg-get wget

1voto

YordanGeorgiev Points 1222

En général, 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>>"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X