1

I have a problem with my installation. Previous dev left 4 years ago no documentation ... now it falls on me to build the outdated app because marketing wants a new feature. I'm into embedded systems so I know almost nothing.

Onto the configuration : I have made a Dockerfile so that the environment is stable, I'm using Docker Desktop (Windows 10). The end goal is to make it work in Docker and do a full CI/CD but first I need to generate an apk.

# base image
FROM ubuntu:20.04 

# block interactive actions (ex selecting country during installation)
ARG DEBIAN_FRONTEND=noninteractive

# install linux packages
RUN apt-get update && apt-get -y install wget tar unzip openjdk-8-jdk build-essential checkinstall file apt-utils libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

# install python 2.7.18 
RUN mkdir /python2.7 && cd /python2.7 && wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz && tar xzf Python-2.7.18.tgz && rm Python-2.7.18.tgz && cd Python-2.7.18 && ./configure --enable-optimizations && make altinstall

# install node js version 10.19.0 for linux
#RUN wget https://nodejs.org/dist/v10.19.0/node-v10.19.0-linux-x64.tar.gz && tar -C /usr/local --strip-components 1 -xzf node-v10.19.0-linux-x64.tar.gz && rm node-v10.19.0-linux-x64.tar.gz
#RUN wget https://nodejs.org/dist/v12.13.0/node-v12.13.0-linux-x64.tar.gz && tar -C /usr/local --strip-components 1 -xzf node-v12.13.0-linux-x64.tar.gz && rm node-v12.13.0-linux-x64.tar.gz
RUN wget https://nodejs.org/download/release/v7.7.0/node-v7.7.0-linux-x64.tar.gz && tar -C /usr/local --strip-components 1 -xzf node-v7.7.0-linux-x64.tar.gz && rm node-v7.7.0-linux-x64.tar.gz

#install gradle 4.10.3 (reinstalling gradle 3.3 during the build ???)
RUN wget https://services.gradle.org/distributions/gradle-4.10.3-bin.zip -P /tmp && unzip -d /opt/gradle /tmp/gradle-4.10.3-bin.zip && rm /tmp/gradle-4.10.3-bin.zip

# install android command line 
RUN wget https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip && mkdir -p /sdk && mv commandlinetools-linux-7583922_latest.zip /sdk && \
    cd /sdk && unzip commandlinetools-linux-7583922_latest.zip && rm commandlinetools-linux-7583922_latest.zip
WORKDIR "/sdk/cmdline-tools"

# specific to commandlinetools-linux-7583922 the unzipped folder is not correct, it needs to be under "latest" folder, so /cmdline-tools/latest/...
# see https://stackoverflow.com/a/67413427/14137672 for more informations about this
RUN mkdir .latest && mv * .latest && mv .latest latest

# add sdkmanager java gradle to path platform-tools tools
ENV PATH="/sdk/cmdline-tools/latest/bin:/usr/lib/jvm/java-8-openjdk-amd64/bin/:/sdk/cmdline-tools/latest:/opt/gradle/gradle-4.10.3/bin:/python2.7/Python-2.7.18:${PATH}:/sdk/tools/:/sdk/platform-tools/"
# create env variable ANDROID_SDK_ROOT & GRADLE_HOME
ENV ANDROID_SDK_ROOT=/sdk/cmdline-tools/latest/bin
ENV ANDROID_HOME=/sdk/
ENV GRADLE_HOME=/opt/gradle/gradle-4.10.3

# install project requirements, Android Studio part
WORKDIR "/sdk/cmdline-tools/latest/bin"
RUN chmod +770 /sdk/cmdline-tools/latest/bin/sdkmanager
# accept the licenses BEFORE installing packages else it doesn't install but doesn't launch errors
RUN yes | /sdk/cmdline-tools/latest/bin/sdkmanager --licenses
RUN /sdk/cmdline-tools/latest/bin/sdkmanager "platform-tools" "platforms;android-19" "platforms;android-20" "platforms;android-21" "platforms;android-22" "platforms;android-23" "platforms;android-24" "platforms;android-25" "system-images;android-28;default;x86" "system-images;android-27;default;x86"
RUN /sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-26" "platforms;android-27" "platforms;android-28" "platforms;android-29" "platforms;android-30" "platforms;android-31" "skiaparser;1" "system-images;android-29;google_apis;x86"
RUN /sdk/cmdline-tools/latest/bin/sdkmanager "build-tools;31.0.0" "build-tools;30.0.2" "build-tools;29.0.3" "build-tools;29.0.2" "build-tools;29.0.1" "build-tools;29.0.0" "build-tools;28.0.3" "build-tools;20.0.0" "build-tools;19.1.0" "system-images;android-31;default;x86_64"
RUN /sdk/cmdline-tools/latest/bin/sdkmanager "cmdline-tools;5.0" "cmdline-tools;4.0" "ndk;23.1.7779620" "emulator" "extras;google;market_apk_expansion" "extras;google;instantapps" "extras;google;market_licensing" "extras;google;google_play_services"
RUN /sdk/cmdline-tools/latest/bin/sdkmanager "system-images;android-19;default;x86" "system-images;android-21;default;x86" "system-images;android-22;default;x86" "system-images;android-23;default;x86" "system-images;android-24;default;x86" "system-images;android-25;default;x86" "system-images;android-26;default;x86" 




