zowe / zowe-cli-scs-plugin

The secure credential store plugin for Zowe CLI, leveraging keytar and the OS keychain to securely access and store sensitive user credentials normally stored in CLI profiles.
Eclipse Public License 2.0
8 stars 3 forks source link

Python prerequisites to install Zowe SCS #42

Closed FALLAI-Denis closed 2 years ago

FALLAI-Denis commented 3 years ago

The installation of Zowe SCS version 4.1.5, on Windows, requires the prior installation of Python ...

We do not have Python on our workstations, and it is not envisaged to have it ... (for various reasons including internal security rules).

Is it possible to return to independence with respect to Python, or to use a scripting language by definition present on the workstation, namely JavaScript?

>zowe plugins update @zowe/secure-credential-store-for-zowe-cli
npm ERR! code 1
npm ERR! path C:\Users\{username}\.zowe\plugins\installed\node_modules\@zowe\secure-credential-store-for-zowe-cli\node_modules\keytar
npm ERR! command failed
npm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c prebuild-install || npm run build
npm ERR! > keytar@7.7.0 build
npm ERR! > node-gyp rebuild
npm ERR! prebuild-install WARN install unable to get local issuer certificate
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using node-gyp@7.1.2
npm ERR! gyp info using node@16.0.0 | win32 | x64
npm ERR! gyp ERR! find Python
npm ERR! gyp ERR! find Python Python is not set from command line or npm configuration
npm ERR! gyp ERR! find Python Python is not set from environment variable PYTHON
npm ERR! gyp ERR! find Python checking if "python3" can be used
npm ERR! gyp ERR! find Python - "python3" is not in PATH or produced an error
npm ERR! gyp ERR! find Python checking if "python" can be used
npm ERR! gyp ERR! find Python - "python" is not in PATH or produced an error
npm ERR! gyp ERR! find Python checking if "python2" can be used
npm ERR! gyp ERR! find Python - "python2" is not in PATH or produced an error
npm ERR! gyp ERR! find Python checking if Python is C:\Python37\python.exe
npm ERR! gyp ERR! find Python - "C:\Python37\python.exe" could not be run
npm ERR! gyp ERR! find Python checking if Python is C:\Python27\python.exe
npm ERR! gyp ERR! find Python - "C:\Python27\python.exe" could not be run
npm ERR! gyp ERR! find Python checking if the py launcher can be used to find Python
npm ERR! gyp ERR! find Python - "py.exe" is not in PATH or produced an error
npm ERR! gyp ERR! find Python
npm ERR! gyp ERR! find Python **********************************************************
npm ERR! gyp ERR! find Python You need to install the latest version of Python.
npm ERR! gyp ERR! find Python Node-gyp should be able to find and use Python. If not,
npm ERR! gyp ERR! find Python you can try one of the following options:
npm ERR! gyp ERR! find Python - Use the switch --python="C:\Path\To\python.exe"
npm ERR! gyp ERR! find Python   (accepted by both node-gyp and npm)
npm ERR! gyp ERR! find Python - Set the environment variable PYTHON
npm ERR! gyp ERR! find Python - Set the npm configuration variable python:
npm ERR! gyp ERR! find Python   npm config set python "C:\Path\To\python.exe"
npm ERR! gyp ERR! find Python For more information consult the documentation at:
npm ERR! gyp ERR! find Python https://github.com/nodejs/node-gyp#installation
npm ERR! gyp ERR! find Python **********************************************************
npm ERR! gyp ERR! find Python
npm ERR! gyp ERR! configure error
npm ERR! gyp ERR! stack Error: Could not find any Python installation to use
npm ERR! gyp ERR! stack     at PythonFinder.fail (C:\ProgramData\nvm\v16.0.0\node_modules\npm\node_modules\node-gyp\lib\find-python.js:302:47)
npm ERR! gyp ERR! stack     at PythonFinder.runChecks (C:\ProgramData\nvm\v16.0.0\node_modules\npm\node_modules\node-gyp\lib\find-python.js:136:21)
npm ERR! gyp ERR! stack     at PythonFinder.<anonymous> (C:\ProgramData\nvm\v16.0.0\node_modules\npm\node_modules\node-gyp\lib\find-python.js:200:18)
npm ERR! gyp ERR! stack     at PythonFinder.execFileCallback (C:\ProgramData\nvm\v16.0.0\node_modules\npm\node_modules\node-gyp\lib\find-python.js:266:16)
npm ERR! gyp ERR! stack     at exithandler (node:child_process:333:5)
npm ERR! gyp ERR! stack     at ChildProcess.errorhandler (node:child_process:345:5)
npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:365:28)
npm ERR! gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:288:12)
npm ERR! gyp ERR! stack     at onErrorNT (node:internal/child_process:480:16)
npm ERR! gyp ERR! stack     at processTicksAndRejections (node:internal/process/task_queues:83:21)
npm ERR! gyp ERR! System Windows_NT 10.0.14393
npm ERR! gyp ERR! command "C:\\ProgramData\\nodejs\\node.exe" "C:\\ProgramData\\nvm\\v16.0.0\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
npm ERR! gyp ERR! cwd C:\Users\{username}\.zowe\plugins\installed\node_modules\@zowe\secure-credential-store-for-zowe-cli\node_modules\keytar
npm ERR! gyp ERR! node -v v16.0.0
npm ERR! gyp ERR! node-gyp -v v7.1.2
npm ERR! gyp ERR! not ok

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\{username}\AppData\Local\npm-cache\_logs\2021-05-21T09_45_06_750Z-debug.log
Command Error:
Command failed: "C:\ProgramData\nodejs\node.exe" "C:\ProgramData\nvm\v16.0.0\node_modules\npm" install "@zowe/secure-credential-store-for-zowe-cli" --prefix "C:\Users\{username}\.zowe\plugins\installed" -g --registry "https://registry.npmjs.org/" --legacy-peer-deps
MikeBauerCA commented 3 years ago

