2
votes

De quels packages ai-je besoin pour une chaîne d'outils CPAN fonctionnelle sous cygwin64?

Il y a quelques modules Perl que j'utilise souvent sur mes systèmes * nix (FreeBSD, Linux, Mac). Je les installe toujours depuis cpan. Plus tôt cette année, j'avais besoin d'en utiliser certains sur un système Windows 64 bits, et en environ 2 heures, j'ai installé le package Strawberry Perl le plus récent, et à partir de cpan, j'ai installé les modules de mon désir de la même manière que je utilisé pour faire sous * nix. Tout a fonctionné comme prévu.

Sur un autre système Windows 64 bits, j'essaie maintenant de configurer un environnement cygwin64 au lieu d'installer Strawberry Perl. Il y a une poignée d'outils dont nous avons besoin sur ce système, et ceux-ci fonctionnent déjà très bien sous cygwin64, donc cela semble être une bonne idée d'ajouter la nouvelle fonctionnalité Perl à l'environnement cygwin64 déjà existant. Pour tester cette possibilité sans perturber l'environnement de production, j'effectue des configurations d'essai / erreur sur un système Windows propre et distinct.

J'ai téléchargé le programme d'installation cygwin64 maintenant actuel et je peux obtenir tous les outils dont nous avons besoin dans le passé s'est bien installé. Je peux également installer perl5. Mais l'installation de modules via "cpan install" ne fonctionne pas. Malheureusement, je ne suis pas vraiment au courant des paquets * nix dont dépend cpan, car tous sur mes unices (et apparemment avec Strawberry Perl sous Windows aussi) chaque dépendance est installée automatiquement, et je n'ai jamais eu à m'en soucier. Mon environnement cygwin64 manque évidemment certains paquets requis par le processus de construction exécuté par cpan. Mais cpan dans cygwin64 fait un très mauvais travail de communication de ce qui manque ou de ce qui ne va pas.

J'ai essayé d'installer plusieurs combinaisons de clang, gcc, mingw et d'autres outils de développement en utilisant le programme d'installation de cygwin, mais je n'ai toujours pas pu obtenir le fonctionnement de "cpan install desire :: module". En fonction du mélange de paquets que j'ai utilisé, j'obtiens différentes erreurs (ou signes d'erreurs).

Comme point de départ assez fiable, pourriez-vous s'il vous plaît me donner une liste de paquets cygwin que je devrais très certainement installer, dans afin d'avoir un environnement où "cpan install ..." est censé réussir.


Ajout n ° 1:

Si j'installe uniquement les packages cygwin les plus basiques (zsh , perl) et ceux qui viennent quand même, je me retrouve avec ça ...