# install project dependancies
RUN npm install && npm install -g ionic@5.4.16 cordova@10.0.0 native-run@1.5.0 cordova-res --unsafe-perm

So the line where I have a problem is npm install -g ionic where I have an error :

npm ERR! Linux 5.4.0-124-generic
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "ionic@5.4.16" "cordova@10.0.0" "native-run@1.5.0" "cordova-res" "--unsafe-perm"
npm ERR! node v7.7.0
npm ERR! npm  v4.1.2
npm ERR! path /usr/local/lib/node_modules/.staging/@types/node-14361f48/package.json
npm ERR! code ENOTDIR
npm ERR! errno -20
npm ERR! syscall open

npm ERR! ENOTDIR: not a directory, open '/usr/local/lib/node_modules/.staging/@types/node-14361f48/package.json'
npm ERR! 
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

npm ERR! Please include the following file with any support request:
npm ERR!     /home/mathieu/Bureau/toto/toto/npm-debug.log

My package.json is :

{
    "name": "toto",
    "version": "0.0.3",
    "author": "Ionic Framework",
    "homepage": "http://ionicframework.com/",
    "private": true,
    "scripts": {
        "run-android": "ionic cordova run android -l -c --device",
        "start": "ionic-app-scripts serve",
        "clean": "ionic-app-scripts clean",
        "build": "ionic-app-scripts build",
        "lint": "ionic-app-scripts lint"
    },
    "dependencies": {
        "@angular/animations": "5.2.11",
        "@angular/common": "5.2.11",
        "@angular/compiler": "5.2.11",
        "@angular/compiler-cli": "5.2.11",
        "@angular/core": "5.2.11",
        "@angular/forms": "5.2.11",
        "@angular/http": "5.2.11",
        "@angular/platform-browser": "5.2.11",
        "@angular/platform-browser-dynamic": "5.2.11",
        "@ionic-native/ble": "^4.16.0",
        "@ionic-native/core": "~4.15.0",
        "@ionic-native/splash-screen": "~4.15.0",
        "@ionic-native/status-bar": "~4.15.0",
        "@ionic/storage": "^2.2.0",
        "@ngx-translate/core": "^9.1.1",
        "@ngx-translate/http-loader": "^2.0.1",
        "cordova": "^6.5.0",
        "cordova-plugin-ble-central": "^1.2.2",
        "cordova-plugin-compat": "^1.2.0",
        "cordova-plugin-device": "^2.0.2",
        "cordova-plugin-ionic-keyboard": "^2.1.3",
        "cordova-plugin-ionic-webview": "^2.3.3",
        "cordova-plugin-splashscreen": "^5.0.2",
        "cordova-plugin-statusbar": "^2.4.2",
        "cordova-plugin-whitelist": "^1.3.3",
        "help": "3.0.2",
        "ionic-angular": "3.9.2",
        "ionicons": "3.0.0",
        "rxjs": "5.5.11",
        "sw-toolbox": "3.6.0",
        "zone.js": "0.8.26"
    },
    "devDependencies": {
        "@ionic/app-scripts": "3.2.0",
        "BleTotoService": "file:../ble-toto-service",
        "cordova-android": "6.4.0",
        "typescript": "~2.6.2"
    },
    "description": "An Ionic project",
    "cordova": {
        "plugins": {
            "cordova-plugin-ble-central": {},
            "cordova-plugin-whitelist": {},
            "cordova-plugin-statusbar": {},
            "cordova-plugin-device": {},
            "cordova-plugin-splashscreen": {},
            "cordova-plugin-ionic-webview": {
                "ANDROID_SUPPORT_ANNOTATIONS_VERSION": "27.+"
            },
            "cordova-plugin-ionic-keyboard": {},
            "cordova-plugin-ble-toto-service": {}
        },
        "platforms": [
            "android"
        ]
    }
}

Can someone help ? I can't share the sources.

Edit : npm install seems to work now, I went to nodeJS 7.10.0 npm is 4.2.0 But if I do npm update I have "Cannot read property 'version' of undefined

385 verbose stack TypeError: Cannot read property 'version' of undefined
385 verbose stack     at /usr/local/lib/node_modules/npm/lib/outdated.js:360:15
385 verbose stack     at /usr/local/lib/node_modules/npm/node_modules/read-package-json/read-json.js:356:5
385 verbose stack     at checkBinReferences_ (/usr/local/lib/node_modules/npm/node_modules/read-package-json/read-json.js:320:45)
385 verbose stack     at final (/usr/local/lib/node_modules/npm/node_modules/read-package-json/read-json.js:354:3)
385 verbose stack     at then (/usr/local/lib/node_modules/npm/node_modules/read-package-json/read-json.js:124:5)
385 verbose stack     at /usr/local/lib/node_modules/npm/node_modules/read-package-json/read-json.js:243:12
385 verbose stack     at /usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:78:16


   385 verbose stack     at tryToString (fs.js:449:3)
    385 verbose stack     at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:436:12)
386 verbose cwd /usr/local/myapp/toto
    387 error Linux 5.10.16.3-microsoft-standard-WSL2
    388 error argv "/usr/local/bin/node" "/usr/local/bin/npm" "update"
    389 error node v7.10.0
    390 error npm  v4.2.0
    391 error Cannot read property 'version' of undefined
    392 error If you need help, you may report this error at:
    392 error     <https://github.com/npm/npm/issues>
    393 verbose exit [ 1, true ]
Mat
  • 11
  • 2

0 Answers0