The SCS does not require Python to be installed.

We use pre-built binaries so that Python does not have to be installed on the machine. It appears that you were unable to retrieve the prebuilds due to a certificate issue. Then it falls back to try to build locally, which does require Python.

npm ERR! prebuild-install WARN install unable to get local issuer certificate

You may try installing from a local package which includes the prebuilds (download from zowe.org) or doing this as a temp fix -> set NODE_TLS_REJECT_UNAUTHORIZED=0

Note that set NODE_TLS_REJECT_UNAUTHORIZED=0 goes around TLS certificate validation and has security implications.

@t1m0thyj @awharn

MikeBauerCA commented 3 years ago

@FALLAI-Denis also if you had this install working previously at your site, please check that you are using the same VPN connection (might be a potential quick resolution).

FALLAI-Denis commented 3 years ago

We are behind a firewall, like many businesses, and Internet access is restricted. In addition, due to the COVID epidemic, we are in telecommuting mode from home and connected via a VPN to our corporate network.

I tested the second option: the installation freezes.

>set NODE_TLS_REJECT_UNAUTHORIZED=0

>zowe plugins update @zowe/secure-credential-store-for-zowe-cli
(node:11068) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification.
(Use `node --trace-warnings ...` to show where the warning was created)
[                  ] / reify:@zowe/secure-credential-store-for-zowe-cli: timing reifyNode:node_modules/@zowe/secure-cre

I canceled it.

npm ERR! process terminated
npm ERR! signal SIGINT

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\{username}\AppData\Local\npm-cache\_logs\2021-05-21T13_15_35_659Z-debug.log