$scalar .= ($what // '');

Tout élément de make, gmake, cmake, nmake, gcc, clang donne une commande " not found "response.

Démarrer cpan fait ceci ...

BEGIN {
my $scalar = '';

sub _hook_into_CPANpm_report
    {
    no warnings 'redefine';

    *CPAN::Shell::myprint = sub {
        my($self,$what) = @_;
        $scalar .= $what;

et que la ligne" Press SPACE and ENTER "continue de remplir mon écran jusqu'à ce que j'appuie sur Ctrl + C.

Alors, je redémarre l'installateur Cygwin et installe le paquet devel / make. De cette façon, j'ai ceci ...

$ cpan
Loading internal null logger. Install Log::Log4perl for logging messages
Sorry, we have to rerun the configuration dialog for CPAN.pm due to
some missing parameters. Configuration will be written to
 <</home/Valaki/.cpan/CPAN/MyConfig.pm>>


CPAN.pm requires configuration, but most of it can be done automatically.
If you answer 'no' below, you will enter an interactive dialog for each
configuration option instead.

Would you like to configure as much as possible automatically? [yes]

Use of uninitialized value $what in concatenation (.) or string at /usr/share/perl5/5.26/App/Cpan.pm line 669, <STDIN> line 1.
 <install_help>

Warning: You do not have write permission for Perl library directories.

To install modules, you need to configure a local Perl library directory or
escalate your privileges.  CPAN can help you by bootstrapping the local::lib
module or by configuring itself to use 'sudo' (if available).  You may also
resolve this problem manually if you need to customize your setup.

What approach do you want?  (Choose 'local::lib', 'sudo' or 'manual')
 [local::lib]

Press SPACE and ENTER to disable curl
Press SPACE and ENTER to disable curl

Cette fois, il n'y a pas d'avertissement concernant "make" manquant, mais la même ligne "Press SPACE and ENTER" remplit l'écran. Il y a toujours ce "$ what non initialisé", et l'avertissement de ne pas avoir les autorisations appropriées sur les dossiers. Ce que j'ai vu dans les questions des autres, généralement corrigé en réinstallant le paquet perl avec le plus récent (j'ai le plus récent).

Alors, quel paquet me manque-t-il? Ou ai-je fait un mauvais choix ci-dessus en acceptant la valeur par défaut? Remarque: j'ai installé des packages de développement supplémentaires avec mes tentatives précédentes. Mais pour garder les choses simples pour le moment, je n'ai que "perl" et "make".


Ajout # 2

Suite aux réponses de HÃ ¥ kon et mob, je redémarré le programme d'installation de cygwin et installé les packages recommandés. Alors maintenant, j'ai installé devel / binutils, devel / clang, devel / cmake, devel / gcc-core, devel / gcc-g ++, gccmakedep et make. Aussi disponible est curl, qui était déjà présent donc je n'ai pas besoin d'installer (peut-être venu comme une dépendance).

Malheureusement, j'obtiens toujours ceci au démarrage de "cpan":

$ make -v
GNU Make 4.2.1
Built for x86_64-unknown-cygwin
Copyright (C) 1988-2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

$ cpan
Loading internal null logger. Install Log::Log4perl for logging messages
Sorry, we have to rerun the configuration dialog for CPAN.pm due to
some missing parameters. Configuration will be written to
 <</home/Valaki/.cpan/CPAN/MyConfig.pm>>


CPAN.pm requires configuration, but most of it can be done automatically.
If you answer 'no' below, you will enter an interactive dialog for each
configuration option instead.

Would you like to configure as much as possible automatically? [yes]

Use of uninitialized value $what in concatenation (.) or string at /usr/share/perl5/5.26/App/Cpan.pm line 669, <STDIN> line 1.
 <install_help>

Warning: You do not have write permission for Perl library directories.

To install modules, you need to configure a local Perl library directory or
escalate your privileges.  CPAN can help you by bootstrapping the local::lib
module or by configuring itself to use 'sudo' (if available).  You may also
resolve this problem manually if you need to customize your setup.

What approach do you want?  (Choose 'local::lib', 'sudo' or 'manual')
 [local::lib]

Press SPACE and ENTER to disable curl
Press SPACE and ENTER to disable curl
Press SPACE and ENTER to disable curl
Press SPACE and ENTER to disable curl
Press SPACE and ENTER to disable curl
Press SPACE and ENTER to disable curl

Concernant l'avertissement $ what: Les lignes 660 à 670 de Cpan.pm vont comme ceci ...

$ cpan
Loading internal null logger. Install Log::Log4perl for logging messages
Sorry, we have to rerun the configuration dialog for CPAN.pm due to
some missing parameters. Configuration will be written to
 <</home/Valaki/.cpan/CPAN/MyConfig.pm>>


CPAN.pm requires configuration, but most of it can be done automatically.
If you answer 'no' below, you will enter an interactive dialog for each
configuration option instead.

Would you like to configure as much as possible automatically? [yes]

Use of uninitialized value $what in concatenation (.) or string at /usr/share/perl5/5.26/App/Cpan.pm line 669, <STDIN> line 1.
 <install_help>

Warning: You do not have write permission for Perl library directories.

To install modules, you need to configure a local Perl library directory or
escalate your privileges.  CPAN can help you by bootstrapping the local::lib
module or by configuring itself to use 'sudo' (if available).  You may also
resolve this problem manually if you need to customize your setup.

What approach do you want?  (Choose 'local::lib', 'sudo' or 'manual')
 [local::lib]

 ALERT: 'make' is an essential tool for building perl Modules.
Please make sure you have 'make' (or some equivalent) working.

Press SPACE and ENTER to disable curl
Press SPACE and ENTER to disable curl
Press SPACE and ENTER to disable curl
Press SPACE and ENTER to disable curl
Press SPACE and ENTER to disable curl
Press SPACE and ENTER to disable curl
Press SPACE and ENTER to disable curl
Press SPACE and ENTER to disable curl
Press SPACE and ENTER to disable curl
Press SPACE and ENTER to disable curl

Je peux me débarrasser de l'avertissement en modifiant la ligne 669 en ceci ...

XXX

... mais cela ne résout pas le problème de savoir pourquoi $ what n'est pas défini de toute façon. Cependant, je finis toujours par voir que "Appuyez sur ESPACE et ENTRÉE pour désactiver la boucle" remplissant l'écran. Et la même chose se produit si je tape "manual" et appuie sur Entrée au lieu d'accepter l'option local :: lib par défaut.


10 commentaires

Ce fil aide-t-il en quelque sorte? stackoverflow.com/ questions / 10483574 /…


Je suppose que cela dépend beaucoup des modules CPAN que vous souhaitez installer. Il peut être difficile de couvrir tous les packages possibles sur CPAN. Même sur un système Linux, vous devez souvent installer des bibliothèques de développement pour pouvoir installer un module CPAN.


Pouvez-vous afficher les messages de sortie ou d'erreur? Pour ce que ça vaut, j'ai écrit cpan .


@Skeeve, ce fil est utile en présentant des moyens de surmonter mon problème. Mais il le fait en s'écartant de la méthode "cpan install ..." que j'essaie de faire fonctionner. C'est la seule façon dont j'ai installé des modules auparavant, et je préfère utiliser la même méthode sous cygwin64, au lieu d'apprendre à utiliser une méthode différente pour cet environnement.


@Brian, je connais déjà votre nom. Je ne savais pas que vous aviez écrit cpan, mais vos commentaires m'ont aidé avec mes questions perl ici avant et je vous vois souvent résoudre ou aider / améliorer de manière constructive les questions perl des autres ici. J'essayais d'éviter de publier un message de sortie / d'erreur à ce stade, car je viens de manquer un paquet très trivial et j'espérais ne pas avoir l'air aussi stupide que je pourrais l'être. Mais votre approche est parfaitement logique, alors essayons de créer mon environnement à partir de zéro! Voir l'ajout n ° 1.


Je pense que l'erreur $ what est inoffensive et disparaîtra si vous mettez à jour cpan lui-même ( cpan CPAN )


@Skeeve, cela n'aide pas. Ils essaient de configurer cpan afin de pouvoir exécuter des commandes telles que celles des questions-réponses que vous avez liées.


Re " Vous n'avez pas la permission d'écrire pour les répertoires de bibliothèque Perl. " Cela me semble bizarre. Cygwin a-t-il été installé par un autre utilisateur que vous? Si ce n'était pas pour ça, je vous dirais d'éviter local :: lib.


"Appuyez sur ESPACE et ENTRÉE pour désactiver curl" Vous devrez peut-être installer libcurl-devel ou libcurl4 pour résoudre ce problème


libcurl4 était déjà installé. Doit être venu en tant que dépendance avec l'un des packages que j'ai installés précédemment.


3 Réponses :


2
votes

En vous basant sur votre sortie cpan , vous pouvez essayer d'utiliser le programme d'installation de Cygwin pour installer les packages supplémentaires suivants avant de réexécuter cpan :

  • ALERTE: 'make' est un outil essentiel pour construire des modules perl. -> installer le paquet make .

  • Appuyez sur ESPACE et ENTRÉE pour désactiver curl , installez le package curl . De plus, je pense que les packages gcc et gcc-g ++ sont nécessaires à l'installation de nombreux modules CPAN. Ensuite, libcrypt-devel peut être requis pour les choses liées à SSH, et libreadline-devel est agréable à avoir pour le rappel de l'historique dans la fenêtre du terminal Cygwin.

  • En option, la bibliothèque GNU MP Bignum peut être installée: libgmp-devel . J'ajouterai plus au fur et à mesure que je reçois des commentaires de votre part :)

0 commentaires

1
votes

Basé sur mon propre ensemble de packages installés et ma mémoire pour savoir lesquels sont utiles dans la chaîne d'outils cpan:

binutils
bzip2
clang
cmake
gcc-core
gcc-g++
gccmakedep
make
curl  and/or  wget


1 commentaires

Utilisez la configuration cygwin pour installer les modules cpan lorsqu'il existe un package cygwin pour le module. Je pense que vous pouvez ensuite utiliser cpan pour mettre à niveau le module. Obtenez votre liste de modules requis et recherchez-les dans la configuration. Ensuite, installez le reste de vos modules requis à l'aide de cpan. C'est un processus itératif. Ma compréhension limitée est que cela est nécessaire lorsqu'un portage vers cygwin est nécessaire pour installer le module, mais le module cpan en amont n'inclut pas ce portage. Pour plus d'informations, demandez sur la liste de diffusion cygwin,



1
votes

Les choses ont pris une tournure intéressante. J'ai remarqué que même si j'avais curl depuis le tout début (fourni avec l'environnement cygwin par défaut le plus basique), je ne l'ai jamais installé (pas via l'installateur cygwin).

keve@cygtest ~
$ cpan
Loading internal null logger. Install Log::Log4perl for logging messages
Sorry, we have to rerun the configuration dialog for CPAN.pm due to
some missing parameters. Configuration will be written to
 <</home/keve/.cpan/CPAN/MyConfig.pm>>


CPAN.pm requires configuration, but most of it can be done automatically.
If you answer 'no' below, you will enter an interactive dialog for each
configuration option instead.

Would you like to configure as much as possible automatically? [yes]

Use of uninitialized value $what in concatenation (.) or string at /usr/share/perl5/5.26/App/Cpan.pm line 669, <STDIN> line 1.
 <install_help>

Warning: You do not have write permission for Perl library directories.

To install modules, you need to configure a local Perl library directory or
escalate your privileges.  CPAN can help you by bootstrapping the local::lib
module or by configuring itself to use 'sudo' (if available).  You may also
resolve this problem manually if you need to customize your setup.

What approach do you want?  (Choose 'local::lib', 'sudo' or 'manual')
 [local::lib]


Autoconfiguration complete.

Attempting to bootstrap local::lib...

Writing /home/keve/.cpan/CPAN/MyConfig.pm for bootstrap...
commit: wrote '/home/keve/.cpan/CPAN/MyConfig.pm'
Fetching with HTTP::Tiny:
http://www.cpan.org/authors/01mailrc.txt.gz
Reading '/home/keve/.cpan/sources/authors/01mailrc.txt.gz'
............................................................................DONE
Fetching with HTTP::Tiny:
http://www.cpan.org/modules/02packages.details.txt.gz
Reading '/home/keve/.cpan/sources/modules/02packages.details.txt.gz'
  Database was generated on Sat, 01 Jun 2019 09:17:02 GMT
  HTTP::Date not available
.............
  New CPAN.pm version (v2.26) available.
  [Currently running version is v2.18]
  You might want to try
    install CPAN
    reload cpan
  to both upgrade CPAN.pm and run the new version without leaving
  the current session.


...............................................................DONE
Fetching with HTTP::Tiny:
http://www.cpan.org/modules/03modlist.data.gz
Reading '/home/keve/.cpan/sources/modules/03modlist.data.gz'
DONE
Writing /home/keve/.cpan/Metadata
Fetching with HTTP::Tiny:
http://www.cpan.org/authors/id/H/HA/HAARG/local-lib-2.000024.tar.gz
Fetching with HTTP::Tiny:
http://www.cpan.org/authors/id/H/HA/HAARG/CHECKSUMS
Checksum for /home/keve/.cpan/sources/authors/id/H/HA/HAARG/local-lib-2.000024.tar.gz ok
'YAML' not installed, will not store persistent state
Configuring H/HA/HAARG/local-lib-2.000024.tar.gz with Makefile.PL
Attempting to create directory /home/keve/perl5

Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for local::lib
Writing MYMETA.yml and MYMETA.json
  HAARG/local-lib-2.000024.tar.gz
  /usr/bin/perl Makefile.PL --bootstrap -- OK
Running make for H/HA/HAARG/local-lib-2.000024.tar.gz
cp lib/local/lib.pm blib/lib/local/lib.pm
cp lib/POD2/PT_BR/local/lib.pod blib/lib/POD2/PT_BR/local/lib.pod
cp lib/POD2/DE/local/lib.pod blib/lib/POD2/DE/local/lib.pod
cp lib/lib/core/only.pm blib/lib/lib/core/only.pm
Manifying 4 pod documents
  HAARG/local-lib-2.000024.tar.gz
  /usr/bin/make -- OK
Running make test
PERL_DL_NONLAZY=1 "/usr/bin/perl.exe" "-I/home/keve/perl5/lib/perl5" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/bad_variables.t ...... ok
t/carp-mismatch.t ...... ok
t/classmethod.t ........ ok
t/de-dup.t ............. ok
t/lib-core-only.t ...... ok
t/pipeline.t ........... ok
t/shell.t .............. ok
t/stackable.t .......... ok
t/subroutine-in-inc.t .. ok
t/taint-mode.t ......... ok
All tests successful.
Files=10, Tests=172, 29 wallclock secs ( 0.03 usr  0.17 sys +  4.24 cusr 11.30 csys = 15.74 CPU)
Result: PASS
  HAARG/local-lib-2.000024.tar.gz
  /usr/bin/make test -- OK
Running make install
Manifying 4 pod documents
Installing /home/keve/perl5/lib/perl5/lib/core/only.pm
Installing /home/keve/perl5/lib/perl5/local/lib.pm
Installing /home/keve/perl5/lib/perl5/POD2/DE/local/lib.pod
Installing /home/keve/perl5/lib/perl5/POD2/PT_BR/local/lib.pod
Installing /home/keve/perl5/man/man3/lib.core.only.3pm
Installing /home/keve/perl5/man/man3/local.lib.3pm
Installing /home/keve/perl5/man/man3/POD2.DE.local.lib.3pm
Installing /home/keve/perl5/man/man3/POD2.PT_BR.local.lib.3pm
Appending installation info to /home/keve/perl5/lib/perl5/x86_64-cygwin-threads-multi/perllocal.pod
  HAARG/local-lib-2.000024.tar.gz
  /usr/bin/make install  -- OK

local::lib is installed. You must now add the following environment variables
to your shell configuration files (or registry, if you are on Windows) and
then restart your command line shell and CPAN before installing modules:

PATH="/home/keve/perl5/bin${PATH:+:${PATH}}"; export PATH;
PERL5LIB="/home/keve/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB;
PERL_LOCAL_LIB_ROOT="/home/keve/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT;
PERL_MB_OPT="--install_base \"/home/keve/perl5\""; export PERL_MB_OPT;
PERL_MM_OPT="INSTALL_BASE=/home/keve/perl5"; export PERL_MM_OPT;

Would you like me to append that to /home/keve/.bashrc now? [yes]


commit: wrote '/home/keve/.cpan/CPAN/MyConfig.pm'

You can re-run configuration any time with 'o conf init' in the CPAN shell
Terminal does not support AddHistory.

cpan shell -- CPAN exploration and modules installation (v2.18)
Enter 'h' for help.

cpan[1]>

Et il y a un package curl disponible pour marquer pour l'installation. J'ai donc installé Net / curl via la configuration de cygwin, puis j'ai obtenu ceci.

keve@cygtest ~
$ which curl
/usr/bin/curl

keve@cygtest ~
$ curl --version
curl 7.65.0 (x86_64-pc-cygwin) libcurl/7.65.0 OpenSSL/1.1.1b zlib/1.2.11 brotli/1.0.7 libidn2/2.0.4 libpsl/0.18.0 (+libidn2/2.0.2) libssh/0.8.7/openssl/zlib nghttp2/1.37.0
Release-Date: 2019-05-22
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: AsynchDNS brotli Debug GSS-API HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz Metalink NTLM NTLM_WB PSL SPNEGO SSL TLS-SRP TrackMemory UnixSockets

keve@cygtest ~
$ which -a curl
/usr/bin/curl
/cygdrive/c/Windows/system32/curl

À ce stade, cpan n'a plus imprimé le message «Appuyez sur ESPACE et ENTRÉE pour désactiver curl», mais a commencé à se comporter comme prévu.

keve@cygtest ~
$ curl --version
curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL
Release-Date: [unreleased]
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps     telnet tftp
Features: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL

keve@cygtest ~
$ which curl
/cygdrive/c/Windows/system32/curl

Et maintenant, je peux commencer à construire des modules par la méthode habituelle "installer désiré :: package". Alors j'ai finalement atteint ce que je voulais. Fait intéressant, chaque module que je voulais créer n'a pas pu être créé. Mais au moins, ils ont échoué d'une manière que je connais depuis * nix. Donc c'est maintenant un autre problème pour un autre jour.

Pour répondre à ma question initiale: pour obtenir un "cpan" fonctionnel sous cygwin, vous devez installer au moins ces paquets. . .

  • devel / binutils
  • devel / clang
  • devel / cmake
  • devel / gcc-core
  • devel / gcc-g ++
  • devel / gccmakedep
  • développer / fabriquer
  • Net / curl

Le dernier, Net / curl est extrêmement important. Parce que l'environnement cygwin de base a déjà une boucle fonctionnelle, mais "cpan" ne fonctionne pas avec cela. Vous devez installer le package Net / curl via la configuration cygwin. Cela éliminera les messages "Appuyez sur ESPACE et ENTREE pour désactiver la boucle" qui remplissent la fenêtre lors de l'exécution de "cpan".


1 commentaires

Génial! Veuillez signaler ce résultat sur le suivi des problèmes afin que le comportement de cpan soit Cygwin peut être amélioré pour les futurs utilisateurs.