PADE-Python Project Documentation
- Point of contact: John Bowyer
- Organizational unit: OCIO
- Related projects: EDC
- Related investments: Pending Public Release
- Governance status: Pending Public Release
- Program official: Erik Knudsen
Getting Started
Set up Local development environment for Python - with remote spark
Check if Python is installed
Run in bash or powershell
-
Check Python Version
```sh
python3 --version
```
or
```sh
python --version
```
- Ensure it is python 3.9.9
Install Python 3.9
Run Install Python on Ubuntu or WSL (Primary)
```sh
sudo apt update
sudo apt install python3.9
```
Update Path
```sh
nano ~/.bashrc
export PATH="/usr/bin/python3.9:$PATH"
source ~/.bashrc
```
Run Install Python on windows
Run Application
Download: https://www.python.org/ftp/python/3.9.9/python-3.9.9-embed-amd64.zip
Install as a non global user
Install Pip
Run Install Pip on Ubuntu or WSL (Primary)
```sh
sudo apt update
sudo apt-get install python3-pip
```
Run Install Pip on Windows
```sh
py -m ensurepip --upgrade
```
Install Virtual Environment
Run Install Virtual Environment on Ubuntu or WSL (Primary)
See Virtual Environment Set Reference Article
If first virtual environment on desktop
-
Open Terminal in home directory
```sh
cd $HOME
```
-
Create Directory for virtual environment
mkdir .virtualenv
- Ensure Pip is installed
sudo apt install python3-pip
- Validate pip is installed
pip3 --version
- Install virtualenv via pip3.
pip3 install virtualenv
- Validate virtualenv location
which virtualenv
- Install 3.9 venv
sudo apt install python3.9-venv
- Install Virtual Environments Wrapper
pip install virtualenvwrapper
pip3 install virtualenvwrapper
- Update path
export PATH="$HOME/.local/bin:$PATH"
export PATH="/usr/bin:$PATH"
echo WORKON_HOME="~/.virtualenvs" | sudo tee -a $HOME/.bashrc
echo VIRTUALENVWRAPPER_VIRTUALENV="$HOME/.local/bin/virtualenv" | sudo tee -a $HOME/.bashrc
echo "VIRTUALENVWRAPPER_PYTHON=$(which python3)" | sudo tee -a $HOME/.bashrc
echo "source $HOME/.local/bin/virtualenvwrapper.sh" | sudo tee -a $HOME/.bashrc
source $HOME/.bashrc
If second or later virtual environment on desktop
- Make Virtual Envs
mkvirtualenv OCIO_PADE_DEV
mkvirtualenv EZDX_FOODNET_DEV
mkvirtualenv OCIO_PADE_DEV
mkvirtualenv OD_DATALAKE_DEV
mkvirtualenv OD_NHANES_DEV
mkvirtualenv NDSP_PERTUSSIS_DEV
mkvirtualenv NDSP_PERTUSSIS_QA
mkvirtualenv NDSP_PERTUSSIS_ONBOARD
mkvirtualenv NDSP_PERTUSSIS_PROD
- If existing environment configured - deactivate
deactivate
sudo pip uninstall nodeenv
pip install nodeenv
workon {virtualenv name}
nodeenv -p
Example
deactivate
cd $HOME
sudo rm -rf node-v18.12.1-linux-x64.tar.xz
sudo rm -rf /usr/local/bin/npm /usr/local/share/man/man1/node* ~/.npm
sudo rm -rf /usr/local/lib/node*
sudo rm -rf /usr/local/bin/node*
sudo rm -rf /usr/local/include/node*
sudo apt-get purge nodejs npm
sudo apt autoremove
sudo pip uninstall nodeenv
- Activate new virtual env
deactivate
cd $HOME
sudo rm -rf node-v18.12.1-linux-x64.tar.xz
sudo apt-get purge nodejs npm
sudo apt autoremove
sudo pip uninstall nodeenv
workon VIRTUAL_ENV
workon OCIO_PADE_DEV
cd $VIRTUAL_ENV
wget https://nodejs.org/dist/v18.12.1/node-v18.12.1-linux-x64.tar.xz
tar -xf node-v18.12.1-linux-x64.tar.xz
sudo mv node-v18.12.1-linux-x64/bin/* ./bin/
sudo mv node-v18.12.1-linux-x64/lib/node_modules/ ./lib/node_modules/
node -v
npm -v
npm install npm@9.1.1
pip install --upgrade pip
pip install nodeenv
cd $VIRTUAL_ENV/lib/node_modules/npm
nodeenv -p
cd $VIRTUAL_ENV/lib
npm install @mermaid-js/mermaid-cli --registry=https://registry.npmjs.org
cdvirtualenv bin
echo "export PATH='$PATH:$VIRTUAL_ENV/lib/node_modules/.bin'" | sudo tee -a activate
source activate
mmdc -h
Remove local Virtual Environment
Run remove virtual environment on Ubuntu or WSL (Primary)
Run
deactivate
rmvirtualenv OCIO_PADE_DEV
For global
sudo rm -rf venv
For local
rm -rf OCIO_PADE_DEV
Run Unit Test Coverage Report
Run Unit Test Coverage Report on Ubuntu or WSL (Primary)
Run the following command
cd data_ecosystem_services
pytest --cov-report html tests/
Set up Local development environment for Docker
Install Docker without License on Ubuntu or WSL (Primary)
Reference 1: Install Docker Engine without Docker Desktop
Reference 2: Install Docker for WSL
Option 1: Convenience Script
Docker provides a convenience script at Docker Script to install Docker into development environments non-interactively. The convenience script isn't recommended for production environments, but it's useful for creating a provisioning script tailored to your needs.
- Run command
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Note: You will have to wait 20 seconds
2. Build and Run Image
cd .devcontainerlocal
sudo docker build -t OCIO_PADE_DEV .
sudo docker run -it --rm --name OCIO_PADE_DEV OCIO_PADE_DEV
Option 2: Manual Install
- Check that you have WSL version 2
wsl --set-default-version 2
- Remove any old docker images
sudo apt remove docker docker-engine docker.io containerd runc
- Install/Upgrade dependencies
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
- Add Docker's official GPG key
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- Add Docker's stable repository
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- Install Docker Engine and Docker Compose
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
- Verify Docker Install
sudo docker run hello-world
Install Docker without Desktop License on Windows
Docker CLI is required for managing images. It is available for install at
Set up Local development environment for EcPaas
Install Openshift
The OC Client is used to manage all resources in a project and can be downloaded from
- Install OC Client
The OCP Web sh can also be used to perform most of the project administration tasks. Additional OC information is available at OpenShift Client
Install OpenShift Postgres Setup
OpenShift Client Postgres connection
Steps to follow:
Run
oc
- Login to: Openshift
- Select AAD to log in.
- Once logged in, Select "Copy Login command"
- top right menu. This opens another login screen,
- select AAD
- click "Open token"
- Copy login token to cmd oc screen
- Run login command
- Change to correct project:
oc project "ddt-ops-center"
oc port-forward nccdphp-postgresql-test-32-btxvk 5432
- (if the pod has changed, find the correct pod name using the commands below)Get list of pods using:
oc get po
oc get po|grep post (if you are using git bash as your shell)
oc get po| findstr "post" (select only PostgreSQL pods)
- While this is running connect via Azure Data Studio
Credentials sent seperately
OpenShift Client Postgres connection Troubleshooting
- if stuck on forwarding
- click on server name in azure data studio
Set up Local development environment for Node Web Applications
Install Node on Windows
- Run Node 18.12.1 Installation MSI
- Run Update Node to latest version
npm install -g npm
Install Poetry
Run Install Poetry on Ubuntu or WSL (Primary)
Reference: StackOverflow: Poetry with Docker
- Install Poetry
cd $VIRTUAL_ENV
curl -sSL https://install.python-poetry.org | python3 -
- Copy poetry to local bin
cp $VIRTUAL_ENV/bin/poetry ~/.local/bin
Run Install Poetry on Windows
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -
Activate Virtual Environment
Run activate virutal environment
workon EZDX_FOODNET_DEV
workon OCIO_PADE_DEV
workon OD_DATALAKE_DEV
workon NDSP_PERTUSSIS_DEV
workon NDSP_PERTUSSIS_QA
workon NDSP_PERTUSSIS_ONBOARD
workon NDSP_PERTUSSIS_PROD
Update Libraries with Poetry
Prerequisites for Run Update Libraries on Ubuntu or WSL
- Clone Repository DAVT
- Open Repository in VS Code
- Set Python environment to a virtual environment such OCIO_PADE_DEV
- Open Terminal in WSL
Run Update Libraries on Ubuntu or WSL (Primary)
cd _templates/data_ecosystem_services
poetry update
Run Update Libraries on Windows
cd "C:\Users\jcbow\OneDrive - CDC\DAVT Analytics\davt-dev-jcbowyer"
poetry update
VS Code Python Settings
- Go to VS Code -> File -> Preferences -> Settings -> Workspace Settings -> Python Configuration
- Click Edit in settings.json
- Search for each of the following settings to update
- Add this line to your settings: "python.linting.pep8Args": ["--max-line-length=120"],
- Add this line to your settings: "python.linting.pep8Args": ["--ignore=E402,F841,F401,E302,E305"],
- Add this line to your settings: "python.analysis.typeCheckingMode": "basic"
VS Code Markdown Settings
For the markdown all in one exension
- Set markdown.extension.toc.levels to 2..6 to skip header
Set up Local Environment .NET Core for Web API Dev
Developer/Data Engineer Project Quick Start
- Decide on two part name of project
- Root Project: Example: ocio
- Individual Project: Example: pade
- Get access to center SharePoint and set up clone initial SharePoint lists if this is the first DAVT project in the center
- codes/value_sets
- columns
- datasets
- environments
- jobs
- pipelines
- projects
- reports
- users
- user_roles
- Create GitHub repository in GitHub CDCEnt organization named {root_project}_{individual_project}: Example: ocio_pade
- Clone GitHub repository to local machine and open in VSCode
- Create docs directory in root of project and copy standard files
- conf.py
- davt_t.docx
- davt_t.pptx
- index.rst
- lua_word.lua
- lua_pdf.lua
- lua_html_pptx.lua
- lua_md.lua
- Request top level a storage container in EDAV if this is the first EDAV project in the center
- Configure top level project folder in EDAV storage container
- Set up top level foder: example:
- Set up dev and qa subfolders: example:
- Set up ingress, archive and config subfolders: example:
- ocio_pade/dev/ingress
- ocio_pade/dev/archive
- ocio_pade/dev/config
Developer/Data Engineer Troubleshoot Problems and Errors
Problem: Java: Windows ignores JAVA_HOME
Symptom: Windows ignores JAVA_HOME
Resolution:
The Java installer will put a copy of java.exe (but no libraries) in the C:\Program Files (x86)\Common Files\Oracle\Java\javapath directory and add that directory to the beginning of the PATH variable.
If you don"t use a full path, the copy of java.exe to run is found by using the PATH system variable. Since this directory doesn"t contain the DLLs of a particular Java runtime version, one is located one by looking at the registry.
So, you either need to modify the registry, or replace the javapath entry with the version of Java you want in your PATH system (not user) variable.
Recommend setting registry
Computer\HKEY_CURRENT_USER\Environment\JAVA_HOME
C:\apps\Java\jdk1.8.0_333
Reference: Stack Overflow
Problem: Node: Unable to remove existing node_modules
Problem: Unable to remove existing local node_modules
Solution:
Run Command
cd path_with_modules
find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +
Problem: Unable to remove all existing global node_modules
Solution:
Run Command
npm ls -gp --depth=0 | awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}' | xargs npm -g rm
Problem: Python: Unable to remove existing python packages
Problem: Unable remove existing python packages
Solution: Run from elevated command prompt to removes all local packages in your environment
pip freeze | xargs pip uninstall -y
Problem: NPM Won't Run After Upgrade
Problem: NPM Won't Run After Upgrade using a manual install
Reference: Stack Overflow
Solution:
If npm is no longer installed in /usr/bin/npm, then chances are good bash(1) has hashed the executable name. The hashing saves repeated searches of all directories in your PATH every time you execute common programs. Since programs almost never change directories, this is usually a great idea. To fix this isue, remove the hash by running the following command:
hash -r.
Problem: WSL: Ubuntu: Unable to reset WSL root password in Ubuntu
Symptom: Unable to reset WSL root password in Ubuntu
Reference: AskUbuntu
Solution:
- Open cmd.exe
- Type:
wsl -u root
- Change the password:
passwd username
- Type:
exit
- Type:
wsl
- Confirm the new password works:
sudo echo hi
spark.conf.set("spark.databricks.pyspark.enablePy4JSecurity", "false")
Error: Azure B2C: The subscription is not registered to use namespace 'Microsoft.AzureActiveDirectory'.
Symptom: Receive error when creating an Azure B2C tenant: The subscription is not registered to use namespace 'Microsoft.AzureActiveDirectory'. See https://aka.ms/rps-not-found for how to register subscriptions.
Reference: Blog
Resolution:
-
Login to azure. Start up a shell and type the following command.
az login
This will start up a browser and you will need to log into Azure.
-
Get subscription list. If you have one subscription then the default will be selected. If not then you will need to check your subscriptions and then set the right one. Using the account list command you can get a list of your subscriptions.
az account list
You will get a list of subscriptions that you have access to. You can then set the subscription you want to work on.
-
Set the subscription to work on.
az account set --subscription "ZFI4-PERSONAL-DEV"
-
Register the namespace provider
az provider register --namespace Microsoft.AzureActiveDirectory
Error: Azure: ClientSecret: Secret should be an Azure Active Directory application's client secret
Symptom: Receive error: secret should be an Azure Active Directory application's client secret when calling function: credential = ClientSecretCredential(tenant_id, client_id, client_secret)
Resolution:
- If running from local jupyter notebook ensure you have set the local python environment for your project: Example: OD_NHANES_DEV
- Use the client secret of the service principal, not the client secret of the app registration.
- Ensure that the client secret of the service principal is set in the system environment variable for your application: Example: DAVT_OD_NHANES_DEV_AZURE_CLIENT_SECRET
Error: Databricks: Spark: Cannot find catalog plugin class for catalog "spark_catalog": org.apache.spark.sql.delta.catalog.DeltaCatalog
Problem: org.apache.spark.SparkException: Cannot find catalog plugin class for catalog "spark_catalog": org.apache.spark.sql.delta.catalog.DeltaCatalog
Resolution:
From your virtual environment. You can select using workon venv_name
Run
pyspark --packages io.delta:delta-core_2.12:1.0.0 --conf "spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension" --conf "spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog"
or
Copy io.delta:delta-core_2.12:1.0.0 JAR file to $SPARK_HOME/lib and restart
This should make error go away.
Reference: Stack Overflow
Error: Databricks: Error in SQL statement: SecurityException: User does not have permission SELECT on any file
Symptom: Table creation fails in Databricks with security exception: Error in SQL statement: SecurityException: User does not have permission SELECT on any file.
Reference: Databricks KB
Solution:
Run the following command:
GRANT SELECT ON ANY FILE TO `user1`
Warning
It is important to understand the security implications of granting ANY FILE permissions on a filesystem. You should only grant ANY FILE to privileged users. Users with lower privileges on the cluster should never access data by referencing an actual storage location. Instead, they should access data from tables that are created by privileged users, thus ensuring that Table ACLS are enforced.
In addition, if files in the Databricks root and data buckets are accessible by the cluster and users have MODIFY privileges, the admin should lock down the root.
Error: Databricks: Spark: Illegal character in path
Problem: Spark illegal character in path
Resolution:
run
spark-class org.apache.spark.deploy.master.Master
then
spark-shell --master spark://ip_and_port_from_step_above
example
spark-shell --master spark://192.168.86.27:7077
Reference: Stack Overflow
Error: Databricks: Spark: Cannot find catalog plugin class
Symptom: Receive error: Cannot find catalog plugin class for catalog "spark_catalog"
Resolution:
Copy delta-core_2.13-2.1.0 JAR file to $SPARK_HOME/lib and restart, this error goes away.
Error: Databricks: Spark: WARN ProcfsMetricsGetter
Symptom: Receive errror: Encountering "WARN ProcfsMetricsGetter: Exception when trying to compute pagesize" error when running Spark
Resolution
Adding PYTHONPATH environment variable with value as:
%SPARK_HOME%\python;%SPARK_HOME%\python\lib\py4j-<version>-src.zip;%PYTHONPATH%
Reference: Stack Overflow
Error: Databricks: Spark: py4j: Constructor public com.databricks.backend.daemon.dbutils.FSUtilsParallel(org.apache.spark.SparkContext) is not whitelisted
Problem: Error: py4j.security.Py4JSecurityException: Constructor public com.databricks.backend.daemon.dbutils.FSUtilsParallel(org.apache.spark.SparkContext) is not whitelisted when connecting from Databricks to ADSL from Datascience Cluster
Reference: Databricks Community Q and A
Solution:
Update function setup_spark_configuration in environment_metadata class
spark.conf.set("spark.databricks.pyspark.enablePy4JSecurity", "false")
Error: Databricks: SQL: Table creation fails with security exception
Problem: Table creation fails with security exception
Reference: Databricks KB
Solution:
GRANT SELECT ON ANY FILE TO `user1`
Warning
It is important to understand the security implications of granting ANY FILE permissions on a filesystem. You should only grant ANY FILE to privileged users. Users with lower privileges on the cluster should never access data by referencing an actual storage location. Instead, they should access data from tables that are created by privileged users, thus ensuring that Table ACLS are enforced.
In addition, if files in the Databricks root and data buckets are accessible by the cluster and users have MODIFY privileges, the admin should lock down the root.
Error: Docker: ERROR: failed to solve: error getting credentials - err: docker-credential-desktop.exe resolves to executable in current directory (./docker-credential-desktop.exe), out:
Symptom: During Docker Build Receive ERROR: failed to solve: error getting credentials - err: docker-credential-desktop.exe resolves to executable in current directory (./docker-credential-desktop.exe), out:
Reference: Stack Overflow
Solution:
-
Run command:
code ~/.docker/config.json
-
Change credsStore to credStore
-
Save
Error: Docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Symptom: Receiving error: "Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? " when trying to run a docker build command
Reference: Stack Overflow
Solution:
Run command:
sudo dockerd
Error: Docker: During connect receive message: This error may indicate that the docker daemon is not running
Symptom: Receive error: error during connect: This error may indicate that the docker daemon is not running.: when attempting to run docker image
Reference: Stack Overflow
Details:
- The error is related to message: In the default daemon configuration on Windows, the docker client must be run elevated to connect
Resolution with Docker Desktop:
- Verify that Docker Desktop application is running. If not, launch it: that will run the docker daemon (just wait few minutes).
- If the error still persists, you can try to switch Docker daemon type, as explained below:
Resolution with Powershell:
- Open Powershell as administrator
- Launch command: & 'C:\Program Files\Docker\Docker\DockerCli.exe' -SwitchDaemon
Resolution with CMD:
- Open cmd as administrator
- Launch command: "C:\Program Files\Docker\Docker\DockerCli.exe" -SwitchDaemon
Error: Git: remote: error: File x is 296.35 MB; this exceeds GitHub's file size limit of 100.00 MB
Symptom: Receive error: git push origin dev-zfi4:dev-zfi4
remote: warning: File pade/pade_ocio_ingress/ehr/encounters.csv is 87.59 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB
remote: error: Trace: 2c8fbfed93d4f4c52468dde090cd8d14a1a311d13a6aa58ea35cb9cb8c5d2577
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File pade/pade_ocio_ingress/ehr/observations.csv is 296.35 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
To https://github.com/cdcent/data-ecosystem-services.git
! [remote rejected] dev-zfi4 -> dev-zfi4 (pre-receive hook declined)
Reference: Stack Overflow
Solution:
git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD
git push
Error: Git: Support for password authentication was removed. Please use a personal access token instead
Symptom: Receive error: Support for password authentication was removed. Please use a personal access token instead. when trying to push to a remote repository
Reference: Stack Overflow
Solution:
For Ubuntu:
For Linux, you need to configure the local GIT client with a username and email address,
git config --global user.name "your_github_user_id"
git config --global user.email "your_github_email"
git config -l
Error: Git: Tag: Would clobber existing tag
Symptom: CICD or VS Code Tag give error "would clobber existing tag"
Solution:
Run Git
git fetch --tags -f
Then pull again.
Reference: Stack Overflow
Error: Git: fatal: mmap failed: Invalid argument
Symptom: Receiving error: Git fatal: mmap failed: Invalid argument
Reference: Stack overflow
Solution:
- Log into OneDrive
- Finish synch
Error: Java: Gateway process exited before sending its port number
Problem: "Java gateway process exited before sending its port number"
Resolution:
On All OS:
Check that the following environment variable is set where 1 is the number of processors
export PYSPARK_SUBMIT_ARGS="--master spark:192.168.86.27:7077"
or
export PYSPARK_SUBMIT_ARGS="--master local[1] pyspark-shell"
On Ubuntu: install openjdk-8-jdk package
sudo apt-get install openjdk-8-jdk-headless -qq
On MacOs: run:
java -version
Verify Resolution In Python:
from pyspark import SparkContext
sc = SparkContext.getOrCreate()
data = range(10000)
distData = sc.parallelize(data)
distData.filter(lambda x: not x&1).take(10)
OR
Reference: Stack Overflow
Error: Java: Maven: javax.net.ssl.SSLHandshakeException: PKIX path building failed
Symptom: Server access error at url Maven URL (javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target)
Resolution:
Run:
From cli change dir to jre\bin
- First of all you copy the URL that you are connecting to and paste it in your browser. Just paste the url in the address bar and press enter.
Example: Maven Repo
- Now click on the lock button on the left of the url to see Certificate (valid)
- Click on View Certificate to open up the following popup
- Click on the Certification Path tab, where you will see the certificate chain
- Double click on the parent certificate
- Check keystore (file found in C:\apps\jdk-8.0.342.07-hotspot\jre\lib\security directory)
a. cd C:\apps\jdk-8.0.342.07-hotspot\bin
b. keytool -list -keystore cacerts
c. Password is changeit
d. Download and save all certificates in chain from needed server.
- Remove "read-only" attribute on file ..\lib\security\cacerts),
- Copy repo1.maven.org.crt to "C:\apps\Java\jdk1.8.0_333\lib\security\repo1.maven.org.crt" and "C:\Users\zfi4\OneDrive - CDC\DAVT Analytics\davt-dev-jcbowyer_templates\certs\repo1.maven.org.crt"
- Add certificates
keytool -import -alias repo1_maven_org -keystore C:\apps\jdk-8.0.342.07-hotspot\jre\lib\security\cacerts -file "C:\Users\zfi4\OneDrive - CDC\DAVT Analytics\davt-dev-jcbowyer\_templates\certs\repo1.maven.org.crt"
keytool -import -alias repo_spark_packages_org -keystore C:\apps\jdk-8.0.342.07-hotspot\jre\lib\security\cacerts -file "C:\Users\zfi4\OneDrive - CDC\DAVT Analytics\davt-dev-jcbowyer\_templates\certs\repos.spark-packages.org.crt"
- Run the keytool command again to verify that your private root certificate was adde
keytool -list -keystore C:\apps\Java\jdk1.8.0_333\lib\security\cacerts
Reference: Stack Overflow
Reference: Java Samples
Error: Logic Apps: O365 User Name and Password Entry Window Disappears on SharePoint Connector Setup
The pop-up window for user name and password entry may close immediately when Cached Credentials expired.
- Try deleting your cached O365 credentials in Credentials Manager.
- If clearing O365 casched credentials does not work, try deleting certificates.
- If neither deleting you cached O365 credentials nor deleting ceritifates works, try deleting the identities folder that may still be cached:
- Close all office applications
- Press Win+R and type regedit to open Registry Editor
- From Registry Editor, browse to: KEY_CURRENT_USER\Software\Microsoft\Office\16.0\Common\Identity\Identities
- Delete the identities folder.
- Open Office and sign in again to check if the same problem will occur.
Error: Logic Apps: Save logic app failed: 'Execute_JavaScript_Code' of type 'JavaScriptCode'
Symptom: Receive Error: Failed to save logic app logic-sps-list-export-all-environments. The workflow must be associated with an integration account to use the workflow run action 'Execute_JavaScript_Code' of type 'JavaScriptCode'.
Reference: Stack Overflow
Resolution: To run the inline code action you need an integration account. These have some different pricing tiers. You only need to create it and then on the Logic App Workflow settings associate it.
Error: Mermaid: Expecting 'NEWLINE', 'SPACE', 'GRAPH', got 'ALPHA'
Problem: Mermaid raises error Expecting 'NEWLINE', 'SPACE', 'GRAPH', got 'ALPHA' when it encounters bracket.
Reference: GitHub
The issue seems to be, that mermaid.cli ships with an old version of mermaid.min.js which doesn't support these kinds of node types/attributes.
Resolution:
Explicitly install mermaid and then copy dist/mermaid.min.js into the mermaid.cli folder within node_modules
Version is avaialble at unpkg.com-mermaid
Error: Node: NPM: PhantomJS not found on PATH
Symptom: Receiving error: "PhantomJS not found on PATH" when running npm install
Reference: StackOverflow
Solution:
- Run command
sudo npm uninstall phantomjs
- Run command
sudo npm install phantomjs -g
- If fails global install try local install
sudo npm install phantomjs -s
Error: Python: Virtualenv - workon command not found
Symptom: workon command not found
Reference: StackOverflow
Details:
The workon command is not available if you have restarted the shell.
If you want this to work with each shell, you'll need to add these to your ~/.bashrc file
Solution:
- Run
export PATH="$HOME/.local/bin:$PATH"
echo "export WORKON_HOME=$HOME/.virtualenvs" | sudo tee -a $HOME/.bashrc
echo "VIRTUALENVWRAPPER_PYTHON='/usr/lib/python3.9'" | sudo tee -a $HOME/.bashrc
echo "source $HOME/.local/bin/virtualenvwrapper.sh" | sudo tee -a $HOME/.bashrc
source $HOME/.bashrc
Error: Puppeteer: can't launch chromium, missing shared library libgbm.so
Symptom: Receiving error: "Error: Failed to launch the browser process! /usr/bin/chromium: error while loading shared libraries: libgbm.so.1: cannot open shared object file: No such file or directory"
Details: Puppeteer is a Node library which provides a high-level API to control headless Chrome or Chromium over the DevTools Protocol. It can also be configured to use full (non-headless) Chrome or Chromium. It is not launching when running mermaid-cli.
Reference: GitHub
Solution:
Add the lgm package to the Dockerfile/Setup process
sudo apt-get update
sudo apt-get install -y libgbm-dev
Error: Python: Current Python version (3.8.10) is not allowed by the project (^3.9).
Symptom: Error: Python: Current Python version (3.8.10) is not allowed by the project (^3.9). Current Python version (3.8.10) is not allowed by the project (^3.9). Please change python executable via the "env use" command.
Reference: Stack Overflow
Details: Please change python executable via the "env use" command.
Solution:
- You can get the path to your Python version by running
which python3.9
- To update your environment to latest path run
poetry env use /usr/bin/python3.9
Error: React: NodeJS: Ubuntu: Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/node-sass/build'
Symptom: Receiving Error when running npm link command: Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/node-sass/build'
Reference: Stack Overflow
Details: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/node-sass/build'
Solution:
Change the ownership of folder node_modules, because you use sudo npm install -g node-sass, so its ownership is set to root.
sudo chown -R root:$(whoami) /usr/local/lib/node_modules/
sudo chmod -R 775 /usr/local/lib/node_modules/
Error: Sphinx: WARNING: dot command 'dot' cannot be run (needed for graphviz output), check the graphviz_dot setting
Symptom: Receiving error: "WARNING: dot command 'dot' cannot be run (needed for graphviz output), check the graphviz_dot setting" when building HTML Sphinx documentation
Reference: Stack Overflow
Reference: Blog
Details: The problem could be referred to an incorrect configuration of "dot" executable from GraphViz PATH.
Solution:
Adding the PATH using the export command, such as:
export PATH=$PATH:~/opt/bin
Error: Ubuntu: InRelease is not valid yet (invalid for another 1d 21h 40min 43s). Updates for this repository will not be applied.
Symptom: Ubuntu: InRelease is not valid yet (invalid for another 1d 21h 40min 43s). Updates for this repository will not be applied. occurs when running sudo apt-get update
Reference: StackOverflow
Details: Occurs when the system clock in Ubuntu is not Correct
Solution: Run the following command to fix the issue:
sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"
sudo apt update
Error: Ubuntu: System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: Host is down
Symptom: Receiving error: "System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: Host is down" when running : sudo systemctl daemon-reload
Reference: Github Gist
Solution: Run the following command to fix the issue:
sudo apt-get update && sudo apt-get install -yqq daemonize dbus-user-session fontconfig
sudo daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
exec sudo nsenter -t $(pidof systemd) -a su - $LOGNAME
Error: Ubuntu: APT: Release file for Ubuntu File is not valid yet
Symptom: Receiving error: "Release file for Ubuntu File is not valid yet" during apt-get update
Reference: How2Shout
Solution:
- Check your date and time settings. If they are not correct, then you can fix them by running the following command:
sudo dpkg-reconfigure tzdata
Error: VS Code Ubuntu/Docker/Web Server: Failed to bind to address already in use
Symptom: Deploying a project to a local web server return error message: VS Code Ubuntu/Docker/Web Server: Failed to bind to address already in use
Reference: Stack Overflow
Solution:
-
Determine which ports are blocked
lsof -i: <port number>
example:
lsof -i: 5001
-
Kill the process that is blocking the port
kill -9 <process number>
example:
kill -9 1600
Error: Ubuntu: APT: Permission Denied when calling apt-get update from WSL
Symptom: Permission Denied when calling apt-get updatee from WSL
Details:
-
Run wsl command from ubuntu
-
Receive Error
Reading package lists... Done
E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)
E: Unable to lock directory /var/lib/apt/lists/
Reference: AskUbuntu
This line says you are not authorized to install/update. You need to be root to do it....
Resolution with WSL:
Add sudo before apt-get or you can do sudo -s to be root.
sudo apt-get update
or
Run the following command to promote the current terminal to run as root until the terminal is closed.
sudo -s
apt-get update
Error: Ubuntu: ImportError: No module named pip ' right after installing pip
Symptom: Receive error: "ImportError: No module named pip" right after installing pip
Reference: Stack Overflow
Details: /home/jcbow/.virtualenvs/OCIO_PADE_DEV/bin/python: No module named pip
Resolution:
First, ensure that python is included in the PATH variable, then run
Then run the following
python -m ensurepip
Error: Ubuntu: Failed to call method: org.freedesktop.DBus.Properties.Get: object_path= /org/freedesktop/UPower: org.freedesktop.DBus.Error.ServiceUnknown
Problem: When browsing https://127.0.0.1:5000 receive error: SSL: Handshake failed. while not logged into ZScaler
Solution:
Here are the steps you can follow to fix this error:
- Check if the UPower daemon is installed on your system by running the following command in the terminal:
systemctl status upower.service
If the command output shows that the UPower service is not running or is not installed, you can install it using the package manager for your system (e.g. apt-get for Ubuntu/Debian, dnf for Fedora, pacman for Arch Linux, etc.).
- Install the UPower daemon using the package manager. For example, on Ubuntu/Debian, you can run the following command:
sudo apt-get install upower
This command installs the upower package, which provides the UPower daemon.
- After installing the UPower daemon, start the service using the following command:
sudo systemctl start upower.service
- Verify that the UPower daemon is now running by checking the status using the following command:
systemctl status upower.service
- Restart your Flask application and try again. The error message should no longer appear.
Note that the specific steps for installing and starting the UPower daemon may vary depending on your system and distribution. You may need to consult the documentation or package manager for your system to find the appropriate package and commands to install and start the UPower daemon.
Error: Ubuntu: SSL: Handshake failed error when browsing local web site in google-chrome from Ubuntu
Problem: When browsing https://127.0.0.1:5000 receive error: SSL: Handshake failed. when logged into ZScaler
[39102:39117:0503/091443.791015:ERROR:ssl_client_socket_impl.cc(992)] handshake failed; returned -1, SSL error code 1, net_error -202
[39102:39117:0503/091447.197078:ERROR:ssl_client_socket_impl.cc(992)] handshake failed; returned -1, SSL error code 1, net_error -202
[39102:39117:0503/091447.998238:ERROR:ssl_client_socket_impl.cc(992)] handshake failed; returned -1, SSL error code 1, net_error -202
[39062:39086:0503/091448.177119:ERROR:cert_issuer_source_aia.cc(134)] AiaRequest::OnFetchCompleted got error -301
[39062:39086:0503/091448.178211:ERROR:cert_issuer_source_aia.cc(134)] AiaRequest::OnFetchCompleted got error -301
[42678:42704:0503/093402.088689:ERROR:cert_verify_proc_builtin.cc(677)] CertVerifyProcBuiltin for clientservices.googleapis.com failed:
----- Certificate i=2 (CN=NCA-DPI1,OU=ITSO,O=Centers for Disease Control and Prevention,L=Atlanta,ST=Georgia,C=US) -----
ERROR: No matching issuer found
[39062:39086:0503/091448.178351:ERROR:cert_verify_proc_builtin.cc(677)] CertVerifyProcBuiltin for optimizationguide-pa.googleapis.com failed:
----- Certificate i=2 (CN=NCA-DPI1,OU=ITSO,O=Centers for Disease Control and Prevention,L=Atlanta,ST=Georgia,C=US) -----
ERROR: No matching issuer found
Solution:
- Verify that your Python installation has a valid CA bundle that can be used to verify the SSL/TLS certificate. You can do this by running the following command in your terminal:
python -c "import ssl; print(ssl.get_default_verify_paths())"
This should print out the paths to the CA bundle and the OpenSSL configuration file used by Python. If the paths are not found or are invalid, you may need to update your Python installation or install a valid CA bundle.
Path should return
/usr/lib/ssl/certs
- Download the missing CA certificate from the server that issued the certificate. You can use the openssl s_client command to retrieve the certificate, like this:
cd $HOME
openssl s_client -showcerts -connect clientservices.googleapis.com:443 </dev/null 2>/dev/null | openssl x509 -outform PEM > clientservices.googleapis.com.crt
openssl s_client -showcerts -connect optimizationguide-pa.googleapis.com:443 </dev/null 2>/dev/null | openssl x509 -outform PEM > optimizationguide-pa.googleapis.com.crt
openssl s_client -showcerts -connect safebrowsing.googleapis.com.com:443 </dev/null 2>/dev/null | openssl x509 -outform PEM > safebrowsing.googleapis.com.crt
openssl s_client -showcerts -connect accounts.google.com:443 </dev/null 2>/dev/null | openssl x509 -outform PEM > accounts.google.com.crt
openssl s_client -showcerts -connect update.googleapis.com:443 </dev/null 2>/dev/null | openssl x509 -outform PEM > update.googleapis.com.crt
openssl s_client -showcerts -connect www.google.com:443 </dev/null 2>/dev/null | openssl x509 -outform PEM > www.google.com.crt
dns.google
- Install the CA certificate in your system's trusted CA store by copying it to the /usr/local/share/ca-certificates/ directory:
sudo cp clientservices.googleapis.com.crt /usr/local/share/ca-certificates/
sudo cp optimizationguide-pa.googleapis.com.crt /usr/local/share/ca-certificates/
sudo cp safebrowsing.googleapis.com.crt /usr/local/share/ca-certificates/
sudo cp accounts.google.com.crt /usr/local/share/ca-certificates/
sudo cp update.googleapis.com.crt /usr/local/share/ca-certificates/
sudo cp www.google.com.crt /usr/local/share/ca-certificates/
- Update the CA bundle by running the following command:
sudo update-ca-certificates
Error: Ubuntu: CURL: SSL: Certificate problem: unable to get local issuer certificate when installing docker
Symptom: Receive error: curl: (60) SSL certificate problem: unable to get local issuer certificate when installing docker
Reference: Stack Overflow
Details:
The problem may be related to the way the firewall is handling certificates. The certificate of the firewall may be untrusted/unknown from within the wsl environment.
Resolution:
Option 1:
- If logged into zscaler, log out
- Try Again
Option 2:
Export the firewall certificate.
- Export the firewall certificate from the windows certmanager (certmgr.msc).
- The certificate may be located at "Trusted Root Certification Authorities\Certifiactes"
- Export the certificate ZScaler Root CA as a DER coded x.509 and save it under e.g. "_templates/certs/zscaler.cer".
Configure WSL.
open wsl terminal from VS Code : should default to Ubuntu: directory "/Users/zfi4/OneDrive - CDC/DAVT Analytics/davt-dev-jcbowyer"
wsl
openssl x509 -inform DER -in _templates/certs/zscaler.cer -out ./zscaler.crt
sudo cp zscaler.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
Error: Ubuntu: Python installation error: ImportError: No module named apt_pkg
Problem: Python installation error: ImportError: No module named apt_pkg occurs when running sudo apt-get update
Reference: Stack Overflow
Solution:
```sh
sudo apt remove python3-apt
sudo apt autoremove
sudo apt autoclean
sudo apt install python3-apt
```
Error: Ubuntu: NPM can't find module "semver" error in Ubuntu 19.04
Problem: NPM can't find module "semver" error in Ubuntu 19.04 when installing nodejs upgrade
Reference: AskUbuntu
Solution:
Run the following commands to uninstall node:
cd $HOME
sudo rm -rf /usr/local/bin/npm /usr/local/share/man/man1/node* ~/.npm
sudo rm -rf /usr/local/lib/node*
sudo rm -rf /usr/local/bin/node*
sudo rm -rf /usr/local/include/node*
sudo apt-get purge nodejs npm
sudo apt autoremove
Run the following commands to reinstall node:
workon OCIO_PADE_DEV
cd $VIRTUAL_ENV
rm -rf /usr/local/bin/npm /usr/local/share/man/man1/node* ~/.npm
rm -rf /usr/local/lib/node*
rm -rf /usr/local/bin/node*
rm -rf /usr/local/include/node*
wget https://nodejs.org/dist/v18.12.1/node-v18.12.1-linux-x64.tar.xz
tar -xf node-v18.12.1-linux-x64.tar.xz
rsync -av node-v18.12.1-linux-x64/bin/* ./bin
rsync -av node-v18.12.1-linux-x64/lib/node_modules/ ./lib/node_modules/
cd $VIRTUAL_ENV/bin
hash -r
node -v
npm -v
npm install puppeteer
npm install npm@9.1.2
npm install @mermaid-js/mermaid-cli
sudo apt-get update
sudo apt-get install -y libgbm-dev
Error: VSCode: End of line character is invalid
Symptom: Receiving error: "End of line character is invalid"
Reference: Boot.dev Blog
Solution for One File:
Unless you work on a Windows-only team, the answer is almost always to change all your code to the Unix default of LF.
- Open VS Code and go the the bottom right of the screen in VS Code
- Click the button that says LF or CRLF and change to LF (most all cases)
Soulution for All New Files:
For Workspace Tab
- Open VS Code
- Open File Menu > Preferences > Settings
- Search for CRLF
- Change Files: EOL Setting to LF
For User Tab
- Open VS Code
- Open File Menu > Preferences > Settings
- Search for CRLF
- Change Files: EOL Setting to LF
Solution for All Existing Files
- Download VS Code Exntension: Change LF to CRLF
Symptom: Trying to clone a github repository and receive error: "fatal: unable to access Could not resolve host: github.com "
Reference: Stack Overflow
Resolution:
Option 1:
- Restart Wifi
Option 2:
- Run terminal command in WSL:
git config --global --unset https.proxy
- Restart Terminal in WSL:
Option 3:
- Log Off ZScaler
- Try again
Option 4:
- Log Back into ZScaler
- Try again
Option 5:
Fix wrong/empty /etc/resolv.conf file.
To view contents of /etc/resolv.conf file:
code /etc/resolv.conf
To fix:
sudo rm /etc/resolv.conf
sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'
sudo bash -c 'echo "[network]" > /etc/wsl.conf'
sudo bash -c 'echo "generateResolvConf = false" >> /etc/wsl.conf'
sudo chattr +i /etc/resolv.conf
Problem: WSL: "Logon failure: the user has not been granted the requested logon type at this computer."
Symptom: Trying to connect to WSL from Windows Terminal and receive error: "Logon failure: the user has not been granted the requested logon type at this computer."
Reference: Stack Overflow
Solution:
- Open Powershell as Administrator
- Run the following command:
Get-Service vmcompute | Restart-Service
Problem: WSL: Windows: Shell Script keeps exiting unexpectedly
Symptom: WSL windows keeps exiting unexpectedly
Reference: SuperUser
Details:
- Examine your wsl -l -v output
- It may show that the docker-desktop-data instance got set as the default when you uninstalled Ubuntu.
- Docker-desktop-data is not a bootable instance, since it has no /init in it.
Resolution with Powershell or CMD:
wsl --set-default Ubuntu-20.04