I tested the first option: (download version 1.21.0 from https://www.zowe.org/download.html)

The installation freezes...

>zowe plugins install secure-credential-store-for-zowe-cli.tgz
Plug-ins within the Imperative CLI Framework can legitimately gain
control of the zowe CLI application during the execution of every command.
Install 3rd party plug-ins at your own risk.

Imperative's plugin installation program handles @zowe peer dependencies.
You can safely ignore NPM warnings about missing @zowe peer dependencies.

Registry = https://registry.npmjs.org/

_______________________________________________________________
(node:4700) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification.
(Use `node --trace-warnings ...` to show where the warning was created)
[                  ] / reify:@zowe/secure-credential-store-for-zowe-cli: timing reify:createSparse Completed in 0ms
MikeBauerCA commented 3 years ago

Let's stick with the first option for now (install from local package). Can you first ensure the SCS is uninstalled (I want to see if it is hanging on uninstall or install)? -> zowe plugins uninstall @zowe/secure-credential-store-for-zowe-cli

Please ensure that you do not see a secure-credential-store-for-zowe-cli folder in -> C:\Users\{username}\.zowe\plugins\installed\node_modules\@zowe

If it is still there, manually delete it.

FALLAI-Denis commented 3 years ago

Uninstall @zowe/secure-credential-store-for-zowe-cli : done

Verify C:\Users{username}.zowe\plugins\installed\node_modules\@zowe : done --> cics-for-zowe-cli --> db2-for-zowe-cli --> zos-ftp-for-zowe-cli

>zowe plugins list
[2021/05/21 19:05:47] [ERROR] [CredentialManagerFactory.js:148] Failed to override the credential manager with one provided by "@zowe/secure-credential-store-for-zowe-cli"
[2021/05/21 19:05:48] [ERROR] [CredentialManagerFactory.js:150] You attempted to override the "CredentialManager" setting with a plugin named "@zowe/secure-credential-store-for-zowe-cli" that is not installed and loadable.
We will use a "CredentialManager" that purposely fails until you reconfigure.

Installed plugins:

 -- pluginName: @zowe/cics-for-zowe-cli
 -- package: @zowe/cics-for-zowe-cli
 -- version: 4.0.2
 -- registry: https://registry.npmjs.org/

 -- pluginName: @zowe/zos-ftp-for-zowe-cli
 -- package: @zowe/zos-ftp-for-zowe-cli
 -- version: 1.6.0
 -- registry: https://registry.npmjs.org/

 -- pluginName: @broadcom/endevor-for-zowe-cli
 -- package: @broadcom/endevor-for-zowe-cli
 -- version: 6.1.8
 -- registry: https://registry.npmjs.org/

 -- pluginName: @broadcom/endevor-bridge-for-git-for-zowe-cli
 -- package: @broadcom/endevor-bridge-for-git-for-zowe-cli
 -- version: 2.1.0
 -- registry: https://registry.npmjs.org/

 -- pluginName: @ibm/rse-api-for-zowe-cli
 -- package: @ibm/rse-api-for-zowe-cli
 -- version: 1.2.0
 -- registry: https://registry.npmjs.org/

 -- pluginName: @zowe/db2-for-zowe-cli
 -- package: @zowe/db2-for-zowe-cli
 -- version: 4.0.7
 -- registry: https://registry.npmjs.org/
>set NODE_TLS_REJECT_UNAUTHORIZED=0

>zowe plugins install secure-credential-store-for-zowe-cli.tgz
[2021/05/21 19:05:35] [ERROR] [CredentialManagerFactory.js:148] Failed to override the credential manager with one provided by "@zowe/secure-credential-store-for-zowe-cli"
[2021/05/21 19:05:35] [ERROR] [CredentialManagerFactory.js:150] You attempted to override the "CredentialManager" setting with a plugin named "@zowe/secure-credential-store-for-zowe-cli" that is not installed and loadable.
We will use a "CredentialManager" that purposely fails until you reconfigure.
Plug-ins within the Imperative CLI Framework can legitimately gain
control of the zowe CLI application during the execution of every command.
Install 3rd party plug-ins at your own risk.

Imperative's plugin installation program handles @zowe peer dependencies.
You can safely ignore NPM warnings about missing @zowe peer dependencies.

Registry = https://registry.npmjs.org/

_______________________________________________________________
(node:15600) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification.
(Use `node --trace-warnings ...` to show where the warning was created)
npm ERR! code 1
npm ERR! path C:\Users\{username}\.zowe\plugins\installed\node_modules\@zowe\secure-credential-store-for-zowe-cli\node_modules\keytar
npm ERR! command failed
npm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c prebuild-install || node-gyp rebuild
npm ERR! (node:13664) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification.
npm ERR! (Use `node --trace-warnings ...` to show where the warning was created)
npm ERR! prebuild-install WARN install No prebuilt binaries found (target=16.0.0 runtime=node arch=x64 libc= platform=win32)
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using node-gyp@7.1.2
npm ERR! gyp info using node@16.0.0 | win32 | x64
npm ERR! gyp ERR! find Python
npm ERR! gyp ERR! find Python Python is not set from command line or npm configuration
npm ERR! gyp ERR! find Python Python is not set from environment variable PYTHON
npm ERR! gyp ERR! find Python checking if "python3" can be used
npm ERR! gyp ERR! find Python - "python3" is not in PATH or produced an error
npm ERR! gyp ERR! find Python checking if "python" can be used
npm ERR! gyp ERR! find Python - "python" is not in PATH or produced an error
npm ERR! gyp ERR! find Python checking if "python2" can be used
npm ERR! gyp ERR! find Python - "python2" is not in PATH or produced an error
npm ERR! gyp ERR! find Python checking if Python is C:\Python37\python.exe
npm ERR! gyp ERR! find Python - "C:\Python37\python.exe" could not be run
npm ERR! gyp ERR! find Python checking if Python is C:\Python27\python.exe
npm ERR! gyp ERR! find Python - "C:\Python27\python.exe" could not be run
npm ERR! gyp ERR! find Python checking if the py launcher can be used to find Python
npm ERR! gyp ERR! find Python - "py.exe" is not in PATH or produced an error
npm ERR! gyp ERR! find Python
npm ERR! gyp ERR! find Python **********************************************************
npm ERR! gyp ERR! find Python You need to install the latest version of Python.
npm ERR! gyp ERR! find Python Node-gyp should be able to find and use Python. If not,
npm ERR! gyp ERR! find Python you can try one of the following options:
npm ERR! gyp ERR! find Python - Use the switch --python="C:\Path\To\python.exe"
npm ERR! gyp ERR! find Python   (accepted by both node-gyp and npm)
npm ERR! gyp ERR! find Python - Set the environment variable PYTHON
npm ERR! gyp ERR! find Python - Set the npm configuration variable python:
npm ERR! gyp ERR! find Python   npm config set python "C:\Path\To\python.exe"
npm ERR! gyp ERR! find Python For more information consult the documentation at:
npm ERR! gyp ERR! find Python https://github.com/nodejs/node-gyp#installation
npm ERR! gyp ERR! find Python **********************************************************
npm ERR! gyp ERR! find Python
npm ERR! gyp ERR! configure error
npm ERR! gyp ERR! stack Error: Could not find any Python installation to use
npm ERR! gyp ERR! stack     at PythonFinder.fail (C:\ProgramData\nvm\v16.0.0\node_modules\npm\node_modules\node-gyp\lib\find-python.js:302:47)
npm ERR! gyp ERR! stack     at PythonFinder.runChecks (C:\ProgramData\nvm\v16.0.0\node_modules\npm\node_modules\node-gyp\lib\find-python.js:136:21)
npm ERR! gyp ERR! stack     at PythonFinder.<anonymous> (C:\ProgramData\nvm\v16.0.0\node_modules\npm\node_modules\node-gyp\lib\find-python.js:200:18)
npm ERR! gyp ERR! stack     at PythonFinder.execFileCallback (C:\ProgramData\nvm\v16.0.0\node_modules\npm\node_modules\node-gyp\lib\find-python.js:266:16)
npm ERR! gyp ERR! stack     at exithandler (node:child_process:333:5)
npm ERR! gyp ERR! stack     at ChildProcess.errorhandler (node:child_process:345:5)
npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:365:28)
npm ERR! gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:288:12)
npm ERR! gyp ERR! stack     at onErrorNT (node:internal/child_process:480:16)
npm ERR! gyp ERR! stack     at processTicksAndRejections (node:internal/process/task_queues:83:21)
npm ERR! gyp ERR! System Windows_NT 10.0.14393
npm ERR! gyp ERR! command "C:\\ProgramData\\nodejs\\node.exe" "C:\\ProgramData\\nvm\\v16.0.0\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
npm ERR! gyp ERR! cwd C:\Users\{username}\.zowe\plugins\installed\node_modules\@zowe\secure-credential-store-for-zowe-cli\node_modules\keytar
npm ERR! gyp ERR! node -v v16.0.0
npm ERR! gyp ERR! node-gyp -v v7.1.2
npm ERR! gyp ERR! not ok

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\{username}\AppData\Local\npm-cache\_logs\2021-05-21T17_13_12_047Z-debug.log
Command Error:
Install Failed
t1m0thyj commented 3 years ago

@FALLAI-Denis The first option (install from local package) is the one that I'd recommend as well, but I noticed from the error log above that you're using Node.js 16.

Zowe CLI only supports Long Term Support releases of Node.js and the latest LTS version is currently Node.js 14 (see nodejs.org). Could you try uninstalling Node.js 16 and install Node.js 14 instead?

The SCS version on npmjs.com (4.1.5) is newer than the version in the local package (4.1.3) and should be compatible with Node.js 16. However, I'd still recommend using an LTS version of Node.js for Zowe CLI, and installing from a local package which is less prone to firewall issues.

FALLAI-Denis commented 3 years ago
>nvm use 14.17
14.17.0
Now using node v14.17.0 (64-bit)

>set NODE_TLS_REJECT_UNAUTHORIZED=0

>npm install @zowe/cli
(node:15452) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification.
(Use `node --trace-warnings ...` to show where the warning was created)
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated har-validator@5.1.5: this library is no longer supported

> @zowe/cli@6.31.0 postinstall C:\Users\{username}\node_modules\@zowe\cli
> node ./scripts/validatePlugins

Since you re-installed Zowe CLI, we are re-validating any plugins.
[2021/05/21 19:05:12] [ERROR] [CredentialManagerFactory.js:148] Failed to override the credential manager with one provided by "@zowe/secure-credential-store-for-zowe-cli"
[2021/05/21 19:05:13] [ERROR] [CredentialManagerFactory.js:150] You attempted to override the "CredentialManager" setting with a plugin named "@zowe/secure-credential-store-for-zowe-cli" that is not installed and loadable.
We will use a "CredentialManager" that purposely fails until you reconfigure.

_____ Validation results for plugin '@zowe/cics-for-zowe-cli' _____
This plugin was successfully validated. Enjoy the plugin.

_____ Validation results for plugin '@zowe/zos-ftp-for-zowe-cli' _____
This plugin was successfully validated. Enjoy the plugin.

_____ Validation results for plugin '@broadcom/endevor-for-zowe-cli' _____
This plugin was successfully validated. Enjoy the plugin.

_____ Validation results for plugin '@broadcom/endevor-bridge-for-git-for-zowe-cli' _____
This plugin was successfully validated. Enjoy the plugin.

_____ Validation results for plugin '@ibm/rse-api-for-zowe-cli' _____
This plugin was successfully validated. Enjoy the plugin.

_____ Validation results for plugin '@zowe/db2-for-zowe-cli' _____

*** CmdError: Failed to combine command definitions. Reason = Encountered an error loading one of the files (cli/call/Call.definition.js) that matched the provided command module glob for the glob function glob (pattern, options, cb) {
  if (typeof options === 'function') cb = options, options = {}
  if (!options) options = {}

  if (options.sync) {
    if (cb)
      throw new TypeError('callback provided to sync glob')
    return globSync(pattern, options)
  }

  return new Glob(pattern, options, cb)
}: The module '\\?\C:\Users\{username}\.zowe\plugins\installed\node_modules\@zowe\db2-for-zowe-cli\node_modules\ibm_db\build\Release\odbc_bindings.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 72. This version of Node.js requires
NODE_MODULE_VERSION 83. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).

This plugin has command errors. No plugin commands will be available.

npm WARN saveError ENOENT: no such file or directory, open 'C:\Users\{username}\package.json'
npm WARN enoent ENOENT: no such file or directory, open 'C:\Users\{username}\package.json'
npm WARN {username} No description
npm WARN {username} No repository field.
npm WARN {username} No README data
npm WARN {username} No license field.

+ @zowe/cli@6.31.0
added 287 packages from 202 contributors and audited 287 packages in 84.572s

14 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

>zowe --version
'zowe' n’est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.

>npm list -g --depth=0
C:\ProgramData\nodejs
`-- npm@6.14.13

@zowe/cli not installed...

All is broken...

Some Zowe plugins are apparently not compatible with running node.js / npm through nvm (Node.js Version Manager).

Friday evening 7:30 p.m. ... the continuation Tuesday (Monday public holiday)

FALLAI-Denis commented 3 years ago

Or not...

>nvm use 16.0

>zowe plugins uninstall @zowe/db2-for-zowe-cli
[2021/05/21 19:05:99] [ERROR] [CredentialManagerFactory.js:148] Failed to override the credential manager with one provided by "@zowe/secure-credential-store-for-zowe-cli"
[2021/05/21 19:05:99] [ERROR] [CredentialManagerFactory.js:150] You attempted to override the "CredentialManager" setting with a plugin named "@zowe/secure-credential-store-for-zowe-cli" that is not installed and loadable.
We will use a "CredentialManager" that purposely fails until you reconfigure.
Removal of the npm package(s) was successful.

>nvm use 14.17
14.17.0
Now using node v14.17.0 (64-bit)

>npm install -g @zowe/cli
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
C:\ProgramData\nodejs\zowe -> C:\ProgramData\nodejs\node_modules\@zowe\cli\lib\main.js
C:\ProgramData\nodejs\bright -> C:\ProgramData\nodejs\node_modules\@zowe\cli\lib\main.js

> @zowe/cli@6.31.0 postinstall C:\ProgramData\nodejs\node_modules\@zowe\cli
> node ./scripts/validatePlugins

Since you re-installed Zowe CLI, we are re-validating any plugins.
[2021/05/21 19:05:71] [ERROR] [CredentialManagerFactory.js:148] Failed to override the credential manager with one provided by "@zowe/secure-credential-store-for-zowe-cli"
[2021/05/21 19:05:72] [ERROR] [CredentialManagerFactory.js:150] You attempted to override the "CredentialManager" setting with a plugin named "@zowe/secure-credential-store-for-zowe-cli" that is not installed and loadable.
We will use a "CredentialManager" that purposely fails until you reconfigure.

_____ Validation results for plugin '@zowe/cics-for-zowe-cli' _____
This plugin was successfully validated. Enjoy the plugin.

_____ Validation results for plugin '@zowe/zos-ftp-for-zowe-cli' _____
This plugin was successfully validated. Enjoy the plugin.

_____ Validation results for plugin '@broadcom/endevor-for-zowe-cli' _____
This plugin was successfully validated. Enjoy the plugin.

_____ Validation results for plugin '@broadcom/endevor-bridge-for-git-for-zowe-cli' _____
This plugin was successfully validated. Enjoy the plugin.

_____ Validation results for plugin '@ibm/rse-api-for-zowe-cli' _____
This plugin was successfully validated. Enjoy the plugin.
+ @zowe/cli@6.31.0
added 287 packages from 202 contributors in 41.879s

zowe --version
[2021/05/21 19:05:54] [ERROR] [CredentialManagerFactory.js:148] Failed to override the credential manager with one provided by "@zowe/secure-credential-store-for-zowe-cli"
[2021/05/21 19:05:54] [ERROR] [CredentialManagerFactory.js:150] You attempted to override the "CredentialManager" setting with a plugin named "@zowe/secure-credential-store-for-zowe-cli" that is not installed and loadable.
We will use a "CredentialManager" that purposely fails until you reconfigure.
6.31.0

>set NODE_TLS_REJECT_UNAUTHORIZED=0

>zowe plugins install secure-credential-store-for-zowe-cli.tgz
[2021/05/21 19:05:96] [ERROR] [CredentialManagerFactory.js:148] Failed to override the credential manager with one provided by "@zowe/secure-credential-store-for-zowe-cli"
[2021/05/21 19:05:97] [ERROR] [CredentialManagerFactory.js:150] You attempted to override the "CredentialManager" setting with a plugin named "@zowe/secure-credential-store-for-zowe-cli" that is not installed and loadable.
We will use a "CredentialManager" that purposely fails until you reconfigure.
Plug-ins within the Imperative CLI Framework can legitimately gain
control of the zowe CLI application during the execution of every command.
Install 3rd party plug-ins at your own risk.

Imperative's plugin installation program handles @zowe peer dependencies.
You can safely ignore NPM warnings about missing @zowe peer dependencies.

Registry = https://registry.npmjs.org/

_______________________________________________________________
[2021/05/21 19:05:67] [ERROR] [CredentialManagerFactory.js:148] Failed to override the credential manager with one provided by "@zowe/secure-credential-store-for-zowe-cli"
[2021/05/21 19:05:68] [ERROR] [CredentialManagerFactory.js:150] You attempted to override the "CredentialManager" setting with a plugin named "@zowe/secure-credential-store-for-zowe-cli" that is not installed and loadable.
We will use a "CredentialManager" that purposely fails until you reconfigure.
"The Secure Credential Store has been successfully installed. The CLI will now use the Node Keytar module to encrypt your local credentials. CLI Profiles that you have created will need to be updated because their credentials are stored in plain text and not accessible from the credential manager. Refer to the available options in the help text to update profiles 'zowe scs update -h'."
npm WARN @zowe/secure-credential-store-for-zowe-cli@4.1.3 requires a peer of @zowe/cli@^6.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN @zowe/secure-credential-store-for-zowe-cli@4.1.3 requires a peer of @zowe/imperative@^4.0.0 but none is installed. You must install peer dependencies yourself.

Installed plugin name = '@zowe/secure-credential-store-for-zowe-cli'

_____ Validation results for plugin '@zowe/secure-credential-store-for-zowe-cli' _____
This plugin was successfully validated. Enjoy the plugin.

>zowe plugins list

Installed plugins:

 -- pluginName: @zowe/cics-for-zowe-cli
 -- package: @zowe/cics-for-zowe-cli
 -- version: 4.0.2
 -- registry: https://registry.npmjs.org/

 -- pluginName: @zowe/zos-ftp-for-zowe-cli
 -- package: @zowe/zos-ftp-for-zowe-cli
 -- version: 1.6.0
 -- registry: https://registry.npmjs.org/

 -- pluginName: @broadcom/endevor-for-zowe-cli
 -- package: @broadcom/endevor-for-zowe-cli
 -- version: 6.1.8
 -- registry: https://registry.npmjs.org/

 -- pluginName: @broadcom/endevor-bridge-for-git-for-zowe-cli
 -- package: @broadcom/endevor-bridge-for-git-for-zowe-cli
 -- version: 2.1.0
 -- registry: https://registry.npmjs.org/

 -- pluginName: @ibm/rse-api-for-zowe-cli
 -- package: @ibm/rse-api-for-zowe-cli
 -- version: 1.2.0
 -- registry: https://registry.npmjs.org/

 -- pluginName: @zowe/secure-credential-store-for-zowe-cli
 -- package: @zowe/secure-credential-store-for-zowe-cli
 -- version: 4.1.3
 -- registry: https://registry.npmjs.org/

>zowe profiles list zosmf --sc
-
  name:     AMVS
  contents:
    host:               AMVS
    port:               8443
    user:               managed by @zowe/secure-credential-store-for-zowe-cli
    password:           managed by @zowe/secure-credential-store-for-zowe-cli
    rejectUnauthorized: false
    protocol:           https
    encoding:           1147
-
  name:     CNETIB
  contents:
    host:               CNETIB
    port:               8443
    user:               managed by @zowe/secure-credential-store-for-zowe-cli
    password:           managed by @zowe/secure-credential-store-for-zowe-cli
    rejectUnauthorized: false
    protocol:           https
    encoding:           1147
-
  name:     EMVS
  contents:
    host:               EMVS
    port:               8443
    user:               managed by @zowe/secure-credential-store-for-zowe-cli
    password:           managed by @zowe/secure-credential-store-for-zowe-cli
    rejectUnauthorized: false
    protocol:           https
    encoding:           1147
-
  name:     GMVS
  contents:
    host:               gmvs
    port:               8443
    user:               managed by @zowe/secure-credential-store-for-zowe-cli
    password:           managed by @zowe/secure-credential-store-for-zowe-cli
    rejectUnauthorized: false
    protocol:           https
    encoding:           1147
-
  name:     JEMVS
  contents:
    host:               EMVS
    port:               8443
    user:               managed by @zowe/secure-credential-store-for-zowe-cli
    password:           managed by @zowe/secure-credential-store-for-zowe-cli
    rejectUnauthorized: false
    protocol:           https
    encoding:           1147
-
  name:     JGMVS
  contents:
    host:               GMVS
    port:               8443
    user:               managed by @zowe/secure-credential-store-for-zowe-cli
    password:           managed by @zowe/secure-credential-store-for-zowe-cli
    rejectUnauthorized: false
    protocol:           https
    encoding:           1147
-
  name:     JSYSB
  contents:
    host:               SYSB
    port:               8443
    user:               managed by @zowe/secure-credential-store-for-zowe-cli
    password:           managed by @zowe/secure-credential-store-for-zowe-cli
    rejectUnauthorized: false
    protocol:           https
    encoding:           1147
-
  name:     JTMVS
  contents:
    host:               TMVS
    port:               8443
    user:               managed by @zowe/secure-credential-store-for-zowe-cli
    password:           managed by @zowe/secure-credential-store-for-zowe-cli
    rejectUnauthorized: false
    protocol:           https
    encoding:           1147
-
  name:     SYSB
  contents:
    host:               SYSB
    port:               8443
    user:               managed by @zowe/secure-credential-store-for-zowe-cli
    password:           managed by @zowe/secure-credential-store-for-zowe-cli
    rejectUnauthorized: false
    protocol:           https
    encoding:           1147
-
  name:     TMVS (default)
  contents:
    host:               TMVS
    port:               8443
    rejectUnauthorized: false
    encoding:           1147
    user:               managed by @zowe/secure-credential-store-for-zowe-cli
    password:           managed by @zowe/secure-credential-store-for-zowe-cli
    protocol:           https
-
  name:     TMVSML
  contents:
    host:               TMVS
    port:               7554
    basePath:           api/v1
    encoding:           1147
    user:               managed by @zowe/secure-credential-store-for-zowe-cli
    password:           managed by @zowe/secure-credential-store-for-zowe-cli
    rejectUnauthorized: false
    protocol:           https

Zowe installation repaired, but SCS not in expected version...

MikeBauerCA commented 3 years ago

4.1.3 is what is in the bundle on Zowe.org. 4.1.5 should make it into the next update on Zowe.org. Because the other problems were resolved, and you have set NODE_TLS_REJECT_UNAUTHORIZED=0, you could try uninstalling SCS again and installing from the registry to try to get 4.1.5.

FALLAI-Denis commented 3 years ago

Trying to reinstall @zowe/secure-credential-store-for-zowe-cli 4.1.5 from registry...

Succeed with set NODE_TLS_REJECT_UNAUTHORIZED=0

But now, I have an error message Keytar not Installed each time I try to update a profile...

I succeed to update profiles (zosmf) from VS Code... but they are managed by Zowe Explorer...

zowe scs revert -f See message: Secure credential manager is still enabled for new profiles. To disable it, uninstall this plugin or run "zowe config reset CredentialManager".

Uninstall scs one more time... zowe config reset CredentialManager Reinstall scs one more time...

Finally works ...

All this is not very clear ...

FALLAI-Denis commented 3 years ago

Hi,

We are still having problems installing version 4.1.5 of the Secure Credentials Store plugin, related to Python.

These problems are almost systematic, even when applying the procedure described above, without identifying the cause. The logs do not provide relevant information on the problem encountered.

The problem appeared with version 4.1.5 and did not exist with previous versions.

We work with Windows 10 x64 workstations, without administrator rights, and behind a firewall. npm is configured to handle the connection through the corporate proxy, and the @zowe scope is associated with the https://registry.npmjs.org registry.

For lack of a solution, we have given instructions not to install / use this plugin anymore.

FALLAI-Denis commented 3 years ago

PS : and now same problem with @zowe/cli 6.33.3 !

>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild )
gyp ERR! find Python
gyp ERR! find Python Python is not set from command line or npm configuration
gyp ERR! find Python Python is not set from environment variable PYTHON
gyp ERR! find Python checking if "python" can be used
gyp ERR! find Python - "python" is not in PATH or produced an error
gyp ERR! find Python checking if "python2" can be used
gyp ERR! find Python - "python2" is not in PATH or produced an error
gyp ERR! find Python checking if "python3" can be used
gyp ERR! find Python - "python3" is not in PATH or produced an error
gyp ERR! find Python checking if the py launcher can be used to find Python 2
gyp ERR! find Python - "py.exe" is not in PATH or produced an error
gyp ERR! find Python checking if Python is C:\Python27\python.exe
gyp ERR! find Python - "C:\Python27\python.exe" could not be run
gyp ERR! find Python checking if Python is C:\Python37\python.exe
gyp ERR! find Python - "C:\Python37\python.exe" could not be run
gyp ERR! find Python
gyp ERR! find Python **********************************************************
gyp ERR! find Python You need to install the latest version of Python.
gyp ERR! find Python Node-gyp should be able to find and use Python. If not,
gyp ERR! find Python you can try one of the following options:
gyp ERR! find Python - Use the switch --python="C:\Path\To\python.exe"
gyp ERR! find Python   (accepted by both node-gyp and npm)
gyp ERR! find Python - Set the environment variable PYTHON
gyp ERR! find Python - Set the npm configuration variable python:
gyp ERR! find Python   npm config set python "C:\Path\To\python.exe"
gyp ERR! find Python For more information consult the documentation at:
gyp ERR! find Python https://github.com/nodejs/node-gyp#installation
gyp ERR! find Python **********************************************************
gyp ERR! find Python
gyp ERR! configure error
gyp ERR! stack Error: Could not find any Python installation to use
gyp ERR! stack     at PythonFinder.fail (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-python.js:307:47)
gyp ERR! stack     at PythonFinder.runChecks (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-python.js:136:21)
gyp ERR! stack     at PythonFinder.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-python.js:225:16)
gyp ERR! stack     at PythonFinder.execFileCallback (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-python.js:271:16)
gyp ERR! stack     at exithandler (child_process.js:315:5)
gyp ERR! stack     at ChildProcess.errorhandler (child_process.js:327:5)
gyp ERR! stack     at ChildProcess.emit (events.js:315:20)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
gyp ERR! stack     at onErrorNT (internal/child_process.js:465:16)
gyp ERR! stack     at processTicksAndRejections (internal/process/task_queues.js:80:21)
gyp ERR! System Windows_NT 10.0.19043
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Users\xxxxxx\AppData\Roaming\npm\node_modules\@zowe\cli\node_modules\cpu-features
gyp ERR! node -v v14.16.0
gyp ERR! node-gyp -v v5.1.0
gyp ERR! not ok

> ssh2@1.4.0 install C:\Users\xxxxxx\AppData\Roaming\npm\node_modules\@zowe\cli\node_modules\ssh2
> node install.js

C:\Users\xxxxxxx\AppData\Roaming\npm\node_modules\@zowe\cli\node_modules\ssh2\lib\protocol\crypto>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" --target=v14.16.0 rebuild )  else (node "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" --target=v14.16.0 rebuild )
gyp ERR! find Python
gyp ERR! find Python Python is not set from command line or npm configuration
gyp ERR! find Python Python is not set from environment variable PYTHON
gyp ERR! find Python checking if "python" can be used
gyp ERR! find Python - "python" is not in PATH or produced an error
gyp ERR! find Python checking if "python2" can be used
gyp ERR! find Python - "python2" is not in PATH or produced an error
gyp ERR! find Python checking if "python3" can be used
gyp ERR! find Python - "python3" is not in PATH or produced an error
gyp ERR! find Python checking if the py launcher can be used to find Python 2
gyp ERR! find Python - "py.exe" is not in PATH or produced an error
gyp ERR! find Python checking if Python is C:\Python27\python.exe
gyp ERR! find Python - "C:\Python27\python.exe" could not be run
gyp ERR! find Python checking if Python is C:\Python37\python.exe
gyp ERR! find Python - "C:\Python37\python.exe" could not be run
gyp ERR! find Python
gyp ERR! find Python **********************************************************
gyp ERR! find Python You need to install the latest version of Python.
gyp ERR! find Python Node-gyp should be able to find and use Python. If not,
gyp ERR! find Python you can try one of the following options:
gyp ERR! find Python - Use the switch --python="C:\Path\To\python.exe"
gyp ERR! find Python   (accepted by both node-gyp and npm)
gyp ERR! find Python - Set the environment variable PYTHON
gyp ERR! find Python - Set the npm configuration variable python:
gyp ERR! find Python   npm config set python "C:\Path\To\python.exe"
gyp ERR! find Python For more information consult the documentation at:
gyp ERR! find Python https://github.com/nodejs/node-gyp#installation
gyp ERR! find Python **********************************************************
gyp ERR! find Python
gyp ERR! configure error
gyp ERR! stack Error: Could not find any Python installation to use
gyp ERR! stack     at PythonFinder.fail (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-python.js:307:47)
gyp ERR! stack     at PythonFinder.runChecks (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-python.js:136:21)
gyp ERR! stack     at PythonFinder.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-python.js:225:16)
gyp ERR! stack     at PythonFinder.execFileCallback (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-python.js:271:16)
gyp ERR! stack     at exithandler (child_process.js:315:5)
gyp ERR! stack     at ChildProcess.errorhandler (child_process.js:327:5)
gyp ERR! stack     at ChildProcess.emit (events.js:315:20)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
gyp ERR! stack     at onErrorNT (internal/child_process.js:465:16)
gyp ERR! stack     at processTicksAndRejections (internal/process/task_queues.js:80:21)
gyp ERR! System Windows_NT 10.0.19043
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "--target=v14.16.0" "rebuild"
gyp ERR! cwd C:\Users\xxxxxx\AppData\Roaming\npm\node_modules\@zowe\cli\node_modules\ssh2\lib\protocol\crypto
gyp ERR! node -v v14.16.0
gyp ERR! node-gyp -v v5.1.0
gyp ERR! not ok
Failed to build optional crypto binding

> @zowe/cli@6.33.3 postinstall C:\Users\xxxxxxx\AppData\Roaming\npm\node_modules\@zowe\cli
> node ./scripts/validatePlugins && node ./scripts/printSuccessMessage

Since you re-installed Zowe CLI, we are re-validating any plugins.

_____ Validation results for plugin '@zowe/zos-ftp-for-zowe-cli' _____
This plugin was successfully validated. Enjoy the plugin.

_____ Validation results for plugin '@ibm/rse-api-for-zowe-cli' _____
This plugin was successfully validated. Enjoy the plugin.

_____ Validation results for plugin '@zowe/tasks-for-zowe-cli' _____
This plugin was successfully validated. Enjoy the plugin.

_____ Validation results for plugin '@broadcom/endevor-for-zowe-cli' _____
This plugin was successfully validated. Enjoy the plugin.

╔═══════════════════════════════════════════════════════════════════════════════╗
║Zowe CLI has been successfully installed. You can safely ignore all non-plug-in║
║related errors and warnings. Please check above for any plug-in related issues.║
╚═══════════════════════════════════════════════════════════════════════════════╝

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: cpu-features@0.0.2 (node_modules\@zowe\cli\node_modules\cpu-features):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: cpu-features@0.0.2 install: `node-gyp rebuild`
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1

+ @zowe/cli@6.33.3
added 7 packages from 13 contributors, removed 4 packages and updated 37 packages in 106.764s
awharn commented 3 years ago

Hi Denis,

The node-gyp errors when the CLI is installed is due to an update on one of our dependencies. It attempts to build a binary on your system to determine what encryption features are available on your CPU, and biases more secure encryption algorithms to be used if the CPU has built in AES encryption support. These binaries are not required, merely suggested, but unfortunately these error messages appear if the optional pre-requisites to build the binary are not present on the system. As you can see, there is a message at the end of the installation process that states the CLI has been successfully installed.

As for the problem with the secure credential store, I believe @t1m0thyj has a little more insight into that issue.

t1m0thyj commented 3 years ago

For the SCS plugin v4.1.5, are you installing from public NPM or from a TGZ on zowe.org? The Python-related error happens when node-gyp tries to build a binary on your system. There are prebuilt binaries available on github.com, which normally are downloaded at install time but your firewall may be blocking it. In this case, we recommend trying the TGZ, which can be installed offline without Python and C++ Build Tools since the prebuilt binaries are bundled.

FALLAI-Denis commented 3 years ago

Thanks for reply.

@t1m0thyj : installing from public npm... except for people who have declared another registry by default ...

I am not an expert in the node.js world (coming from mainframe world)... I am learning from my mistakes ...

The node.js / npm installation is used for several purposes. In some cases the packages are looked for in a local registry (artifactory) and npm is configured to access this local registry... To work around this problem, I declared "scoped registry" for @zowe and @broadcom:

>npm -g config list
; cli configs
global = true
metrics-registry = "https://registry.npmjs.org/"       <-- not always true... sometimes "registry" is also declared
scope = ""
user-agent = "npm/6.12.0 node/v12.13.0 win32 x64"

; userconfig C:\Users\xxxxxx\.npmrc
@broadcom:registry = "https://registry.npmjs.org"      <-- scoped registry
@zowe:registry = "https://registry.npmjs.org"          <-- scoped registry
https-proxy = "http://our-proxy:8080/"    
proxy = "http://our-proxy:8080/"
strict-ssl = false

; node bin location = C:\Program Files\nodejs\node.exe
; cwd = C:\Users\xxxxxx
; HOME = C:\Users\xxxxxx
; "npm config ls -l" to show all defaults.

If the installation tries to download other packages, which are not in these scopes, they will be looked for in the local registry, and not found ... this may explain the problem encountered on some workstations ... Same if this secondary downloads does not use the proxy declaration made in npm...

Where and how can I find a recent version of the SCS plugin in TGZ format?

t1m0thyj commented 3 years ago

Same if this secondary downloads does not use the proxy declaration made in npm...

I believe that's what is happening here - either the secondary downloads aren't using the npm proxy setting, or they are trying to but the proxy blocks requests to github.com.

Where and how can I find a recent version of the SCS plugin in TGZ format?

You can obtain the SCS plugin in a TGZ by downloading the "Zowe 1.24 CLI Core" package from here: https://www.zowe.org/download.html Extract the secure-credential-store-for-zowe-cli.tgz file from the downloaded zip. To install from the TGZ, run zowe plugins install secure-credential-store-for-zowe-cli.tgz.

FALLAI-Denis commented 3 years ago

Yes, I see after posting previous message.

The plugin SCS version 1.4.5, format TGZ, is included in "core" version 1.24.0 downloadable from the Zowe.org site (which links to JFrog). But I have found that the versions available on Zowe.org often later behind the registy npmjs.

I think that in the future, for the versions deployed in production on our workstations, we will only use the packaged versions in TGZ format available on the Zowe.org site.

FALLAI-Denis commented 2 years ago

Hi,

We still have problems with the installation but also the uninstallation of the scs plugin ...

The default npm registry is used in our context by an application and does not point to registry.npmjs.org. We cannot modify this operation. To work around the problem we declare "scoped" registries for @zowe (and @broadcom).

But installing the scs plugin apparently requires a download of keytar which does not have a scope prefix... so installation failed... (search keytar in our registry... not in registry.npmjs.org).

Same problem when uninstalling the SCS plugin: Internet access to access keytar, (why in uninstall ? for dependencies ?)

The installation of the scs plugin is then done with the .tgz package extracted from a download from the Zowe site. The installation works, but the associated registry (although the installation is local) is the default registry declared in the npm configuration, and not the "scoped" registry for @zowe.

Example:

3EC3BBFD