Archive for the ‘MongoDB DBA’ tag
MongoDB on Ubuntu
This post shows how to install, configure, and use MongoDB with JavaScript programs. You need to complete each section in the order provided (based on Cherry Server post).
Step #1: MongoDB Installation
Install the prerequisite packages with the following command:
sudo apt install -y software-properties-common gnupg apt-transport-https ca-certificates |
Display detailed console log →
Reading package lists... Done Building dependency tree... Done Reading state information... Done ca-certificates is already the newest version (20230311ubuntu0.22.04.1). ca-certificates set to manually installed. gnupg is already the newest version (2.2.27-3ubuntu2.1). gnupg set to manually installed. software-properties-common is already the newest version (0.99.22.9). apt-transport-https is already the newest version (2.4.11). 0 upgraded, 0 newly installed, 0 to remove and 22 not upgraded. |
Import the public key for MongoDB on your system using the curl command:
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor |
Add MongoDB 7.0 APT repository to the /etc/apt/sources.list.d directory:
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list |
Reload the local package index, which refreshes the local repositories and makes Ubuntu aware of the newly added MongoDB repository:
sudo apt update |
Display detailed console log →
Hit:1 http://us.archive.ubuntu.com/ubuntu jammy InRelease Get:2 http://us.archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB] Get:3 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB] Hit:4 https://dl.google.com/linux/chrome/deb stable InRelease Hit:5 https://download.vscodium.com/debs vscodium InRelease Hit:6 http://us.archive.ubuntu.com/ubuntu jammy-backports InRelease Hit:7 https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/jammy pgadmin4 InRelease Ign:8 https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 InRelease Get:9 https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 Release [2,090 B] Get:10 https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 Release.gpg [866 B] Get:11 https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0/multiverse arm64 Packages [27.6 kB] Get:12 https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0/multiverse amd64 Packages [28.6 kB] Fetched 288 kB in 4s (72.8 kB/s) Reading package lists... Done Building dependency tree... Done Reading state information... Done 22 packages can be upgraded. Run 'apt list --upgradable' to see them. |
Install the mongodb-org meta-package:
sudo apt install -y mongodb-org |
Display detailed console log →
Reading package lists... Done Building dependency tree... Done Reading state information... Done The following additional packages will be installed: mongodb-database-tools mongodb-mongosh mongodb-org-database mongodb-org-database-tools-extra mongodb-org-mongos mongodb-org-server mongodb-org-shell mongodb-org-tools The following NEW packages will be installed: mongodb-database-tools mongodb-mongosh mongodb-org mongodb-org-database mongodb-org-database-tools-extra mongodb-org-mongos mongodb-org-server mongodb-org-shell mongodb-org-tools 0 upgraded, 9 newly installed, 0 to remove and 22 not upgraded. Need to get 163 MB of archives. After this operation, 537 MB of additional disk space will be used. Get:1 https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0/multiverse amd64 mongodb-database-tools amd64 100.9.4 [51.9 MB] Get:2 https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0/multiverse amd64 mongodb-mongosh amd64 2.1.5 [48.7 MB] Get:3 https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0/multiverse amd64 mongodb-org-shell amd64 7.0.6 [2,986 B] Get:4 https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0/multiverse amd64 mongodb-org-server amd64 7.0.6 [36.7 MB] Get:5 https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0/multiverse amd64 mongodb-org-mongos amd64 7.0.6 [25.6 MB] Get:6 https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0/multiverse amd64 mongodb-org-database-tools-extra amd64 7.0.6 [7,786 B] Get:7 https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0/multiverse amd64 mongodb-org-database amd64 7.0.6 [3,422 B] Get:8 https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0/multiverse amd64 mongodb-org-tools amd64 7.0.6 [2,770 B] Get:9 https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0/multiverse amd64 mongodb-org amd64 7.0.6 [2,804 B] Fetched 163 MB in 8s (20.2 MB/s) Selecting previously unselected package mongodb-database-tools. (Reading database ... 250115 files and directories currently installed.) Preparing to unpack .../0-mongodb-database-tools_100.9.4_amd64.deb ... Unpacking mongodb-database-tools (100.9.4) ... Selecting previously unselected package mongodb-mongosh. Preparing to unpack .../1-mongodb-mongosh_2.1.5_amd64.deb ... Unpacking mongodb-mongosh (2.1.5) ... Selecting previously unselected package mongodb-org-shell. Preparing to unpack .../2-mongodb-org-shell_7.0.6_amd64.deb ... Unpacking mongodb-org-shell (7.0.6) ... Selecting previously unselected package mongodb-org-server. Preparing to unpack .../3-mongodb-org-server_7.0.6_amd64.deb ... Unpacking mongodb-org-server (7.0.6) ... Selecting previously unselected package mongodb-org-mongos. Preparing to unpack .../4-mongodb-org-mongos_7.0.6_amd64.deb ... Unpacking mongodb-org-mongos (7.0.6) ... Selecting previously unselected package mongodb-org-database-tools-extra. Preparing to unpack .../5-mongodb-org-database-tools-extra_7.0.6_amd64.deb ... Unpacking mongodb-org-database-tools-extra (7.0.6) ... Selecting previously unselected package mongodb-org-database. Preparing to unpack .../6-mongodb-org-database_7.0.6_amd64.deb ... Unpacking mongodb-org-database (7.0.6) ... Selecting previously unselected package mongodb-org-tools. Preparing to unpack .../7-mongodb-org-tools_7.0.6_amd64.deb ... Unpacking mongodb-org-tools (7.0.6) ... Selecting previously unselected package mongodb-org. Preparing to unpack .../8-mongodb-org_7.0.6_amd64.deb ... Unpacking mongodb-org (7.0.6) ... Setting up mongodb-mongosh (2.1.5) ... Setting up mongodb-org-server (7.0.6) ... Adding system user `mongodb' (UID 132) ... Adding new user `mongodb' (UID 132) with group `nogroup' ... Not creating home directory `/home/mongodb'. Adding group `mongodb' (GID 140) ... Done. Adding user `mongodb' to group `mongodb' ... Adding user mongodb to group mongodb Done. Setting up mongodb-org-shell (7.0.6) ... Setting up mongodb-database-tools (100.9.4) ... Setting up mongodb-org-mongos (7.0.6) ... Setting up mongodb-org-database-tools-extra (7.0.6) ... Setting up mongodb-org-database (7.0.6) ... Setting up mongodb-org-tools (7.0.6) ... Setting up mongodb-org (7.0.6) ... Processing triggers for man-db (2.10.2-1) ... |
Verify the installed version of MongoDB with this command:
mongod --version |
It should display:
db version v7.0.6 Build Info: { "version": "7.0.6", "gitVersion": "66cdc1f28172cb33ff68263050d73d4ade73b9a4", "openSSLVersion": "OpenSSL 3.0.2 15 Mar 2022", "modules": [], "allocator": "tcmalloc", "environment": { "distmod": "ubuntu2204", "distarch": "x86_64", "target_arch": "x86_64" } } |
Step #2: Start MongoDB Service & Shell
You can verify that the installed mongodb is disabled after initial installation with this command:
sudo systemctl status mongod |
It should display:
○ mongod.service - MongoDB Database Server Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: https://docs.mongodb.org/manual |
Exit the output display from the systemctl utility by typing the escape key, a colon (:) and a q in sequence.
You can start the MongoDB service with this command:
sudo systemctl start mongod |
Then, check the MongoDB service:
sudo systemctl status mongod |
It displays:
● mongod.service - MongoDB Database Server Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2024-03-07 16:38:17 MST; 2s ago Docs: https://docs.mongodb.org/manual Main PID: 33795 (mongod) Memory: 79.2M CPU: 706ms CGroup: /system.slice/mongod.service └─33795 /usr/bin/mongod --config /etc/mongod.conf Mar 07 16:38:17 student-virtual-machine systemd[1]: Started MongoDB Database Server. Mar 07 16:38:17 student-virtual-machine mongod[33795]: {"t":{"$date":"2024-03-07T23:38:17.642Z"},"s"> |
You can confirm that the database is up and running by checking if the server is listening on its default port, which is port 27017. Run the ss command to check the port number.
sudo ss -pnltu | grep 27017 |
It will display:
tcp LISTEN 0 4096 127.0.0.1:27017 0.0.0.0:* users:(("mongod",pid=33795,fd=14)) |
You can enable the mongodb service at startup with the following command:
sudo systemctl enable mongod |
It raised the following error:
Created symlink /etc/systemd/system/multi-user.target.wants/mongod.service → /lib/systemd/system/mongod.service. |
Now, start the MongoDB Shell (mongosh) by typing either the explicit or implicit MongoDB Shell command. The explicit one uses the port and database path, which are unnecessary when you’ve successfully started the mongosh service. (Please note that at the time of writing this blog post there is erroneous, or obsolete, content on the MongoDB Documentation Enable Access Control web page.
Explicit connection:
mongosh --port 27017 --db /var/lib/mongodb --help |
This version of the command will display most of the options available in MongoDB but it will suppress warning messages.
$ mongosh [options] [db address] [file names (ending in .js or .mongodb)] Options: -h, --help Show this usage information -f, --file [arg] Load the specified mongosh script --host [arg] Server to connect to --port [arg] Port to connect to --build-info Show build information --version Show version information --quiet Silence output from the shell during the connection process --shell Run the shell after executing files --nodb Don't connect to mongod on startup - no 'db address' [arg] expected --norc Will not run the '.mongoshrc.js' file on start up --eval [arg] Evaluate javascript --json[=canonical|relaxed] Print result of --eval as Extended JSON, including errors --retryWrites[=true|false] Automatically retry write operations upon transient network errors (Default: true) Authentication Options: -u, --username [arg] Username for authentication -p, --password [arg] Password for authentication --authenticationDatabase [arg] User source (defaults to dbname) --authenticationMechanism [arg] Authentication mechanism --awsIamSessionToken [arg] AWS IAM Temporary Session Token ID --gssapiServiceName [arg] Service name to use when authenticating using GSSAPI/Kerberos --sspiHostnameCanonicalization [arg] Specify the SSPI hostname canonicalization (none or forward, available on Windows) --sspiRealmOverride [arg] Specify the SSPI server realm (available on Windows) TLS Options: --tls Use TLS for all connections --tlsCertificateKeyFile [arg] PEM certificate/key file for TLS --tlsCertificateKeyFilePassword [arg] Password for key in PEM file for TLS --tlsCAFile [arg] Certificate Authority file for TLS --tlsAllowInvalidHostnames Allow connections to servers with non-matching hostnames --tlsAllowInvalidCertificates Allow connections to servers with invalid certificates --tlsCertificateSelector [arg] TLS Certificate in system store (Windows and macOS only) --tlsCRLFile [arg] Specifies the .pem file that contains the Certificate Revocation List --tlsDisabledProtocols [arg] Comma separated list of TLS protocols to disable [TLS1_0,TLS1_1,TLS1_2] --tlsUseSystemCA Load the operating system trusted certificate list --tlsFIPSMode Enable the system TLS library's FIPS mode API version options: --apiVersion [arg] Specifies the API version to connect with --apiStrict Use strict API version mode --apiDeprecationErrors Fail deprecated commands for the specified API version FLE Options: --awsAccessKeyId [arg] AWS Access Key for FLE Amazon KMS --awsSecretAccessKey [arg] AWS Secret Key for FLE Amazon KMS --awsSessionToken [arg] Optional AWS Session Token ID --keyVaultNamespace [arg] database.collection to store encrypted FLE parameters --kmsURL [arg] Test parameter to override the URL of the KMS endpoint DB Address Examples: foo Foo database on local machine 192.168.0.5/foo Foo database on 192.168.0.5 machine 192.168.0.5:9999/foo Foo database on 192.168.0.5 machine on port 9999 mongodb://192.168.0.5:9999/foo Connection string URI can also be used File Names: A list of files to run. Files must end in .js and will exit after unless --shell is specified. Examples: Start mongosh using 'ships' database on specified connection string: $ mongosh mongodb://192.168.0.5:9999/ships For more information on usage: https://docs.mongodb.com/mongodb-shell. |
Implicit connection:
mongosh |
You should see the following message with any warning messages:
Current Mongosh Log ID: 65ea502a97f4c1e2b7e12af4 Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.1.5 Using MongoDB: 7.0.6 Using Mongosh: 2.1.5 For mongosh info see: https://docs.mongodb.com/mongodb-shell/ To help improve our products, anonymous usage data is collected and sent to MongoDB periodically (https://www.mongodb.com/legal/privacy-policy). You can opt-out by running the disableTelemetry() command. ------ The server generated these startup warnings when booting 2024-03-07T16:38:17.818-07:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem 2024-03-07T16:38:18.350-07:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted 2024-03-07T16:38:18.350-07:00: vm.max_map_count is too low ------ |
You can run opt out of the data collection by running the disableTelemetry() command from the Linux command line. Use the following command (a broader explanation is in the MongoDB Telemetry documentation):
mongosh --nodb --eval "disableTelemetry()" |
It should return:
Current Mongosh Log ID: 65eab2df3e663bde3711fa2f Using Mongosh: 2.1.5 For mongosh info see: https://docs.mongodb.com/mongodb-shell/ Telemetry is now disabled. |
You still have three warning messages to deal with at this point. You should fix the vm.max_map_count warning first. This is a Linux kernel issue. You can determine the current value of the vm.max_map_count value with this command:
cat /proc/sys/vm/max_map_count |
It should return the system default value:
65530 |
You can change it at runtime with this command:
sudo sysctl -w vm.max_map_count=262144 |
However, you must restart the mongod service to see the change in the mongosh shell. There won’t be a warning message for the kernel parameter value being too low until you reboot your operating system. You can restart your mongod service with this command:
sudo service mongod restart |
You can make a change to the /etc/sysctl.conf file to ensure the parameter is set to the correct value each time the system reboots. Simply add the following line as the root user or by using the sudo prefacing a text editor or your choice (like vim or nano) to your /etc/sysctl.conf file:
# Adding vm.max_map_count to sysctl.conf defaults. vm.max_map_count=262144 |
At this point, you’ve eliminated two of the warning messages. The next step shows you how to enable Access Control. If you want to check the general server status, run the following command from the Linux Command-Line Interface (CLI):
mongosh --eval "db.serverStatus()" > server_status.log |
You can inspect the log file, which should be slightly less than 2,000 lines of output with MongoDB a 7.0.6 installation. Using the command from the Linux CLI is generally the easiest way to inspect the output from the db.serverStatus() function, which is just too long to scroll from the console output.
Step #3: MongoDB Enabling Access Control
Connect to the mongosh …
Step #4: MongoDB Installing Node.js and React.js
Install Node.js with the following command:
sudo apt install -y nodejs |
Display detailed console log →
Reading package lists... Done Building dependency tree... Done Reading state information... Done The following additional packages will be installed: libc-ares2 libjs-highlight.js libnode72 nodejs-doc Suggested packages: npm The following NEW packages will be installed: libc-ares2 libjs-highlight.js libnode72 nodejs nodejs-doc 0 upgraded, 5 newly installed, 0 to remove and 23 not upgraded. Need to get 13.7 MB of archives. After this operation, 53.9 MB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 libjs-highlight.js all 9.18.5+dfsg1-1 [367 kB] Get:2 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 libc-ares2 amd64 1.18.1-1ubuntu0.22.04.3 [45.1 kB] Get:3 http://us.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libnode72 amd64 12.22.9~dfsg-1ubuntu3.4 [10.8 MB] Get:4 http://us.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 nodejs-doc all 12.22.9~dfsg-1ubuntu3.4 [2,410 kB] Get:5 http://us.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 nodejs amd64 12.22.9~dfsg-1ubuntu3.4 [122 kB] Fetched 13.7 MB in 3s (4,006 kB/s) Selecting previously unselected package libjs-highlight.js. (Reading database ... 250172 files and directories currently installed.) Preparing to unpack .../libjs-highlight.js_9.18.5+dfsg1-1_all.deb ... Unpacking libjs-highlight.js (9.18.5+dfsg1-1) ... Selecting previously unselected package libc-ares2:amd64. Preparing to unpack .../libc-ares2_1.18.1-1ubuntu0.22.04.3_amd64.deb ... Unpacking libc-ares2:amd64 (1.18.1-1ubuntu0.22.04.3) ... Selecting previously unselected package libnode72:amd64. Preparing to unpack .../libnode72_12.22.9~dfsg-1ubuntu3.4_amd64.deb ... Unpacking libnode72:amd64 (12.22.9~dfsg-1ubuntu3.4) ... Selecting previously unselected package nodejs-doc. Preparing to unpack .../nodejs-doc_12.22.9~dfsg-1ubuntu3.4_all.deb ... Unpacking nodejs-doc (12.22.9~dfsg-1ubuntu3.4) ... Selecting previously unselected package nodejs. Preparing to unpack .../nodejs_12.22.9~dfsg-1ubuntu3.4_amd64.deb ... Unpacking nodejs (12.22.9~dfsg-1ubuntu3.4) ... Setting up libc-ares2:amd64 (1.18.1-1ubuntu0.22.04.3) ... Setting up libnode72:amd64 (12.22.9~dfsg-1ubuntu3.4) ... Setting up libjs-highlight.js (9.18.5+dfsg1-1) ... Setting up nodejs (12.22.9~dfsg-1ubuntu3.4) ... update-alternatives: using /usr/bin/nodejs to provide /usr/bin/js (js) in auto m ode Setting up nodejs-doc (12.22.9~dfsg-1ubuntu3.4) ... Processing triggers for man-db (2.10.2-1) ... Processing triggers for libc-bin (2.35-0ubuntu3.6) ... |
You can check the Node.js version with this command:
node -v |
v12.22.9 |
Install the Node.js package manager npm with the following command:
sudo apt install -y npm |
Display detailed console log →
Reading package lists... Done Building dependency tree... Done Reading state information... Done The following additional packages will be installed: gyp libjs-events libjs-inherits libjs-is-typedarray libjs-psl libjs-source-map libjs-sprintf-js libjs-typedarray-to-buffer libnode-dev libuv1-dev node-abab node-abbrev node-agent-base node-ansi-regex node-ansi-styles node-ansistyles node-aproba node-archy node-are-we-there-yet node-argparse node-arrify node-asap node-asynckit node-balanced-match node-brace-expansion node-builtins node-cacache node-chalk node-chownr node-clean-yaml-object node-cli-table node-clone node-color-convert node-color-name node-colors node-columnify node-combined-stream node-commander node-console-control-strings node-copy-concurrently node-core-util-is node-coveralls node-cssom node-cssstyle node-debug node-decompress-response node-defaults node-delayed-stream node-delegates node-depd node-diff node-encoding node-end-of-stream node-err-code node-escape-string-regexp node-esprima node-events node-fancy-log node-fetch node-foreground-child node-form-data node-fs-write-stream-atomic node-fs.realpath node-function-bind node-gauge node-get-stream node-glob node-got node-graceful-fs node-growl node-gyp node-has-flag node-has-unicode node-hosted-git-info node-https-proxy-agent node-iconv-lite node-iferr node-imurmurhash node-indent-string node-inflight node-inherits node-ini node-ip node-ip-regex node-is-buffer node-is-plain-obj node-is-typedarray node-isarray node-isexe node-js-yaml node-jsdom node-json-buffer node-json-parse-better-errors node-jsonparse node-kind-of node-lcov-parse node-lodash-packages node-log-driver node-lowercase-keys node-lru-cache node-mime node-mime-types node-mimic-response node-minimatch node-minimist node-minipass node-mkdirp node-move-concurrently node-ms node-mute-stream node-negotiator node-nopt node-normalize-package-data node-npm-bundled node-npm-package-arg node-npmlog node-object-assign node-once node-opener node-osenv node-p-cancelable node-p-map node-path-is-absolute node-process-nextick-args node-promise-inflight node-promise-retry node-promzard node-psl node-pump node-punycode node-quick-lru node-read node-read-package-json node-readable-stream node-resolve node-retry node-rimraf node-run-queue node-safe-buffer node-semver node-set-blocking node-signal-exit node-slash node-slice-ansi node-source-map node-source-map-support node-spdx-correct node-spdx-exceptions node-spdx-expression-parse node-spdx-license-ids node-sprintf-js node-ssri node-stack-utils node-stealthy-require node-string-decoder node-string-width node-strip-ansi node-supports-color node-tap node-tap-mocha-reporter node-tap-parser node-tar node-text-table node-time-stamp node-tmatch node-tough-cookie node-typedarray-to-buffer node-unique-filename node-universalify node-util-deprecate node-validate-npm-package-license node-validate-npm-package-name node-wcwidth.js node-webidl-conversions node-whatwg-fetch node-which node-wide-align node-wrappy node-write-file-atomic node-ws node-yallist Suggested packages: libjs-angularjs node-nyc The following NEW packages will be installed: gyp libjs-events libjs-inherits libjs-is-typedarray libjs-psl libjs-source-map libjs-sprintf-js libjs-typedarray-to-buffer libnode-dev libuv1-dev node-abab node-abbrev node-agent-base node-ansi-regex node-ansi-styles node-ansistyles node-aproba node-archy node-are-we-there-yet node-argparse node-arrify node-asap node-asynckit node-balanced-match node-brace-expansion node-builtins node-cacache node-chalk node-chownr node-clean-yaml-object node-cli-table node-clone node-color-convert node-color-name node-colors node-columnify node-combined-stream node-commander node-console-control-strings node-copy-concurrently node-core-util-is node-coveralls node-cssom node-cssstyle node-debug node-decompress-response node-defaults node-delayed-stream node-delegates node-depd node-diff node-encoding node-end-of-stream node-err-code node-escape-string-regexp node-esprima node-events node-fancy-log node-fetch node-foreground-child node-form-data node-fs-write-stream-atomic node-fs.realpath node-function-bind node-gauge node-get-stream node-glob node-got node-graceful-fs node-growl node-gyp node-has-flag node-has-unicode node-hosted-git-info node-https-proxy-agent node-iconv-lite node-iferr node-imurmurhash node-indent-string node-inflight node-inherits node-ini node-ip node-ip-regex node-is-buffer node-is-plain-obj node-is-typedarray node-isarray node-isexe node-js-yaml node-jsdom node-json-buffer node-json-parse-better-errors node-jsonparse node-kind-of node-lcov-parse node-lodash-packages node-log-driver node-lowercase-keys node-lru-cache node-mime node-mime-types node-mimic-response node-minimatch node-minimist node-minipass node-mkdirp node-move-concurrently node-ms node-mute-stream node-negotiator node-nopt node-normalize-package-data node-npm-bundled node-npm-package-arg node-npmlog node-object-assign node-once node-opener node-osenv node-p-cancelable node-p-map node-path-is-absolute node-process-nextick-args node-promise-inflight node-promise-retry node-promzard node-psl node-pump node-punycode node-quick-lru node-read node-read-package-json node-readable-stream node-resolve node-retry node-rimraf node-run-queue node-safe-buffer node-semver node-set-blocking node-signal-exit node-slash node-slice-ansi node-source-map node-source-map-support node-spdx-correct node-spdx-exceptions node-spdx-expression-parse node-spdx-license-ids node-sprintf-js node-ssri node-stack-utils node-stealthy-require node-string-decoder node-string-width node-strip-ansi node-supports-color node-tap node-tap-mocha-reporter node-tap-parser node-tar node-text-table node-time-stamp node-tmatch node-tough-cookie node-typedarray-to-buffer node-unique-filename node-universalify node-util-deprecate node-validate-npm-package-license node-validate-npm-package-name node-wcwidth.js node-webidl-conversions node-whatwg-fetch node-which node-wide-align node-wrappy node-write-file-atomic node-ws node-yallist npm 0 upgraded, 182 newly installed, 0 to remove and 23 not upgraded. Need to get 5,075 kB of archives. After this operation, 36.3 MB of additional disk space will be used. Get:1 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 gyp all 0.1+20210831gitd6c5dd5-5 [238 kB] Get:2 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 libjs-events all 3.3.0+~3.0.0-2 [9,734 B] Get:3 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 libjs-is-typedarray all 1.0.0-4 [3,804 B] Get:4 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 libjs-psl all 1.8.0+ds-6 [76.3 kB] Get:5 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 libjs-sprintf-js all 1.1.2+ds1+~1.1.2-1 [12.8 kB] Get:6 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 libjs-typedarray-to-buffer all 4.0.0-2 [4,658 B] Get:7 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 libuv1-dev amd64 1.43.0-1ubuntu0.1 [130 kB] Get:8 http://us.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libnode-dev amd64 12.22.9~dfsg-1ubuntu3.4 [609 kB] Get:9 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-abab all 2.0.5-2 [6,578 B] Get:10 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-ms all 2.1.3+~cs0.7.31-2 [5,782 B] Get:11 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-debug all 4.3.2+~cs4.1.7-1 [17.6 kB] Get:12 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-yallist all 4.0.0+~4.0.1-1 [8,322 B] Get:13 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-lru-cache all 6.0.0+~5.1.1-1 [11.3 kB] Get:14 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-semver all 7.3.5+~7.3.8-1 [41.5 kB] Get:15 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-agent-base all 6.0.2+~cs5.4.2-1 [17.9 kB] Get:16 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-ansi-regex all 5.0.1-1 [4,984 B] Get:17 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-ansistyles all 0.1.3-5 [4,546 B] Get:18 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-aproba all 2.0.0-2 [5,620 B] Get:19 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-delegates all 1.0.0-3 [4,280 B] Get:20 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 libjs-inherits all 2.0.4-4 [3,468 B] Get:21 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-inherits all 2.0.4-4 [3,010 B] Get:22 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-core-util-is all 1.0.3-1 [4,066 B] Get:23 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-safe-buffer all 5.2.1+~cs2.1.2-2 [15.7 kB] Get:24 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-string-decoder all 1.3.0-5 [7,046 B] Get:25 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-process-nextick-args all 2.0.1-2 [3,730 B] Get:26 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-util-deprecate all 1.0.2-3 [4,202 B] Get:27 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-isarray all 2.0.5-3 [3,934 B] Get:28 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-readable-stream all 3.6.0+~cs3.0.0-1 [32.6 kB] Get:29 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-are-we-there-yet all 3.0.0+~1.1.0-1 [8,920 B] Get:30 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-arrify all 2.0.1-2 [3,610 B] Get:31 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-asap all 2.0.6+~2.0.0-1 [14.4 kB] Get:32 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-asynckit all 0.4.0-4 [10.6 kB] Get:33 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-builtins all 4.0.0-1 [3,860 B] Get:34 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-chownr all 2.0.0-1 [4,404 B] Get:35 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-fs.realpath all 1.0.0-2 [6,106 B] Get:36 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-wrappy all 1.0.2-2 [3,658 B] Get:37 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-once all 1.4.0-4 [4,708 B] Get:38 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-inflight all 1.0.6-2 [3,940 B] Get:39 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-balanced-match all 2.0.0-1 [4,910 B] Get:40 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-brace-expansion all 2.0.1-1 [7,458 B] Get:41 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-minimatch all 3.1.1+~3.0.5-1 [16.9 kB] Get:42 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-path-is-absolute all 2.0.0-2 [4,062 B] Get:43 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-glob all 7.2.1+~cs7.6.15-1 [131 kB] Get:44 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-graceful-fs all 4.2.4+repack-1 [12.5 kB] Get:45 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-mkdirp all 1.0.4+~1.0.2-1 [11.4 kB] Get:46 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-iferr all 1.0.2+~1.0.2-1 [4,610 B] Get:47 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-imurmurhash all 0.1.4+dfsg+~0.1.1-1 [8,510 B] Get:48 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-fs-write-stream-atomic all 1.0.10-5 [5,256 B] Get:49 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-rimraf all 3.0.2-1 [10.1 kB] Get:50 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-run-queue all 2.0.0-2 [5,092 B] Get:51 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-copy-concurrently all 1.0.5-8 [7,118 B] Get:52 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-move-concurrently all 1.0.1-4 [5,120 B] Get:53 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-escape-string-regexp all 4.0.0-2 [4,328 B] Get:54 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-indent-string all 4.0.0-2 [4,122 B] Get:55 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-p-map all 4.0.0+~3.1.0+~3.0.1-1 [8,058 B] Get:56 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-promise-inflight all 1.0.1+~1.0.0-1 [4,896 B] Get:57 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-ssri all 8.0.1-2 [19.6 kB] Get:58 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-unique-filename all 1.1.1+ds-1 [3,832 B] Get:59 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-cacache all 15.0.5+~cs13.9.21-3 [34.9 kB] Get:60 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-clean-yaml-object all 0.1.0-5 [4,718 B] Get:61 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-clone all 2.1.2-3 [8,344 B] Get:62 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-color-name all 1.1.4+~1.1.1-2 [6,076 B] Get:63 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-color-convert all 2.0.1-1 [10.2 kB] Get:64 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-colors all 1.4.0-3 [12.3 kB] Get:65 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-strip-ansi all 6.0.1-1 [4,184 B] Get:66 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-defaults all 1.0.3+~1.0.3-1 [4,288 B] Get:67 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-wcwidth.js all 1.0.2-1 [7,278 B] Get:68 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-columnify all 1.5.4+~1.5.1-1 [12.6 kB] Get:69 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-console-control-strings all 1.1.0-2 [5,428 B] Get:70 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-growl all 1.10.5-4 [7,064 B] Get:71 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-sprintf-js all 1.1.2+ds1+~1.1.2-1 [3,916 B] Get:72 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-argparse all 2.0.1-2 [33.2 kB] Get:73 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-esprima all 4.0.1+ds+~4.0.3-2 [69.3 kB] Get:74 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-js-yaml all 4.1.0+dfsg+~4.0.5-6 [62.7 kB] Get:75 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-lcov-parse all 1.0.0+20170612git80d039574ed9-5 [5,084 B] Get:76 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-log-driver all 1.2.7+git+20180219+bba1761737-7 [5,436 B] Get:77 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-is-plain-obj all 3.0.0-2 [3,994 B] Get:78 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-is-buffer all 2.0.5-2 [4,128 B] Get:79 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-kind-of all 6.0.3+dfsg-2 [8,628 B] Get:80 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-minimist all 1.2.5+~cs5.3.2-1 [9,434 B] Get:81 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-cssom all 0.4.4-3 [14.1 kB] Get:82 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-cssstyle all 2.3.0-2 [30.3 kB] Get:83 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-delayed-stream all 1.0.0-5 [5,464 B] Get:84 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-combined-stream all 1.0.8+~1.0.3-1 [7,432 B] Get:85 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-mime all 3.0.0+dfsg+~cs3.96.1-1 [38.1 kB] Get:86 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-mime-types all 2.1.33-1 [6,944 B] Get:87 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-form-data all 3.0.1-1 [13.4 kB] Get:88 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-events all 3.3.0+~3.0.0-2 [3,090 B] Get:89 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-https-proxy-agent all 5.0.0+~cs8.0.0-3 [16.4 kB] Get:90 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-iconv-lite all 0.6.3-2 [167 kB] Get:91 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-lodash-packages all 4.17.21+dfsg+~cs8.31.198.20210220-5 [166 kB] Get:92 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-stealthy-require all 1.1.1-5 [7,176 B] Get:93 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-punycode all 2.1.1-5 [9,902 B] Get:94 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-psl all 1.8.0+ds-6 [39.6 kB] Get:95 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-universalify all 2.0.0-3 [4,266 B] Get:96 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-tough-cookie all 4.0.0-2 [31.7 kB] Get:97 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-webidl-conversions all 7.0.0~1.1.0+~cs15.1.20180823-2 [27.5 kB] Get:98 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-commander all 9.0.0-2 [48.0 kB] Get:99 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-mute-stream all 0.0.8+~0.0.1-1 [6,448 B] Get:100 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-read all 1.0.7-3 [5,478 B] Get:101 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-ws all 8.5.0+~cs13.3.3-2 [49.5 kB] Get:102 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-jsdom all 19.0.0+~cs90.11.27-1 [446 kB] Get:103 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-fetch all 2.6.7+~2.5.12-1 [27.1 kB] Get:104 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-coveralls all 3.1.1-1 [14.2 kB] Get:105 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-mimic-response all 3.1.0-7 [5,430 B] Get:106 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-decompress-response all 6.0.0-2 [4,656 B] Get:107 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-diff all 5.0.0~dfsg+~5.0.1-3 [77.4 kB] Get:108 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-err-code all 2.0.3+dfsg-3 [4,918 B] Get:109 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-time-stamp all 2.2.0-1 [5,984 B] Get:110 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-fancy-log all 1.3.3+~cs1.3.1-2 [8,102 B] Get:111 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-signal-exit all 3.0.6+~3.0.1-1 [7,000 B] Get:112 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-foreground-child all 2.0.0-3 [5,542 B] Get:113 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-function-bind all 1.1.1+repacked+~1.0.3-1 [5,244 B] Get:114 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-has-unicode all 2.0.1-4 [3,948 B] Get:115 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-ansi-styles all 4.3.0+~4.2.0-1 [8,968 B] Get:116 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-slice-ansi all 5.0.0+~cs9.0.0-4 [8,044 B] Get:117 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-string-width all 4.2.3+~cs13.2.3-1 [11.4 kB] Get:118 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-wide-align all 1.1.3-4 [4,228 B] Get:119 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-gauge all 4.0.2-1 [16.3 kB] Get:120 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-end-of-stream all 1.4.4+~1.4.1-1 [5,340 B] Get:121 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-pump all 3.0.0-5 [5,160 B] Get:122 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-get-stream all 6.0.1-1 [7,324 B] Get:123 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-lowercase-keys all 2.0.0-2 [3,754 B] Get:124 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-json-buffer all 3.0.1-1 [3,812 B] Get:125 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-p-cancelable all 2.1.1-1 [7,358 B] Get:126 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-quick-lru all 5.1.1-1 [5,532 B] Get:127 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-got all 11.8.3+~cs58.7.37-1 [122 kB] Get:128 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-has-flag all 4.0.0-2 [4,228 B] Get:129 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-hosted-git-info all 4.0.2-1 [9,006 B] Get:130 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-ip all 1.1.5+~1.1.0-1 [8,140 B] Get:131 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-ip-regex all 4.3.0+~4.1.1-1 [5,254 B] Get:132 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-is-typedarray all 1.0.0-4 [2,072 B] Get:133 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-isexe all 2.0.0+~2.0.1-4 [6,102 B] Get:134 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-json-parse-better-errors all 1.0.2+~cs3.3.1-1 [7,328 B] Get:135 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-encoding all 0.1.13-2 [4,366 B] Get:136 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-jsonparse all 1.3.1-10 [8,060 B] Get:137 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-minipass all 3.1.6+~cs8.7.18-1 [32.9 kB] Get:138 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-npm-bundled all 1.1.2-1 [6,228 B] Get:139 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-osenv all 0.1.5+~0.1.0-1 [5,896 B] Get:140 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-validate-npm-package-name all 3.0.0-4 [5,058 B] Get:141 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-npm-package-arg all 8.1.5-1 [8,132 B] Get:142 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-object-assign all 4.1.1-6 [4,754 B] Get:143 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-opener all 1.5.2+~1.4.0-1 [6,000 B] Get:144 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-retry all 0.13.1+~0.12.1-1 [11.5 kB] Get:145 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-promise-retry all 2.0.1-2 [5,010 B] Get:146 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-promzard all 0.3.0-2 [6,888 B] Get:147 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-set-blocking all 2.0.0-2 [3,766 B] Get:148 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-slash all 3.0.0-2 [3,922 B] Get:149 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 libjs-source-map all 0.7.0++dfsg2+really.0.6.1-9 [93.9 kB] Get:150 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-source-map all 0.7.0++dfsg2+really.0.6.1-9 [33.6 kB] Get:151 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-source-map-support all 0.5.21+ds+~0.5.4-1 [14.2 kB] Get:152 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-spdx-license-ids all 3.0.11-1 [7,306 B] Get:153 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-spdx-exceptions all 2.3.0-2 [3,978 B] Get:154 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-spdx-expression-parse all 3.0.1+~3.0.1-1 [7,658 B] Get:155 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-spdx-correct all 3.1.1-2 [5,476 B] Get:156 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-stack-utils all 2.0.5+~2.0.1-1 [9,368 B] Get:157 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-supports-color all 8.1.1+~8.1.1-1 [7,048 B] Get:158 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-tap-parser all 7.0.0+ds1-6 [19.4 kB] Get:159 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-tap-mocha-reporter all 3.0.7+ds-2 [39.2 kB] Get:160 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-text-table all 0.2.0-4 [4,762 B] Get:161 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-tmatch all 5.0.0-4 [6,002 B] Get:162 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-typedarray-to-buffer all 4.0.0-2 [2,242 B] Get:163 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-validate-npm-package-license all 3.0.4-2 [4,252 B] Get:164 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-whatwg-fetch all 3.6.2-5 [15.0 kB] Get:165 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-write-file-atomic all 3.0.3+~3.0.2-1 [7,690 B] Get:166 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-abbrev all 1.1.1+~1.1.2-1 [5,784 B] Get:167 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-archy all 1.0.0-4 [4,728 B] Get:168 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-chalk all 4.1.2-1 [15.9 kB] Get:169 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-cli-table all 0.3.11+~cs0.13.3-1 [23.2 kB] Get:170 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-depd all 2.0.0-2 [10.5 kB] Get:171 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-nopt all 5.0.0-2 [11.3 kB] Get:172 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-npmlog all 6.0.1+~4.1.4-1 [9,968 B] Get:173 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-tar all 6.1.11+ds1+~cs6.0.6-1 [38.8 kB] Get:174 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-which all 2.0.2+~cs1.3.2-2 [7,374 B] Get:175 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-gyp all 8.4.1-1 [34.7 kB] Get:176 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-ini all 2.0.1-1 [6,528 B] Get:177 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-negotiator all 0.6.2+~0.6.1-1 [10.3 kB] Get:178 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-resolve all 1.20.0+~cs5.27.9-1 [20.7 kB] Get:179 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-normalize-package-data all 3.0.3+~2.4.1-1 [12.8 kB] Get:180 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-read-package-json all 4.1.1-1 [10.4 kB] Get:181 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 node-tap all 12.0.1+ds-4 [43.6 kB] Get:182 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 npm all 8.5.1~ds-1 [894 kB] Fetched 5,075 kB in 19s (272 kB/s) Extracting templates from packages: 100% Selecting previously unselected package gyp. (Reading database ... 250530 files and directories currently installed.) Preparing to unpack .../000-gyp_0.1+20210831gitd6c5dd5-5_all.deb ... Unpacking gyp (0.1+20210831gitd6c5dd5-5) ... Selecting previously unselected package libjs-events. Preparing to unpack .../001-libjs-events_3.3.0+~3.0.0-2_all.deb ... Unpacking libjs-events (3.3.0+~3.0.0-2) ... Selecting previously unselected package libjs-is-typedarray. Preparing to unpack .../002-libjs-is-typedarray_1.0.0-4_all.deb ... Unpacking libjs-is-typedarray (1.0.0-4) ... Selecting previously unselected package libjs-psl. Preparing to unpack .../003-libjs-psl_1.8.0+ds-6_all.deb ... Unpacking libjs-psl (1.8.0+ds-6) ... Selecting previously unselected package libjs-sprintf-js. Preparing to unpack .../004-libjs-sprintf-js_1.1.2+ds1+~1.1.2-1_all.deb ... Unpacking libjs-sprintf-js (1.1.2+ds1+~1.1.2-1) ... Selecting previously unselected package libjs-typedarray-to-buffer. Preparing to unpack .../005-libjs-typedarray-to-buffer_4.0.0-2_all.deb ... Unpacking libjs-typedarray-to-buffer (4.0.0-2) ... Selecting previously unselected package libuv1-dev:amd64. Preparing to unpack .../006-libuv1-dev_1.43.0-1ubuntu0.1_amd64.deb ... Unpacking libuv1-dev:amd64 (1.43.0-1ubuntu0.1) ... Selecting previously unselected package libnode-dev. Preparing to unpack .../007-libnode-dev_12.22.9~dfsg-1ubuntu3.4_amd64.deb ... Unpacking libnode-dev (12.22.9~dfsg-1ubuntu3.4) ... Selecting previously unselected package node-abab. Preparing to unpack .../008-node-abab_2.0.5-2_all.deb ... Unpacking node-abab (2.0.5-2) ... Selecting previously unselected package node-ms. Preparing to unpack .../009-node-ms_2.1.3+~cs0.7.31-2_all.deb ... Unpacking node-ms (2.1.3+~cs0.7.31-2) ... Selecting previously unselected package node-debug. Preparing to unpack .../010-node-debug_4.3.2+~cs4.1.7-1_all.deb ... Unpacking node-debug (4.3.2+~cs4.1.7-1) ... Selecting previously unselected package node-yallist. Preparing to unpack .../011-node-yallist_4.0.0+~4.0.1-1_all.deb ... Unpacking node-yallist (4.0.0+~4.0.1-1) ... Selecting previously unselected package node-lru-cache. Preparing to unpack .../012-node-lru-cache_6.0.0+~5.1.1-1_all.deb ... Unpacking node-lru-cache (6.0.0+~5.1.1-1) ... Selecting previously unselected package node-semver. Preparing to unpack .../013-node-semver_7.3.5+~7.3.8-1_all.deb ... Unpacking node-semver (7.3.5+~7.3.8-1) ... Selecting previously unselected package node-agent-base. Preparing to unpack .../014-node-agent-base_6.0.2+~cs5.4.2-1_all.deb ... Unpacking node-agent-base (6.0.2+~cs5.4.2-1) ... Selecting previously unselected package node-ansi-regex. Preparing to unpack .../015-node-ansi-regex_5.0.1-1_all.deb ... Unpacking node-ansi-regex (5.0.1-1) ... Selecting previously unselected package node-ansistyles. Preparing to unpack .../016-node-ansistyles_0.1.3-5_all.deb ... Unpacking node-ansistyles (0.1.3-5) ... Selecting previously unselected package node-aproba. Preparing to unpack .../017-node-aproba_2.0.0-2_all.deb ... Unpacking node-aproba (2.0.0-2) ... Selecting previously unselected package node-delegates. Preparing to unpack .../018-node-delegates_1.0.0-3_all.deb ... Unpacking node-delegates (1.0.0-3) ... Selecting previously unselected package libjs-inherits. Preparing to unpack .../019-libjs-inherits_2.0.4-4_all.deb ... Unpacking libjs-inherits (2.0.4-4) ... Selecting previously unselected package node-inherits. Preparing to unpack .../020-node-inherits_2.0.4-4_all.deb ... Unpacking node-inherits (2.0.4-4) ... Selecting previously unselected package node-core-util-is. Preparing to unpack .../021-node-core-util-is_1.0.3-1_all.deb ... Unpacking node-core-util-is (1.0.3-1) ... Selecting previously unselected package node-safe-buffer. Preparing to unpack .../022-node-safe-buffer_5.2.1+~cs2.1.2-2_all.deb ... Unpacking node-safe-buffer (5.2.1+~cs2.1.2-2) ... Selecting previously unselected package node-string-decoder. Preparing to unpack .../023-node-string-decoder_1.3.0-5_all.deb ... Unpacking node-string-decoder (1.3.0-5) ... Selecting previously unselected package node-process-nextick-args. Preparing to unpack .../024-node-process-nextick-args_2.0.1-2_all.deb ... Unpacking node-process-nextick-args (2.0.1-2) ... Selecting previously unselected package node-util-deprecate. Preparing to unpack .../025-node-util-deprecate_1.0.2-3_all.deb ... Unpacking node-util-deprecate (1.0.2-3) ... Selecting previously unselected package node-isarray. Preparing to unpack .../026-node-isarray_2.0.5-3_all.deb ... Unpacking node-isarray (2.0.5-3) ... Selecting previously unselected package node-readable-stream. Preparing to unpack .../027-node-readable-stream_3.6.0+~cs3.0.0-1_all.deb ... Unpacking node-readable-stream (3.6.0+~cs3.0.0-1) ... Selecting previously unselected package node-are-we-there-yet. Preparing to unpack .../028-node-are-we-there-yet_3.0.0+~1.1.0-1_all.deb ... Unpacking node-are-we-there-yet (3.0.0+~1.1.0-1) ... Selecting previously unselected package node-arrify. Preparing to unpack .../029-node-arrify_2.0.1-2_all.deb ... Unpacking node-arrify (2.0.1-2) ... Selecting previously unselected package node-asap. Preparing to unpack .../030-node-asap_2.0.6+~2.0.0-1_all.deb ... Unpacking node-asap (2.0.6+~2.0.0-1) ... Selecting previously unselected package node-asynckit. Preparing to unpack .../031-node-asynckit_0.4.0-4_all.deb ... Unpacking node-asynckit (0.4.0-4) ... Selecting previously unselected package node-builtins. Preparing to unpack .../032-node-builtins_4.0.0-1_all.deb ... Unpacking node-builtins (4.0.0-1) ... Selecting previously unselected package node-chownr. Preparing to unpack .../033-node-chownr_2.0.0-1_all.deb ... Unpacking node-chownr (2.0.0-1) ... Selecting previously unselected package node-fs.realpath. Preparing to unpack .../034-node-fs.realpath_1.0.0-2_all.deb ... Unpacking node-fs.realpath (1.0.0-2) ... Selecting previously unselected package node-wrappy. Preparing to unpack .../035-node-wrappy_1.0.2-2_all.deb ... Unpacking node-wrappy (1.0.2-2) ... Selecting previously unselected package node-once. Preparing to unpack .../036-node-once_1.4.0-4_all.deb ... Unpacking node-once (1.4.0-4) ... Selecting previously unselected package node-inflight. Preparing to unpack .../037-node-inflight_1.0.6-2_all.deb ... Unpacking node-inflight (1.0.6-2) ... Selecting previously unselected package node-balanced-match. Preparing to unpack .../038-node-balanced-match_2.0.0-1_all.deb ... Unpacking node-balanced-match (2.0.0-1) ... Selecting previously unselected package node-brace-expansion. Preparing to unpack .../039-node-brace-expansion_2.0.1-1_all.deb ... Unpacking node-brace-expansion (2.0.1-1) ... Selecting previously unselected package node-minimatch. Preparing to unpack .../040-node-minimatch_3.1.1+~3.0.5-1_all.deb ... Unpacking node-minimatch (3.1.1+~3.0.5-1) ... Selecting previously unselected package node-path-is-absolute. Preparing to unpack .../041-node-path-is-absolute_2.0.0-2_all.deb ... Unpacking node-path-is-absolute (2.0.0-2) ... Selecting previously unselected package node-glob. Preparing to unpack .../042-node-glob_7.2.1+~cs7.6.15-1_all.deb ... Unpacking node-glob (7.2.1+~cs7.6.15-1) ... Selecting previously unselected package node-graceful-fs. Preparing to unpack .../043-node-graceful-fs_4.2.4+repack-1_all.deb ... Unpacking node-graceful-fs (4.2.4+repack-1) ... Selecting previously unselected package node-mkdirp. Preparing to unpack .../044-node-mkdirp_1.0.4+~1.0.2-1_all.deb ... Unpacking node-mkdirp (1.0.4+~1.0.2-1) ... Selecting previously unselected package node-iferr. Preparing to unpack .../045-node-iferr_1.0.2+~1.0.2-1_all.deb ... Unpacking node-iferr (1.0.2+~1.0.2-1) ... Selecting previously unselected package node-imurmurhash. Preparing to unpack .../046-node-imurmurhash_0.1.4+dfsg+~0.1.1-1_all.deb ... Unpacking node-imurmurhash (0.1.4+dfsg+~0.1.1-1) ... Selecting previously unselected package node-fs-write-stream-atomic. Preparing to unpack .../047-node-fs-write-stream-atomic_1.0.10-5_all.deb ... Unpacking node-fs-write-stream-atomic (1.0.10-5) ... Selecting previously unselected package node-rimraf. Preparing to unpack .../048-node-rimraf_3.0.2-1_all.deb ... Unpacking node-rimraf (3.0.2-1) ... Selecting previously unselected package node-run-queue. Preparing to unpack .../049-node-run-queue_2.0.0-2_all.deb ... Unpacking node-run-queue (2.0.0-2) ... Selecting previously unselected package node-copy-concurrently. Preparing to unpack .../050-node-copy-concurrently_1.0.5-8_all.deb ... Unpacking node-copy-concurrently (1.0.5-8) ... Selecting previously unselected package node-move-concurrently. Preparing to unpack .../051-node-move-concurrently_1.0.1-4_all.deb ... Unpacking node-move-concurrently (1.0.1-4) ... Selecting previously unselected package node-escape-string-regexp. Preparing to unpack .../052-node-escape-string-regexp_4.0.0-2_all.deb ... Unpacking node-escape-string-regexp (4.0.0-2) ... Selecting previously unselected package node-indent-string. Preparing to unpack .../053-node-indent-string_4.0.0-2_all.deb ... Unpacking node-indent-string (4.0.0-2) ... Selecting previously unselected package node-p-map. Preparing to unpack .../054-node-p-map_4.0.0+~3.1.0+~3.0.1-1_all.deb ... Unpacking node-p-map (4.0.0+~3.1.0+~3.0.1-1) ... Selecting previously unselected package node-promise-inflight. Preparing to unpack .../055-node-promise-inflight_1.0.1+~1.0.0-1_all.deb ... Unpacking node-promise-inflight (1.0.1+~1.0.0-1) ... Selecting previously unselected package node-ssri. Preparing to unpack .../056-node-ssri_8.0.1-2_all.deb ... Unpacking node-ssri (8.0.1-2) ... Selecting previously unselected package node-unique-filename. Preparing to unpack .../057-node-unique-filename_1.1.1+ds-1_all.deb ... Unpacking node-unique-filename (1.1.1+ds-1) ... Selecting previously unselected package node-cacache. Preparing to unpack .../058-node-cacache_15.0.5+~cs13.9.21-3_all.deb ... Unpacking node-cacache (15.0.5+~cs13.9.21-3) ... Selecting previously unselected package node-clean-yaml-object. Preparing to unpack .../059-node-clean-yaml-object_0.1.0-5_all.deb ... Unpacking node-clean-yaml-object (0.1.0-5) ... Selecting previously unselected package node-clone. Preparing to unpack .../060-node-clone_2.1.2-3_all.deb ... Unpacking node-clone (2.1.2-3) ... Selecting previously unselected package node-color-name. Preparing to unpack .../061-node-color-name_1.1.4+~1.1.1-2_all.deb ... Unpacking node-color-name (1.1.4+~1.1.1-2) ... Selecting previously unselected package node-color-convert. Preparing to unpack .../062-node-color-convert_2.0.1-1_all.deb ... Unpacking node-color-convert (2.0.1-1) ... Selecting previously unselected package node-colors. Preparing to unpack .../063-node-colors_1.4.0-3_all.deb ... Unpacking node-colors (1.4.0-3) ... Selecting previously unselected package node-strip-ansi. Preparing to unpack .../064-node-strip-ansi_6.0.1-1_all.deb ... Unpacking node-strip-ansi (6.0.1-1) ... Selecting previously unselected package node-defaults. Preparing to unpack .../065-node-defaults_1.0.3+~1.0.3-1_all.deb ... Unpacking node-defaults (1.0.3+~1.0.3-1) ... Selecting previously unselected package node-wcwidth.js. Preparing to unpack .../066-node-wcwidth.js_1.0.2-1_all.deb ... Unpacking node-wcwidth.js (1.0.2-1) ... Selecting previously unselected package node-columnify. Preparing to unpack .../067-node-columnify_1.5.4+~1.5.1-1_all.deb ... Unpacking node-columnify (1.5.4+~1.5.1-1) ... Selecting previously unselected package node-console-control-strings. Preparing to unpack .../068-node-console-control-strings_1.1.0-2_all.deb ... Unpacking node-console-control-strings (1.1.0-2) ... Selecting previously unselected package node-growl. Preparing to unpack .../069-node-growl_1.10.5-4_all.deb ... Unpacking node-growl (1.10.5-4) ... Selecting previously unselected package node-sprintf-js. Preparing to unpack .../070-node-sprintf-js_1.1.2+ds1+~1.1.2-1_all.deb ... Unpacking node-sprintf-js (1.1.2+ds1+~1.1.2-1) ... Selecting previously unselected package node-argparse. Preparing to unpack .../071-node-argparse_2.0.1-2_all.deb ... Unpacking node-argparse (2.0.1-2) ... Selecting previously unselected package node-esprima. Preparing to unpack .../072-node-esprima_4.0.1+ds+~4.0.3-2_all.deb ... Unpacking node-esprima (4.0.1+ds+~4.0.3-2) ... Selecting previously unselected package node-js-yaml. Preparing to unpack .../073-node-js-yaml_4.1.0+dfsg+~4.0.5-6_all.deb ... Unpacking node-js-yaml (4.1.0+dfsg+~4.0.5-6) ... Selecting previously unselected package node-lcov-parse. Preparing to unpack .../074-node-lcov-parse_1.0.0+20170612git80d039574ed9-5_all. deb ... Unpacking node-lcov-parse (1.0.0+20170612git80d039574ed9-5) ... Selecting previously unselected package node-log-driver. Preparing to unpack .../075-node-log-driver_1.2.7+git+20180219+bba1761737-7_all. deb ... Unpacking node-log-driver (1.2.7+git+20180219+bba1761737-7) ... Selecting previously unselected package node-is-plain-obj. Preparing to unpack .../076-node-is-plain-obj_3.0.0-2_all.deb ... Unpacking node-is-plain-obj (3.0.0-2) ... Selecting previously unselected package node-is-buffer. Preparing to unpack .../077-node-is-buffer_2.0.5-2_all.deb ... Unpacking node-is-buffer (2.0.5-2) ... Selecting previously unselected package node-kind-of. Preparing to unpack .../078-node-kind-of_6.0.3+dfsg-2_all.deb ... Unpacking node-kind-of (6.0.3+dfsg-2) ... Selecting previously unselected package node-minimist. Preparing to unpack .../079-node-minimist_1.2.5+~cs5.3.2-1_all.deb ... Unpacking node-minimist (1.2.5+~cs5.3.2-1) ... Selecting previously unselected package node-cssom. Preparing to unpack .../080-node-cssom_0.4.4-3_all.deb ... Unpacking node-cssom (0.4.4-3) ... Selecting previously unselected package node-cssstyle. Preparing to unpack .../081-node-cssstyle_2.3.0-2_all.deb ... Unpacking node-cssstyle (2.3.0-2) ... Selecting previously unselected package node-delayed-stream. Preparing to unpack .../082-node-delayed-stream_1.0.0-5_all.deb ... Unpacking node-delayed-stream (1.0.0-5) ... Selecting previously unselected package node-combined-stream. Preparing to unpack .../083-node-combined-stream_1.0.8+~1.0.3-1_all.deb ... Unpacking node-combined-stream (1.0.8+~1.0.3-1) ... Selecting previously unselected package node-mime. Preparing to unpack .../084-node-mime_3.0.0+dfsg+~cs3.96.1-1_all.deb ... Unpacking node-mime (3.0.0+dfsg+~cs3.96.1-1) ... Selecting previously unselected package node-mime-types. Preparing to unpack .../085-node-mime-types_2.1.33-1_all.deb ... Unpacking node-mime-types (2.1.33-1) ... Selecting previously unselected package node-form-data. Preparing to unpack .../086-node-form-data_3.0.1-1_all.deb ... Unpacking node-form-data (3.0.1-1) ... Selecting previously unselected package node-events. Preparing to unpack .../087-node-events_3.3.0+~3.0.0-2_all.deb ... Unpacking node-events (3.3.0+~3.0.0-2) ... Selecting previously unselected package node-https-proxy-agent. Preparing to unpack .../088-node-https-proxy-agent_5.0.0+~cs8.0.0-3_all.deb ... Unpacking node-https-proxy-agent (5.0.0+~cs8.0.0-3) ... Selecting previously unselected package node-iconv-lite. Preparing to unpack .../089-node-iconv-lite_0.6.3-2_all.deb ... Unpacking node-iconv-lite (0.6.3-2) ... Selecting previously unselected package node-lodash-packages. Preparing to unpack .../090-node-lodash-packages_4.17.21+dfsg+~cs8.31.198.202102 20-5_all.deb ... Unpacking node-lodash-packages (4.17.21+dfsg+~cs8.31.198.20210220-5) ... Selecting previously unselected package node-stealthy-require. Preparing to unpack .../091-node-stealthy-require_1.1.1-5_all.deb ... Unpacking node-stealthy-require (1.1.1-5) ... Selecting previously unselected package node-punycode. Preparing to unpack .../092-node-punycode_2.1.1-5_all.deb ... Unpacking node-punycode (2.1.1-5) ... Selecting previously unselected package node-psl. Preparing to unpack .../093-node-psl_1.8.0+ds-6_all.deb ... Unpacking node-psl (1.8.0+ds-6) ... Selecting previously unselected package node-universalify. Preparing to unpack .../094-node-universalify_2.0.0-3_all.deb ... Unpacking node-universalify (2.0.0-3) ... Selecting previously unselected package node-tough-cookie. Preparing to unpack .../095-node-tough-cookie_4.0.0-2_all.deb ... Unpacking node-tough-cookie (4.0.0-2) ... Selecting previously unselected package node-webidl-conversions. Preparing to unpack .../096-node-webidl-conversions_7.0.0~1.1.0+~cs15.1.20180823 -2_all.deb ... Unpacking node-webidl-conversions (7.0.0~1.1.0+~cs15.1.20180823-2) ... Selecting previously unselected package node-commander. Preparing to unpack .../097-node-commander_9.0.0-2_all.deb ... Unpacking node-commander (9.0.0-2) ... Selecting previously unselected package node-mute-stream. Preparing to unpack .../098-node-mute-stream_0.0.8+~0.0.1-1_all.deb ... Unpacking node-mute-stream (0.0.8+~0.0.1-1) ... Selecting previously unselected package node-read. Preparing to unpack .../099-node-read_1.0.7-3_all.deb ... Unpacking node-read (1.0.7-3) ... Selecting previously unselected package node-ws. Preparing to unpack .../100-node-ws_8.5.0+~cs13.3.3-2_all.deb ... Unpacking node-ws (8.5.0+~cs13.3.3-2) ... Selecting previously unselected package node-jsdom. Preparing to unpack .../101-node-jsdom_19.0.0+~cs90.11.27-1_all.deb ... Unpacking node-jsdom (19.0.0+~cs90.11.27-1) ... Selecting previously unselected package node-fetch. Preparing to unpack .../102-node-fetch_2.6.7+~2.5.12-1_all.deb ... Unpacking node-fetch (2.6.7+~2.5.12-1) ... Selecting previously unselected package node-coveralls. Preparing to unpack .../103-node-coveralls_3.1.1-1_all.deb ... Unpacking node-coveralls (3.1.1-1) ... Selecting previously unselected package node-mimic-response. Preparing to unpack .../104-node-mimic-response_3.1.0-7_all.deb ... Unpacking node-mimic-response (3.1.0-7) ... Selecting previously unselected package node-decompress-response. Preparing to unpack .../105-node-decompress-response_6.0.0-2_all.deb ... Unpacking node-decompress-response (6.0.0-2) ... Selecting previously unselected package node-diff. Preparing to unpack .../106-node-diff_5.0.0~dfsg+~5.0.1-3_all.deb ... Unpacking node-diff (5.0.0~dfsg+~5.0.1-3) ... Selecting previously unselected package node-err-code. Preparing to unpack .../107-node-err-code_2.0.3+dfsg-3_all.deb ... Unpacking node-err-code (2.0.3+dfsg-3) ... Selecting previously unselected package node-time-stamp. Preparing to unpack .../108-node-time-stamp_2.2.0-1_all.deb ... Unpacking node-time-stamp (2.2.0-1) ... Selecting previously unselected package node-fancy-log. Preparing to unpack .../109-node-fancy-log_1.3.3+~cs1.3.1-2_all.deb ... Unpacking node-fancy-log (1.3.3+~cs1.3.1-2) ... Selecting previously unselected package node-signal-exit. Preparing to unpack .../110-node-signal-exit_3.0.6+~3.0.1-1_all.deb ... Unpacking node-signal-exit (3.0.6+~3.0.1-1) ... Selecting previously unselected package node-foreground-child. Preparing to unpack .../111-node-foreground-child_2.0.0-3_all.deb ... Unpacking node-foreground-child (2.0.0-3) ... Selecting previously unselected package node-function-bind. Preparing to unpack .../112-node-function-bind_1.1.1+repacked+~1.0.3-1_all.deb . .. Unpacking node-function-bind (1.1.1+repacked+~1.0.3-1) ... Selecting previously unselected package node-has-unicode. Preparing to unpack .../113-node-has-unicode_2.0.1-4_all.deb ... Unpacking node-has-unicode (2.0.1-4) ... Selecting previously unselected package node-ansi-styles. Preparing to unpack .../114-node-ansi-styles_4.3.0+~4.2.0-1_all.deb ... Unpacking node-ansi-styles (4.3.0+~4.2.0-1) ... Selecting previously unselected package node-slice-ansi. Preparing to unpack .../115-node-slice-ansi_5.0.0+~cs9.0.0-4_all.deb ... Unpacking node-slice-ansi (5.0.0+~cs9.0.0-4) ... Selecting previously unselected package node-string-width. Preparing to unpack .../116-node-string-width_4.2.3+~cs13.2.3-1_all.deb ... Unpacking node-string-width (4.2.3+~cs13.2.3-1) ... Selecting previously unselected package node-wide-align. Preparing to unpack .../117-node-wide-align_1.1.3-4_all.deb ... Unpacking node-wide-align (1.1.3-4) ... Selecting previously unselected package node-gauge. Preparing to unpack .../118-node-gauge_4.0.2-1_all.deb ... Unpacking node-gauge (4.0.2-1) ... Selecting previously unselected package node-end-of-stream. Preparing to unpack .../119-node-end-of-stream_1.4.4+~1.4.1-1_all.deb ... Unpacking node-end-of-stream (1.4.4+~1.4.1-1) ... Selecting previously unselected package node-pump. Preparing to unpack .../120-node-pump_3.0.0-5_all.deb ... Unpacking node-pump (3.0.0-5) ... Selecting previously unselected package node-get-stream. Preparing to unpack .../121-node-get-stream_6.0.1-1_all.deb ... Unpacking node-get-stream (6.0.1-1) ... Selecting previously unselected package node-lowercase-keys. Preparing to unpack .../122-node-lowercase-keys_2.0.0-2_all.deb ... Unpacking node-lowercase-keys (2.0.0-2) ... Selecting previously unselected package node-json-buffer. Preparing to unpack .../123-node-json-buffer_3.0.1-1_all.deb ... Unpacking node-json-buffer (3.0.1-1) ... Selecting previously unselected package node-p-cancelable. Preparing to unpack .../124-node-p-cancelable_2.1.1-1_all.deb ... Unpacking node-p-cancelable (2.1.1-1) ... Selecting previously unselected package node-quick-lru. Preparing to unpack .../125-node-quick-lru_5.1.1-1_all.deb ... Unpacking node-quick-lru (5.1.1-1) ... Selecting previously unselected package node-got. Preparing to unpack .../126-node-got_11.8.3+~cs58.7.37-1_all.deb ... Unpacking node-got (11.8.3+~cs58.7.37-1) ... Selecting previously unselected package node-has-flag. Preparing to unpack .../127-node-has-flag_4.0.0-2_all.deb ... Unpacking node-has-flag (4.0.0-2) ... Selecting previously unselected package node-hosted-git-info. Preparing to unpack .../128-node-hosted-git-info_4.0.2-1_all.deb ... Unpacking node-hosted-git-info (4.0.2-1) ... Selecting previously unselected package node-ip. Preparing to unpack .../129-node-ip_1.1.5+~1.1.0-1_all.deb ... Unpacking node-ip (1.1.5+~1.1.0-1) ... Selecting previously unselected package node-ip-regex. Preparing to unpack .../130-node-ip-regex_4.3.0+~4.1.1-1_all.deb ... Unpacking node-ip-regex (4.3.0+~4.1.1-1) ... Selecting previously unselected package node-is-typedarray. Preparing to unpack .../131-node-is-typedarray_1.0.0-4_all.deb ... Unpacking node-is-typedarray (1.0.0-4) ... Selecting previously unselected package node-isexe. Preparing to unpack .../132-node-isexe_2.0.0+~2.0.1-4_all.deb ... Unpacking node-isexe (2.0.0+~2.0.1-4) ... Selecting previously unselected package node-json-parse-better-errors. Preparing to unpack .../133-node-json-parse-better-errors_1.0.2+~cs3.3.1-1_all.d eb ... Unpacking node-json-parse-better-errors (1.0.2+~cs3.3.1-1) ... Selecting previously unselected package node-encoding. Preparing to unpack .../134-node-encoding_0.1.13-2_all.deb ... Unpacking node-encoding (0.1.13-2) ... Selecting previously unselected package node-jsonparse. Preparing to unpack .../135-node-jsonparse_1.3.1-10_all.deb ... Unpacking node-jsonparse (1.3.1-10) ... Selecting previously unselected package node-minipass. Preparing to unpack .../136-node-minipass_3.1.6+~cs8.7.18-1_all.deb ... Unpacking node-minipass (3.1.6+~cs8.7.18-1) ... Selecting previously unselected package node-npm-bundled. Preparing to unpack .../137-node-npm-bundled_1.1.2-1_all.deb ... Unpacking node-npm-bundled (1.1.2-1) ... Selecting previously unselected package node-osenv. Preparing to unpack .../138-node-osenv_0.1.5+~0.1.0-1_all.deb ... Unpacking node-osenv (0.1.5+~0.1.0-1) ... Selecting previously unselected package node-validate-npm-package-name. Preparing to unpack .../139-node-validate-npm-package-name_3.0.0-4_all.deb ... Unpacking node-validate-npm-package-name (3.0.0-4) ... Selecting previously unselected package node-npm-package-arg. Preparing to unpack .../140-node-npm-package-arg_8.1.5-1_all.deb ... Unpacking node-npm-package-arg (8.1.5-1) ... Selecting previously unselected package node-object-assign. Preparing to unpack .../141-node-object-assign_4.1.1-6_all.deb ... Unpacking node-object-assign (4.1.1-6) ... Selecting previously unselected package node-opener. Preparing to unpack .../142-node-opener_1.5.2+~1.4.0-1_all.deb ... Unpacking node-opener (1.5.2+~1.4.0-1) ... Selecting previously unselected package node-retry. Preparing to unpack .../143-node-retry_0.13.1+~0.12.1-1_all.deb ... Unpacking node-retry (0.13.1+~0.12.1-1) ... Selecting previously unselected package node-promise-retry. Preparing to unpack .../144-node-promise-retry_2.0.1-2_all.deb ... Unpacking node-promise-retry (2.0.1-2) ... Selecting previously unselected package node-promzard. Preparing to unpack .../145-node-promzard_0.3.0-2_all.deb ... Unpacking node-promzard (0.3.0-2) ... Selecting previously unselected package node-set-blocking. Preparing to unpack .../146-node-set-blocking_2.0.0-2_all.deb ... Unpacking node-set-blocking (2.0.0-2) ... Selecting previously unselected package node-slash. Preparing to unpack .../147-node-slash_3.0.0-2_all.deb ... Unpacking node-slash (3.0.0-2) ... Selecting previously unselected package libjs-source-map. Preparing to unpack .../148-libjs-source-map_0.7.0++dfsg2+really.0.6.1-9_all.deb ... Unpacking libjs-source-map (0.7.0++dfsg2+really.0.6.1-9) ... Selecting previously unselected package node-source-map. Preparing to unpack .../149-node-source-map_0.7.0++dfsg2+really.0.6.1-9_all.deb ... Unpacking node-source-map (0.7.0++dfsg2+really.0.6.1-9) ... Selecting previously unselected package node-source-map-support. Preparing to unpack .../150-node-source-map-support_0.5.21+ds+~0.5.4-1_all.deb . .. Unpacking node-source-map-support (0.5.21+ds+~0.5.4-1) ... Selecting previously unselected package node-spdx-license-ids. Preparing to unpack .../151-node-spdx-license-ids_3.0.11-1_all.deb ... Unpacking node-spdx-license-ids (3.0.11-1) ... Selecting previously unselected package node-spdx-exceptions. Preparing to unpack .../152-node-spdx-exceptions_2.3.0-2_all.deb ... Unpacking node-spdx-exceptions (2.3.0-2) ... Selecting previously unselected package node-spdx-expression-parse. Preparing to unpack .../153-node-spdx-expression-parse_3.0.1+~3.0.1-1_all.deb .. . Unpacking node-spdx-expression-parse (3.0.1+~3.0.1-1) ... Selecting previously unselected package node-spdx-correct. Preparing to unpack .../154-node-spdx-correct_3.1.1-2_all.deb ... Unpacking node-spdx-correct (3.1.1-2) ... Selecting previously unselected package node-stack-utils. Preparing to unpack .../155-node-stack-utils_2.0.5+~2.0.1-1_all.deb ... Unpacking node-stack-utils (2.0.5+~2.0.1-1) ... Selecting previously unselected package node-supports-color. Preparing to unpack .../156-node-supports-color_8.1.1+~8.1.1-1_all.deb ... Unpacking node-supports-color (8.1.1+~8.1.1-1) ... Selecting previously unselected package node-tap-parser. Preparing to unpack .../157-node-tap-parser_7.0.0+ds1-6_all.deb ... Unpacking node-tap-parser (7.0.0+ds1-6) ... Selecting previously unselected package node-tap-mocha-reporter. Preparing to unpack .../158-node-tap-mocha-reporter_3.0.7+ds-2_all.deb ... Unpacking node-tap-mocha-reporter (3.0.7+ds-2) ... Selecting previously unselected package node-text-table. Preparing to unpack .../159-node-text-table_0.2.0-4_all.deb ... Unpacking node-text-table (0.2.0-4) ... Selecting previously unselected package node-tmatch. Preparing to unpack .../160-node-tmatch_5.0.0-4_all.deb ... Unpacking node-tmatch (5.0.0-4) ... Selecting previously unselected package node-typedarray-to-buffer. Preparing to unpack .../161-node-typedarray-to-buffer_4.0.0-2_all.deb ... Unpacking node-typedarray-to-buffer (4.0.0-2) ... Selecting previously unselected package node-validate-npm-package-license. Preparing to unpack .../162-node-validate-npm-package-license_3.0.4-2_all.deb .. . Unpacking node-validate-npm-package-license (3.0.4-2) ... Selecting previously unselected package node-whatwg-fetch. Preparing to unpack .../163-node-whatwg-fetch_3.6.2-5_all.deb ... Unpacking node-whatwg-fetch (3.6.2-5) ... Selecting previously unselected package node-write-file-atomic. Preparing to unpack .../164-node-write-file-atomic_3.0.3+~3.0.2-1_all.deb ... Unpacking node-write-file-atomic (3.0.3+~3.0.2-1) ... Selecting previously unselected package node-abbrev. Preparing to unpack .../165-node-abbrev_1.1.1+~1.1.2-1_all.deb ... Unpacking node-abbrev (1.1.1+~1.1.2-1) ... Selecting previously unselected package node-archy. Preparing to unpack .../166-node-archy_1.0.0-4_all.deb ... Unpacking node-archy (1.0.0-4) ... Selecting previously unselected package node-chalk. Preparing to unpack .../167-node-chalk_4.1.2-1_all.deb ... Unpacking node-chalk (4.1.2-1) ... Selecting previously unselected package node-cli-table. Preparing to unpack .../168-node-cli-table_0.3.11+~cs0.13.3-1_all.deb ... Unpacking node-cli-table (0.3.11+~cs0.13.3-1) ... Selecting previously unselected package node-depd. Preparing to unpack .../169-node-depd_2.0.0-2_all.deb ... Unpacking node-depd (2.0.0-2) ... Selecting previously unselected package node-nopt. Preparing to unpack .../170-node-nopt_5.0.0-2_all.deb ... Unpacking node-nopt (5.0.0-2) ... Selecting previously unselected package node-npmlog. Preparing to unpack .../171-node-npmlog_6.0.1+~4.1.4-1_all.deb ... Unpacking node-npmlog (6.0.1+~4.1.4-1) ... Selecting previously unselected package node-tar. Preparing to unpack .../172-node-tar_6.1.11+ds1+~cs6.0.6-1_all.deb ... Unpacking node-tar (6.1.11+ds1+~cs6.0.6-1) ... Selecting previously unselected package node-which. Preparing to unpack .../173-node-which_2.0.2+~cs1.3.2-2_all.deb ... Unpacking node-which (2.0.2+~cs1.3.2-2) ... Selecting previously unselected package node-gyp. Preparing to unpack .../174-node-gyp_8.4.1-1_all.deb ... Unpacking node-gyp (8.4.1-1) ... Selecting previously unselected package node-ini. Preparing to unpack .../175-node-ini_2.0.1-1_all.deb ... Unpacking node-ini (2.0.1-1) ... Selecting previously unselected package node-negotiator. Preparing to unpack .../176-node-negotiator_0.6.2+~0.6.1-1_all.deb ... Unpacking node-negotiator (0.6.2+~0.6.1-1) ... Selecting previously unselected package node-resolve. Preparing to unpack .../177-node-resolve_1.20.0+~cs5.27.9-1_all.deb ... Unpacking node-resolve (1.20.0+~cs5.27.9-1) ... Selecting previously unselected package node-normalize-package-data. Preparing to unpack .../178-node-normalize-package-data_3.0.3+~2.4.1-1_all.deb . .. Unpacking node-normalize-package-data (3.0.3+~2.4.1-1) ... Selecting previously unselected package node-read-package-json. Preparing to unpack .../179-node-read-package-json_4.1.1-1_all.deb ... Unpacking node-read-package-json (4.1.1-1) ... Selecting previously unselected package node-tap. Preparing to unpack .../180-node-tap_12.0.1+ds-4_all.deb ... Unpacking node-tap (12.0.1+ds-4) ... Selecting previously unselected package npm. Preparing to unpack .../181-npm_8.5.1~ds-1_all.deb ... Unpacking npm (8.5.1~ds-1) ... Setting up node-delayed-stream (1.0.0-5) ... Setting up libuv1-dev:amd64 (1.43.0-1ubuntu0.1) ... Setting up node-colors (1.4.0-3) ... Setting up node-log-driver (1.2.7+git+20180219+bba1761737-7) ... Setting up node-fs.realpath (1.0.0-2) ... Setting up node-diff (5.0.0~dfsg+~5.0.1-3) ... Setting up node-object-assign (4.1.1-6) ... Setting up node-abbrev (1.1.1+~1.1.2-1) ... Setting up libjs-sprintf-js (1.1.2+ds1+~1.1.2-1) ... Setting up node-yallist (4.0.0+~4.0.1-1) ... Setting up libjs-inherits (2.0.4-4) ... Setting up node-p-cancelable (2.1.1-1) ... Setting up node-ansi-regex (5.0.1-1) ... Setting up libnode-dev (12.22.9~dfsg-1ubuntu3.4) ... Setting up node-slash (3.0.0-2) ... Setting up node-util-deprecate (1.0.2-3) ... Setting up node-retry (0.13.1+~0.12.1-1) ... Setting up node-arrify (2.0.1-2) ... Setting up node-ansistyles (0.1.3-5) ... Setting up node-delegates (1.0.0-3) ... Setting up node-depd (2.0.0-2) ... Setting up node-isexe (2.0.0+~2.0.1-4) ... Setting up node-jsonparse (1.3.1-10) ... Setting up node-escape-string-regexp (4.0.0-2) ... Setting up libjs-source-map (0.7.0++dfsg2+really.0.6.1-9) ... Setting up node-negotiator (0.6.2+~0.6.1-1) ... Setting up node-stack-utils (2.0.5+~2.0.1-1) ... Setting up node-color-name (1.1.4+~1.1.1-2) ... Setting up node-growl (1.10.5-4) ... Setting up node-json-buffer (3.0.1-1) ... Setting up node-console-control-strings (1.1.0-2) ... Setting up node-abab (2.0.5-2) ... Setting up node-indent-string (4.0.0-2) ... Setting up node-function-bind (1.1.1+repacked+~1.0.3-1) ... Setting up node-clone (2.1.2-3) ... Setting up node-p-map (4.0.0+~3.1.0+~3.0.1-1) ... Setting up node-iferr (1.0.2+~1.0.2-1) ... Setting up node-chownr (2.0.0-1) ... Setting up node-has-flag (4.0.0-2) ... Setting up node-lodash-packages (4.17.21+dfsg+~cs8.31.198.20210220-5) ... Setting up libjs-psl (1.8.0+ds-6) ... Setting up node-asap (2.0.6+~2.0.0-1) ... Setting up node-mime (3.0.0+dfsg+~cs3.96.1-1) ... Setting up node-inherits (2.0.4-4) ... Setting up node-path-is-absolute (2.0.0-2) ... Setting up node-universalify (2.0.0-3) ... Setting up node-ini (2.0.1-1) ... Setting up node-safe-buffer (5.2.1+~cs2.1.2-2) ... Setting up node-promise-inflight (1.0.1+~1.0.0-1) ... Setting up node-combined-stream (1.0.8+~1.0.3-1) ... Setting up node-json-parse-better-errors (1.0.2+~cs3.3.1-1) ... Setting up node-sprintf-js (1.1.2+ds1+~1.1.2-1) ... Setting up node-tmatch (5.0.0-4) ... Setting up node-mime-types (2.1.33-1) ... Setting up node-err-code (2.0.3+dfsg-3) ... Setting up node-balanced-match (2.0.0-1) ... Setting up node-brace-expansion (2.0.1-1) ... Setting up node-spdx-exceptions (2.3.0-2) ... Setting up node-lcov-parse (1.0.0+20170612git80d039574ed9-5) ... Setting up node-cssom (0.4.4-3) ... Setting up node-strip-ansi (6.0.1-1) ... Setting up node-set-blocking (2.0.0-2) ... Setting up node-npm-bundled (1.1.2-1) ... Setting up node-signal-exit (3.0.6+~3.0.1-1) ... Setting up node-which (2.0.2+~cs1.3.2-2) ... Setting up node-source-map (0.7.0++dfsg2+really.0.6.1-9) ... Setting up node-wrappy (1.0.2-2) ... Setting up node-text-table (0.2.0-4) ... Setting up node-asynckit (0.4.0-4) ... Setting up node-ip (1.1.5+~1.1.0-1) ... Setting up node-quick-lru (5.1.1-1) ... Setting up node-punycode (2.1.1-5) ... Setting up node-defaults (1.0.3+~1.0.3-1) ... Setting up node-mute-stream (0.0.8+~0.0.1-1) ... Setting up node-mimic-response (3.1.0-7) ... Setting up node-commander (9.0.0-2) ... Setting up node-whatwg-fetch (3.6.2-5) ... Setting up libjs-typedarray-to-buffer (4.0.0-2) ... Setting up node-graceful-fs (4.2.4+repack-1) ... Setting up node-clean-yaml-object (0.1.0-5) ... Setting up node-aproba (2.0.0-2) ... Setting up node-esprima (4.0.1+ds+~4.0.3-2) ... Setting up node-ip-regex (4.3.0+~4.1.1-1) ... Setting up node-stealthy-require (1.1.1-5) ... Setting up node-spdx-license-ids (3.0.11-1) ... Setting up node-string-decoder (1.3.0-5) ... Setting up node-time-stamp (2.2.0-1) ... Setting up libjs-events (3.3.0+~3.0.0-2) ... Setting up node-mkdirp (1.0.4+~1.0.2-1) ... Setting up node-run-queue (2.0.0-2) ... Setting up node-core-util-is (1.0.3-1) ... Setting up node-minimatch (3.1.1+~3.0.5-1) ... Setting up node-opener (1.5.2+~1.4.0-1) ... Setting up node-archy (1.0.0-4) ... Setting up node-imurmurhash (0.1.4+dfsg+~0.1.1-1) ... Setting up node-foreground-child (2.0.0-3) ... Setting up node-read (1.0.7-3) ... Setting up node-nopt (5.0.0-2) ... Setting up node-is-buffer (2.0.5-2) ... Setting up node-color-convert (2.0.1-1) ... Setting up node-webidl-conversions (7.0.0~1.1.0+~cs15.1.20180823-2) ... Setting up node-isarray (2.0.5-3) ... Setting up node-osenv (0.1.5+~0.1.0-1) ... Setting up node-is-plain-obj (3.0.0-2) ... Setting up node-ms (2.1.3+~cs0.7.31-2) ... Setting up libjs-is-typedarray (1.0.0-4) ... Setting up node-lowercase-keys (2.0.0-2) ... Setting up node-decompress-response (6.0.0-2) ... Setting up node-process-nextick-args (2.0.1-2) ... Setting up node-has-unicode (2.0.1-4) ... Setting up node-fs-write-stream-atomic (1.0.10-5) ... Setting up gyp (0.1+20210831gitd6c5dd5-5) ... Setting up node-readable-stream (3.6.0+~cs3.0.0-1) ... Setting up node-ssri (8.0.1-2) ... Setting up node-lru-cache (6.0.0+~5.1.1-1) ... Setting up node-promise-retry (2.0.1-2) ... Setting up node-supports-color (8.1.1+~8.1.1-1) ... Setting up node-once (1.4.0-4) ... Setting up node-psl (1.8.0+ds-6) ... Setting up node-resolve (1.20.0+~cs5.27.9-1) ... Setting up node-are-we-there-yet (3.0.0+~1.1.0-1) ... Setting up node-kind-of (6.0.3+dfsg-2) ... Setting up node-debug (4.3.2+~cs4.1.7-1) ... Setting up node-events (3.3.0+~3.0.0-2) ... Setting up node-minimist (1.2.5+~cs5.3.2-1) ... Setting up node-argparse (2.0.1-2) ... Setting up node-fancy-log (1.3.3+~cs1.3.1-2) ... Setting up node-promzard (0.3.0-2) ... Setting up node-wcwidth.js (1.0.2-1) ... Setting up node-cssstyle (2.3.0-2) ... Setting up node-source-map-support (0.5.21+ds+~0.5.4-1) ... Setting up node-iconv-lite (0.6.3-2) ... Setting up node-unique-filename (1.1.1+ds-1) ... Setting up node-ansi-styles (4.3.0+~4.2.0-1) ... Setting up node-form-data (3.0.1-1) ... Setting up node-chalk (4.1.2-1) ... Setting up node-spdx-expression-parse (3.0.1+~3.0.1-1) ... Setting up node-is-typedarray (1.0.0-4) ... Setting up node-inflight (1.0.6-2) ... Setting up node-hosted-git-info (4.0.2-1) ... Setting up node-tough-cookie (4.0.0-2) ... Setting up node-encoding (0.1.13-2) ... Setting up node-js-yaml (4.1.0+dfsg+~4.0.5-6) ... Setting up node-slice-ansi (5.0.0+~cs9.0.0-4) ... Setting up node-string-width (4.2.3+~cs13.2.3-1) ... Setting up node-semver (7.3.5+~7.3.8-1) ... Setting up node-builtins (4.0.0-1) ... Setting up node-end-of-stream (1.4.4+~1.4.1-1) ... Setting up node-pump (3.0.0-5) ... Setting up node-columnify (1.5.4+~1.5.1-1) ... Setting up node-agent-base (6.0.2+~cs5.4.2-1) ... Setting up node-validate-npm-package-name (3.0.0-4) ... Setting up node-spdx-correct (3.1.1-2) ... Setting up node-glob (7.2.1+~cs7.6.15-1) ... Setting up node-get-stream (6.0.1-1) ... Setting up node-got (11.8.3+~cs58.7.37-1) ... Setting up node-typedarray-to-buffer (4.0.0-2) ... Setting up node-cli-table (0.3.11+~cs0.13.3-1) ... Setting up node-tap-parser (7.0.0+ds1-6) ... Setting up node-minipass (3.1.6+~cs8.7.18-1) ... Setting up node-wide-align (1.1.3-4) ... Setting up node-npm-package-arg (8.1.5-1) ... Setting up node-https-proxy-agent (5.0.0+~cs8.0.0-3) ... Setting up node-rimraf (3.0.2-1) ... Setting up node-validate-npm-package-license (3.0.4-2) ... Setting up node-write-file-atomic (3.0.3+~3.0.2-1) ... Setting up node-copy-concurrently (1.0.5-8) ... Setting up node-move-concurrently (1.0.1-4) ... Setting up node-gauge (4.0.2-1) ... Setting up node-tap-mocha-reporter (3.0.7+ds-2) ... Setting up node-normalize-package-data (3.0.3+~2.4.1-1) ... Setting up node-ws (8.5.0+~cs13.3.3-2) ... Setting up node-jsdom (19.0.0+~cs90.11.27-1) ... Setting up node-tar (6.1.11+ds1+~cs6.0.6-1) ... Setting up node-tap (12.0.1+ds-4) ... Setting up node-npmlog (6.0.1+~4.1.4-1) ... Setting up node-cacache (15.0.5+~cs13.9.21-3) ... Setting up node-read-package-json (4.1.1-1) ... Setting up node-fetch (2.6.7+~2.5.12-1) ... Setting up node-gyp (8.4.1-1) ... Setting up npm (8.5.1~ds-1) ... Setting up node-coveralls (3.1.1-1) ... Processing triggers for man-db (2.10.2-1) ... |
You can check the Node.js version with this command:
npm -v |
8.5.1 |
As always, I hope this helps those looking for concise and complete free answer.
MongoDB on macOS
It’s important to document things before I ask my students to do them. This walks through a native installation of MongoDB on the macOS. At least, it does when you’ve already installed Xcode. If you installed Xcode sometime ago, you should update it otherwise you may get an installation error like the following:
==> Installing mongodb-community from mongodb/brew Error: Your Xcode (11.1) is too outdated. Please update to Xcode 13.1 (or delete it). Xcode can be updated from the App Store. |
The core MongoDB installation document is in the MongoDB 5.0 installation manual. The following is a step-by-step set of instructions for those new to installing something like MongoDB without using the macOS standard package management software.
- The first step requires you install Home Brew, as qualified by the Home Brew Installation page. Before you can install Home Brew, you need to install Xcode on your macOS. After installing Xcode, you need to launch a Terminal session on your macOS and run the following command from the macOS command-line interface (CLI):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
After the installation, which may take several minutes, you should see this final message on the console:
==> Next steps: - Run brew help to get started - Further documentation: https://docs.brew.sh
- Now that Home Brew is installed, the next step requires you to update the Homebrew formulat for MongoDB. You use the following command to do that for MongoDB 5:
brew tap mongodb/brew
You should see something like the following on your console when you update the Homebrew formula:
Running `brew update --preinstall`... ==> Homebrew is run entirely by unpaid volunteers. Please consider donating: https://github.com/Homebrew/brew#donations ==> Auto-updated Homebrew! Updated 1 tap (homebrew/core). ==> Updated Formulae Updated 5 formulae. ==> Tapping mongodb/brew Cloning into '/usr/local/Homebrew/Library/Taps/mongodb/homebrew-brew'... remote: Enumerating objects: 825, done. remote: Counting objects: 100% (322/322), done. remote: Compressing objects: 100% (236/236), done. remote: Total 825 (delta 165), reused 140 (delta 83), pack-reused 503 Receiving objects: 100% (825/825), 180.91 KiB | 0 bytes/s, done. Resolving deltas: 100% (403/403), done. Tapped 14 formulae (30 files, 246.8KB).
- Assuming your Xcode is curent, you now install MongoDB with the necessary supporting packages:
brew install mongodb-community@5.0
You should see something like the following on your console after you install MongoDB 5:
==> Summary /usr/local/Cellar/mongodb-community/5.0.5: 11 files, 181.5MB, built in 6 seconds ==> Running `brew cleanup mongodb-community`... Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`). ==> Caveats ==> mongodb-community To start mongodb/brew/mongodb-community now and restart at login: brew services start mongodb/brew/mongodb-community Or, if you don't want/need a background service you can just run: mongod --config /usr/local/etc/mongod.conf
- MongoDB really requires a background service, so I suggest you use the following to create the service:
brew services start mongodb/brew/mongodb-community
You should see something like the following on your console after you install MongoDB 5:
==> Successfully started `mongodb-community` (label: homebrew.mxcl.mongodb-community)
The installation gave you three key binaries:
- The MongoDB Server Daemon – mongod
- The MongoDB sharded cluster query router – mongos
- The MongoDB Shell – mongosh
The installation also creates configuration, data, and log files based on physical CPU-Chip hardware:
- Intel Processor
- Configuration File: /usr/local/etc/mongodb.conf
- Log Directory: /usr/local/var/log/mongodb
- Data Directory: /usr/local/var/mongodb
- Apple M1 Processor
- Configuration File: /opt/homebrew/etc/mongodb.conf
- Log Directory: /opt/homebrew/var/log/mongodb
- Data Directory: /opt/homebrew/var/mongodb
- You can now start the MongoDB Shell with the following command in a Terminal window:
mongosh
You should see the following when you connect to the MongoDB Shell
Current Mongosh Log ID: 61e4e2c98f023c2b5fc5a905 Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000 Using MongoDB: 5.0.5 Using Mongosh: 1.1.8 For mongosh info see: https://docs.mongodb.com/mongodb-shell/ To help improve our products, anonymous usage data is collected and sent to MongoDB periodically (https://www.mongodb.com/legal/privacy-policy). You can opt-out by running the disableTelemetry() command. ------ The server generated these startup warnings when booting: 2022-01-16T20:26:18.320-07:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted ------ test>
As always, I hope the instructions are helpful and clear. If you find an issue let em know about it.
Fun JavaScript Q?
I got sent a fun JavaScript question from a student. It was fun for two reasons. They were clearly engaged and trying to figure stuff out on their own and they were just beyond basic syntax issues.
The student wanted to know why this code worked:
// Populate an object with one property. var notempty = {test:"me"} // Test for and enumerate object properties. for (var property in notempty) { if (!notempty.hasOwnProperty(property)) { print("No properties") } else { print("[" + property + "]") } } print("done") |
and returned:
[test] done |
but the behavior changed when the initialized object didn’t have any properties. It failed to print the No properties message:
// Populate an object with one property. var empty = {} // Test for and enumerate object properties. for (var property in empty) { if (!empty.hasOwnProperty(property)) { print("No properties") } else { print("[" + property + "]") } } print("done") |
it printed:
done |
The answer was easy, there were no properties to enumerate, which meant the loop never executes. However, that’s only part of the answer. The complete answer is that the empty object and the default Object.prototype
have no properties to enumerate. You should perform a different test before the loop, like:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | // Populate an object without properties. var empty = {} // Test for and enumerate object properties. if (Object.keys(empty).length !== 0) { for (var property in empty) { if (empty.hasOwnProperty(property)) { print("[" + property + "]") } } } else { print("No properties") } // Print complete message. print("done") |
If you run this from the mongo shell, like this
mongo --nodb --norc < object_properties.js |
It prints:
MongoDB shell version v4.0.19 No properties done bye |
If you run this inside the mongo shell with the load
function, like
load("object_properties.js") |
It prints:
No properties done true |
However, you can generate a parsing error when you rewrite line 11 in the if-else statement, like so
if (Object.keys(empty).length !== 0) { ... } else { ... } |
The reason for the error is that JavaScript appends a semicolon (;) at the end of each line. Therefore, the if-else-statement appears as an if-only-statement. which raises the syntax error.
It prints:
MongoDB shell version v4.0.19 2021-08-02T13:38:34.672-0600 E QUERY [js] SyntaxError: expected expression, got keyword 'else' @(shell):1:0 done bye |
It appears the parsing error is a warning message because the code completes. Personally, I would prefer that they not raise a warning message because it actually implies a style preference.
There’s a next level problem you may run into while trying to implement reflection, or the discovery of existing properties and their value types, of JavaScript objects. Here’s that code, which seems to be missing from many tutorials and articles:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | // Create an object with functions. // Populate an object without properties. var notEmpty = { first_name: "Clark" , last_name: "Kent" , getName: function() { return this.first_name + " " + this.last_name } } // Test for and enumerate object properties. if (Object.keys(notEmpty).length !== 0) { for (var property in notEmpty) { if (notEmpty.hasOwnProperty(property)) { print("[" + property + "] value is a [" + typeof(notEmpty[property]) + "]") } } } else { print("No properties") } print("done") |
This code on line 12 lets you view a property’s value type:
1 | typeof(notEmpty[property]) |
Only the object[property]
subscript notation method works when the property’s value is a variable. The other dot notation syntax to access a property’s value in JavaScript, object.property
, doesn’t work without a literal value. Actually, it would work if you embed it inside an eval() function call, but the eval() function is bad juju (black magic) in JavaScript coding.
It prints the following:
MongoDB shell version v4.0.19 [first_name] value is a [string] [last_name] value is a [string] [getName] value is a [function] done bye |
While this shows the basic functionality, it would be more effective to create a function and extend it while adding some output formatting. The next example wouldn’t be found in a JSON (JavaScript Object Notation) collection element but would be found in a NodeJS application managing JSON structures. You would define the constructor to match the data properties of the JSON structure.
The nice thing about a JavaScript function is that “It can specify a list of parameters that will act as variables initialized by the invocation arguments. The body of the function includes variable definitions and statement. (JavaScript: The Good Parts, 2008)” Newer approaches allow you to pass an object as a parameter with named notation inside the object.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | // Create an object with functions. function Person(first_name, last_name) { this.first_name = first_name , this.last_name = last_name , this.setFirstName = function(first_name) { this.first_name = first_name } , this.getName = function() { return this.first_name + " " + this.last_name } } // Create an instance of a variable and print results. var myPerson = new Person("Clark","Kent") print("Initial Name: " + myPerson.getName()) // Call the added function and print the new value. myPerson.setFirstName("Lois") print("Reset Name: " + myPerson.getName()) print() // Test for and enumerate object properties. print("Variable Property Names & Values") print("====================================") if (Object.keys(myPerson).length !== 0) { for (var property in myPerson) { if (myPerson.hasOwnProperty(property)) { print("[" + property + "] value is a [" + typeof(myPerson[property]) + "]") } } } else { print("No properties") } print("====================================") print("done") |
It prints the following:
MongoDB shell version v4.0.19 Initial Name: Clark Kent Reset Name: Lois Kent Variable Property Names & Values ==================================== [first_name] value is a [string] [last_name] value is a [string] [setFirstName] value is a [function] [getName] value is a [function] ==================================== done bye |
While the prior example shows object construction, this one introduces one variable inheriting the Person function’s properties and another inheriting the same properties before adding a new one to only the variable. The inherited properties, which are functions, are methods of the variable by delegation.
Below is the modified code. It changes the variable from myPerson to myPerson1 and lines 22 through 28 add the new myPerson2 variable and setLastName function. Lines 47 to 58 enumerate across the new second variable, myPerson2 to show you that it has a new setLastName function.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | // Create an object with functions. function Person(first_name, last_name) { this.first_name = first_name , this.last_name = last_name , this.setFirstName = function(first_name) { this.first_name = first_name } , this.getName = function() { return this.first_name + " " + this.last_name } } // Create an instance of a variable and print results. var myPerson1 = new Person("Clark","Kent") print("Initial Name: " + myPerson1.getName()) // Call the added function and print the new value. myPerson1.setFirstName("Lois") print("Reset Name: " + myPerson1.getName()) print() // Create an instance of a variable and print results. var myPerson2 = new Person("Bruce","Wayne") print("Initial Name: " + myPerson2.getName()) // Add a function to the local variable. function setLastName(last_name) { this.last_name = last_name } myPerson2.setLastName = setLastName print() // Test for and enumerate object properties. print("Variable Property Names & Values") print("====================================") if (Object.keys(myPerson1).length !== 0) { for (var property in myPerson1) { if (myPerson1.hasOwnProperty(property)) { print("[" + property + "] value is a [" + typeof(myPerson1[property]) + "]") } } } else { print("No properties") } print("====================================") print() // Test for and enumerate object properties. print("Variable Property Names & Values") print("====================================") if (Object.keys(myPerson2).length !== 0) { for (var property in myPerson2) { if (myPerson2.hasOwnProperty(property)) { print("[" + property + "] value is a [" + typeof(myPerson2[property]) + "]") } } } else { print("No properties") } print("====================================") print("done") |
The program shows you the following output:
MongoDB shell version v4.0.19 Initial Name: Clark Kent Reset Name: Lois Kent Initial Name: Bruce Wayne Variable Property Names & Values ==================================== [first_name] value is a [string] [last_name] value is a [string] [setFirstName] value is a [function] [getName] value is a [function] ==================================== Variable Property Names & Values ==================================== [first_name] value is a [string] [last_name] value is a [string] [setFirstName] value is a [function] [getName] value is a [function] [setLastName] value is a [function] ==================================== done bye |
As always, I hope this helps those working through a similar issue.
Mongo List Databases
After you install MongoDB on your Linux system, you can connect without a user name or password and discover version and many other details about the installation, as shown in this prior post.
You can use the db.adminCommand()
to understand the existing databases, as qualified in the online documentation. The basic syntax to list all databases is:
db.adminCommand( {listDatabases:1} ) |
In a generic Linux installation you should see something like the following:
{ "databases" : [ { "name" : "admin", "sizeOnDisk" : 32768, "empty" : false }, { "name" : "config", "sizeOnDisk" : 73728, "empty" : false }, { "name" : "local", "sizeOnDisk" : 90112, "empty" : false }, { "name" : "test", "sizeOnDisk" : 49152, "empty" : false } ], "totalSize" : 245760, "ok" : 1 } |
You can filter for a test database and find only your authorization to use the test database with the following command:
db.adminCommand( {listDatabases:1, filter: {"name": /test/}, authorizedDatabases: true} ) |
It returns:
{ "databases" : [ { "name" : "test", "sizeOnDisk" : 49152, "empty" : false } ], "totalSize" : 49152, "ok" : 1 } |
If you just want the names of your authorized databases, use this syntax:
db.adminCommand( {listDatabases:1, nameOnly: true, authorizedDatabases: true} ) |
It should return:
{ "databases" : [ { "name" : "admin" }, { "name" : "config" }, { "name" : "local" }, { "name" : "test" } ], "ok" : 1 } |
As always, I hope this helps those trying to sort through the official documentation and learn how to do things.
MongoDB Duplicate Key
How do you avoid encountering a “duplicate key on update” in MongoDB? Well, that’s an interesting question if you’re coming at it from a relational perspective. The answer is understanding that while there may be a natural key, the update needs to use the unique identifier (or, _id
). The unique identifier is essentially a primary key based on a system generated surrogate key, assigned by the insertOne()
or insertMany()
methods. As you’ll notice in the example, it’s not just a numeric value.
The following builds you a test case and is designed to run from the interactive mongo shell. It assumes you understand enough JavaScript to read the code dealing with the JSON (JavaScript Object Notation) structure.
- Insert three rows in a
people
collection with theinsertMany()
method:> db.people.insertMany([ ... {"name" : "joe", "age" : 65} ... ,{"name" : "joe", "age" : 20} ... ,{"name" : "joe", "age" : 49}])
it returns the following unique identifiers:
{ "acknowledged" : true, "insertedIds" : [ ObjectId("60a4a67f8d03d82365e994ab"), ObjectId("60a4a67f8d03d82365e994ac"), ObjectId("60a4a67f8d03d82365e994ad") ] }
- Assign the return value from a
findOne()
method against thepeople
collection to ajoe
variable:> joe = db.people.findOne({"name" : "joe", "age" : 20})
Typically, you can print local variables in the
mongo
shell with theprint
command, like:print(joe)
it returns the following:
[object BSON]
The object is a Binary JSON object, which requires you use the following command:
printjson(joe)
It prints the following JSON element:
{ "_id" : ObjectId("60a4a67f8d03d82365e994ac"), "name" : "joe", "age" : 20 }
- Increment the age value from 20 to 21:
> joe.age++
You can show the change in the age member’s value by printing the JSON element with the
printjson()
function:{ "_id" : ObjectId("60a4a67f8d03d82365e994ac"), "name" : "joe", "age" : 21 }
- If you attempt to replace the JSON structure in the MongoDB collection with anything other than the following, you’ll raise a duplicate key error. You must reference the
_id
value to update the correct element of the collection. The following syntax works:db.people.replaceOne({"_id" : joe._id}, joe)
it should return the following:
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
You can verify that the change only affected the originally queried row with the following command:
db.people.find()
it should return the following:
{ "_id" : ObjectId("60a4a67f8d03d82365e994ab"), "name" : "joe", "age" : 65 } { "_id" : ObjectId("60a4a67f8d03d82365e994ac"), "name" : "joe", "age" : 21 } { "_id" : ObjectId("60a4a67f8d03d82365e994ad"), "name" : "joe", "age" : 49 }
I thought this example may help others because the O’Reily’s MongoDB: The Definitive Guide example (on pages 35-37) uses a manually typed string, which doesn’t lend itself to a programmatic solutions. It also failed to clarify that value returned from the findOne()
method and assigned to the local joe
variable would be a BSON (Binary JSON) object; and it didn’t cover any means to easily convert the BSON to a JSON text. The reality is there’s no necessity to cast the BSON into a JSON object, also left out of the text. All that said, it’s still an excellent, if not essential, book for your technical library if you’re working with the MongoDB database.
MongoDB Two Step
Sometimes a bit of humor helps with a new topic. Creating a database in MongoDB is a two-step process, like the Texas Two-Step (a nick name for a country/western two-step danced in common time). A Texas Two Step is a one-two, one-two shuffle which is like the two-step process for how you create a MongoDB database.
While databases in MongoDB are a multiuser sandbox like a relational database, you can’t simply create them and grant them privileges. You must first USE the database and then put a collection (a.k.a., equivalent to a table in MySQL) in it. This blog post shows you how to create a MongoDB play database with an actor collection. It shows you the commands to create the a database with one collection in it and how to verify its existence.
You connect through the mongo shell, like:
mongo |
The first-step requires you to connect to the play
database even though it doesn’t exist. You do that by typing:
> use play |
You can verify you’re in the play
database by typing the db
command, which the mongo
shell treats as an expression. It returns play
, as the name of the current database.
However, when you call the shell show dbs
helper:
> show dbs |
It displays:
admin 0.000GB config 0.000GB local 0.000GB |
You also should note that the play
database still doesn’t exist when you run the JavaScript equivalent to the shell show dbs
helper:
> db.getMongo().getDBs() |
It returns the following list of databases, which excludes the as yet not created play
database:
{ "databases" : [ { "name" : "admin", "sizeOnDisk" : 32768, "empty" : false }, { "name" : "config", "sizeOnDisk" : 61440, "empty" : false }, { "name" : "local", "sizeOnDisk" : 81920, "empty" : false } ], "totalSize" : 176128, "ok" : 1 } |
You create an actor
collection (a.k.a. the equivalent of a relational table) with the following syntax, where db
maps to the play
database that you’re using. Note that you must create or insert one document to begin a document collection. While you can use the insert
method, you should use either the newer insertOne()
or insertMany()
methods.
> db.actors.insertOne({"actor" : {"first_name" : "Chris", "last_name" : "Pine"}, "age" : 40 }) |
A new call to the shell show dbs
helper:
> show dbs |
displays your new play
database:
admin 0.000GB config 0.000GB local 0.000GB play 0.000GB |
You can add two more documents (a.k.a. for rows in a relational database) with the insertMany()
method:
> db.actors.insertMany([{"actor" : {"first_name" : "Chris", "last_name" : "Evans"}, "age" : 39 } ,{"actor" : {"first_name" : "Chris", "last_name" : "Pratt"}, "age" : 41 }]) |
A quick word to the JavaScript novices out there. Don’t forget the square brackets ([{},{},...]
) in the insertMany()
method call or you’ll get an error like this:
2021-04-12T16:20:13.237-0600 E QUERY [js] TypeError: documents.map is not a function : DBCollection.prototype.insertMany@src/mongo/shell/crud_api.js:295:1 @(shell):1:1 |
You call the shell show collections
helper or db.getMongo().getCollectionNames()
JavaScript function to display the collections in the play database. The show collections
displays a list of collections, and the db.getMongo().getCollectionNames()
displays an JavaScript array of collections.
If you’re like me, Mongo’s db convention is a bit risky that I could do something in the wrong database. So, I put the following function into my .mongorc.js (a.k.a., MongoDB Resource file):
prompt = function() { var dbName = db; return dbName + "> " } |
It ensures you will see the current database name to the left of the prompt (“>”), like:
play> |
You can query the documents from the actors
collection with the following:
play> db.actors.find().pretty() |
It returns:
{ "_id" : ObjectId("6074c692813c5a85db9cc9df"), "actor" : { "first_name" : "Chris", "last_name" : "Pine" }, "age" : 40 } { "_id" : ObjectId("6074c7ea813c5a85db9cc9e0"), "actor" : { "first_name" : "Chris", "last_name" : "Evans" }, "age" : 39 } { "_id" : ObjectId("6074c7ea813c5a85db9cc9e1"), "actor" : { "first_name" : "Chris", "last_name" : "Pratt" }, "age" : 41 } |
As always, I hope this helps those looking for a solution.
MongoDB Script Test
There are many ways to test and edit files. A lot of developers only use their favorite Integrated Developer Environment (IDE) but I find testing script files within the scope of a pipelined set of scripts much faster.
The ability to edit a JavaScript file from within the mongo
Shell would be nice but unfortunately, it doesn’t exist. You are able to edit a complex variable with a mechanism quite like the Oracle Database. Rather than leave you hanging on how to edit a complex variable in the mongo
shell, here are the steps before launching into how to test your JavaScript files:
- You can enter this manually during any connection to the
mongo
shell or put it in your.mongorc.js
configuration file, like this in Fedora with the fully qualified filename:EDITOR="/usr/bin/vim"
- Let’s say you have a
stooges
array variable that contains “Moe”, “Curly”, and “Larry” and you want to add “Shemp” to the variable. You can edit thestooges
array variable withvi
and add “Shemp” to it by typing edit and the stooges variable name.edit stooges
- Then, you can test the
stooges
array variable’s new values:stooges
- It returns the following:
[ "Moe", "Curly", "Shemp", "Larry" ]
Unfortunately, these changes to the demo array variable will be lost after you break the connection. While it does afford a quick test case, you should make the changes in the external JavaScript file. Then, the change is there the the next time you access the resource file.
Here’s my quick edit and test script technique for MongoDB from your present working directory:
- Assume you create a
compliment.js
test file, like:/* Declare an array variable and random index value. */ var compliment = ["Bashful","Doc","Dopey","Grumpy","Happy","Sleepy","Sneezy"] var index = Math.floor(Math.random()*7) /* Print a welcome message. */ print("Hello, " + compliment[index] + ".")
- You can edit the
compliment.js
file withvi
and test the script interactively from the present working directory.- You can edit the file with the following syntax:
vi compliment.js
-
then, you can test the
task.sql
file:mongo --nodb --norc < compliment.js
- The
--nodb
option instructs MongoDB to not connect to a database and the--norc
option instructs MongoDB to not load your.mongorc.js
file. Effectively, disabling the database connection and loading of the MongoDB resource file (.mongorc.js) lets you test your code in MongoDB’s Javascript shell unencumbered by any overhead from the MongoDB server.The foregoing script returns the following:
MongoDB shell version v4.0.19 Hello, Sneezy. bye
- If you have the desired outcome, you’re done. However, if you need further change you repeat the process.
- You can edit the file with the following syntax:
As always, I hope this helps those looking for a quick way to accomplish a task.
MongoDB on Fedora 30
I found that MongoDB instructions changed significantly from a year ago. More or less, there was no pre-configured yum
repository. Fortunately, the following web page was very helpful though not specific about Fedora.
Installing MongoDB 4.0 on Fedora 30 requires updating the yum
repository. You need to create the mongodb.repo
file as the root
user in the /etc/yum.repos.d
directory. The mongodb.repo
file should contain the following:
[Mongodb] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/4.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc |
After you create the appropriate mongodb.repo
file, you can run the following command to install the MongoDB database.
def install mongodb-org |
It will produce the following log:
MongoDB Repository 31 kB/s | 21 kB 00:00 Dependencies resolved. ============================================================================= Package Arch Version Repository Size ============================================================================= Installing: mongodb-org x86_64 4.0.12-1.amzn1 Mongodb 5.8 k Installing dependencies: mongodb-org-mongos x86_64 4.0.12-1.amzn1 Mongodb 11 M mongodb-org-server x86_64 4.0.12-1.amzn1 Mongodb 20 M mongodb-org-shell x86_64 4.0.12-1.amzn1 Mongodb 13 M mongodb-org-tools x86_64 4.0.12-1.amzn1 Mongodb 29 M Transaction Summary ============================================================================= Install 5 Packages Total download size: 73 M Installed size: 213 M Is this ok [y/N]: y Downloading Packages: (1/5): mongodb-org-4.0.12-1.amzn1.x86_64.rpm 18 kB/s | 5.8 kB 00:00 (2/5): mongodb-org-shell-4.0.12-1.amzn1.x86_ 4.6 MB/s | 13 MB 00:02 (3/5): mongodb-org-mongos-4.0.12-1.amzn1.x86 1.8 MB/s | 11 MB 00:06 (4/5): mongodb-org-tools-4.0.12-1.amzn1.x86_ 6.6 MB/s | 29 MB 00:04 (5/5): mongodb-org-server-4.0.12-1.amzn1.x86 2.5 MB/s | 20 MB 00:08 ----------------------------------------------------------------------------- Total 9.0 MB/s | 73 MB 00:08 warning: /var/cache/dnf/Mongodb-f722cd88d61a4e38/packages/mongodb-org-4.0.12-1.amzn1.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID e52529d4: NOKEY MongoDB Repository 3.0 kB/s | 1.7 kB 00:00 Importing GPG key 0xE52529D4: Userid : "MongoDB 4.0 Release Signing Key <packaging@mongodb.com>" Fingerprint: 9DA3 1620 334B D75D 9DCB 49F3 6881 8C72 E525 29D4 From : https://www.mongodb.org/static/pgp/server-4.0.asc Is this ok [y/N]: y Key imported successfully Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : mongodb-org-tools-4.0.12-1.amzn1.x86_64 1/5 Installing : mongodb-org-shell-4.0.12-1.amzn1.x86_64 2/5 Running scriptlet: mongodb-org-server-4.0.12-1.amzn1.x86_64 3/5 Installing : mongodb-org-server-4.0.12-1.amzn1.x86_64 3/5 Running scriptlet: mongodb-org-server-4.0.12-1.amzn1.x86_64 3/5 Installing : mongodb-org-mongos-4.0.12-1.amzn1.x86_64 4/5 Installing : mongodb-org-4.0.12-1.amzn1.x86_64 5/5 Running scriptlet: mongodb-org-4.0.12-1.amzn1.x86_64 5/5 Verifying : mongodb-org-4.0.12-1.amzn1.x86_64 1/5 Verifying : mongodb-org-mongos-4.0.12-1.amzn1.x86_64 2/5 Verifying : mongodb-org-server-4.0.12-1.amzn1.x86_64 3/5 Verifying : mongodb-org-shell-4.0.12-1.amzn1.x86_64 4/5 Verifying : mongodb-org-tools-4.0.12-1.amzn1.x86_64 5/5 Installed: mongodb-org-4.0.12-1.amzn1.x86_64 mongodb-org-mongos-4.0.12-1.amzn1.x86_64 mongodb-org-server-4.0.12-1.amzn1.x86_64 mongodb-org-shell-4.0.12-1.amzn1.x86_64 mongodb-org-tools-4.0.12-1.amzn1.x86_64 Complete! |
You create a MongoDB service with the following syntax as a privileged user in the sudoer
list:
sudo systemctl enable mongodb.service |
You can then start the mongod
service with the following command as a privileged user in the sudoer
list:
sudo systemctl start mongod.service |
You confirm that it started with the following command as the same privileged user:
sudo service mongod status |
It should produce a log file like this:
● mongod.service - SYSV: Mongo is a scalable, document-oriented database. Loaded: loaded (/etc/rc.d/init.d/mongod; generated) Active: active (running) since Fri 2019-08-16 14:57:22 MDT; 2min 57s ago Docs: man:systemd-sysv-generator(8) Process: 128115 ExecStart=/etc/rc.d/init.d/mongod start (code=exited, stat> Tasks: 27 (limit: 4661) Memory: 47.0M CGroup: /system.slice/mongod.service └─128131 /usr/bin/mongod -f /etc/mongod.conf Aug 16 14:57:21 localhost.localdomain systemd[1]: Starting SYSV: Mongo is a > Aug 16 14:57:21 localhost.localdomain runuser[128127]: pam_unix(runuser:sess> Aug 16 14:57:22 localhost.localdomain runuser[128127]: pam_unix(runuser:sess> Aug 16 14:57:22 localhost.localdomain mongod[128115]: [30B blob data] Aug 16 14:57:22 localhost.localdomain systemd[1]: Started SYSV: Mongo is a s> lines 1-15/15 (END) |
You close the service log with a “q
“. You can determine your version with the following command:
mongod --version |
It should show you something like this:
db version v4.0.12 git version: 5776e3cbf9e7afe86e6b29e22520ffb6766e95d4 OpenSSL version: OpenSSL 1.0.0-fips 29 Mar 2010 allocator: tcmalloc modules: none build environment: distmod: amazon distarch: x86_64 target_arch: x86_64 |
You can connect to the MongoDB shell with the following command:
mongo |
Inside the MongoDB shell, you can run standard MongoDB commands, like:
> use mydb; switched to db mydb > db.version() 4.0.12 > db.stats() { "db" : "mydb", "collections" : 0, "views" : 0, "objects" : 0, "avgObjSize" : 0, "dataSize" : 0, "storageSize" : 0, "numExtents" : 0, "indexes" : 0, "indexSize" : 0, "fileSize" : 0, "fsUsedSize" : 0, "fsTotalSize" : 0, "ok" : 1 } > quit() |
As always, I hope this helps those looking for the missing steps.
Ruby GEM Mongo
While trying to use the Ruby gem
utility to install the MongoDB gem, I encountered an error on a new Fedora 27 instance. This is the error message:
Fetching: bson-4.3.0.gem (100%) Building native extensions. This could take a while... ERROR: Error installing mongo: ERROR: Failed to build gem native extension. current directory: /usr/local/share/gems/gems/bson-4.3.0/ext/bson /usr/bin/ruby -r ./siteconf20180517-49401-1htl7zc.rb extconf.rb mkmf.rb can't find header files for ruby at /usr/share/include/ruby.h extconf failed, exit code 1 Gem files will remain installed in /usr/local/share/gems/gems/bson-4.3.0 for inspection. Results logged to /usr/local/lib64/gems/ruby/bson-4.3.0/gem_make.out [student@localhost ~]$ ruby --version ruby 2.4.3p205 (2017-12-14 revision 61247) [x86_64-linux] |
There wasn’t much on the error but I checked the Ruby installation and ruby-devel
package wasn’t installed by default. That’s odd since I choose to install the development components on the workstation.
Not a problem, I simply ran the yum utility as root
through a sudoer user to install the ruby-devel package:
yum install -y ruby-devel |
You should see a successful installation log like:
Display ruby-devel
Package Log File →
Last metadata expiration check: 2:44:39 ago on Thu 17 May 2018 11:01:10 AM MDT. Dependencies resolved. ================================================================================================ Package Arch Version Repository Size ================================================================================================ Installing: ruby-devel x86_64 2.4.3-87.fc27 updates 119 k Transaction Summary ================================================================================================ Install 1 Package Total download size: 119 k Installed size: 283 k Downloading Packages: ruby-devel-2.4.3-87.fc27.x86_64.rpm 269 kB/s | 119 kB 00:00 ------------------------------------------------------------------------------------------------ Total 118 kB/s | 119 kB 00:01 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : ruby-devel-2.4.3-87.fc27.x86_64 1/1 Verifying : ruby-devel-2.4.3-87.fc27.x86_64 1/1 Installed: ruby-devel.x86_64 2.4.3-87.fc27 Complete! |
As I suspected, it fixed the problem immediately when I ran gem
utility to install the mongo
gem. The syntax to install the mongo
gem is:
gem install mongo |
The console output should be:
Building native extensions. This could take a while... Successfully installed bson-4.3.0 Fetching: mongo-2.5.3.gem (100%) Successfully installed mongo-2.5.3 Parsing documentation for bson-4.3.0 Installing ri documentation for bson-4.3.0 Parsing documentation for mongo-2.5.3 Installing ri documentation for mongo-2.5.3 Done installing documentation for bson, mongo after 3 seconds 2 gems installed |
You can now write and run a Ruby test MongoDB connection program. Here’s a basic MongoDBTest.rb
Ruby file:
#!/usr/bin/ruby # Require libraries. require 'rubygems' require 'mongo' # Create a new connection to MongoDB. $client = Mongo::Client.new(['localhost']) puts 'Connected to MongoDB' puts '====================' puts 'Database Names:' puts '---------------' $client.database_names.each{|name| puts name} |
After you create the MongoDBTest.rb
file, you need to change its permissions with the chmod
utility as follows:
chmod 755 MongoDBTest.rb |
Then, you can run it as follows from the directory where you created the file:
./MongoDBTest.rb |
Unless you’ve added something to the base MongoDB instance, it should print:
Connected to MongoDB ==================== Database Names: --------------- admin local |
As always, I hope this helps somebody looking for a straightforward example and solution.
MongoDB on Fedora 27
I was very pleased to see MongoDB 3.4 in the repo for Fedora 27; however, I was quite frankly severely disappointed by the lack of concrete installation steps in the MongoDB in Action, Second Edition. The installation is straightforward as long as you remember that you don’t simply install a mongodb
package. You need to install the mongodb
and mongodb-server
packages as well as some dependents.
As the root
user, you can use yum
to install them like this:
yum install -y mongo* |
After installing the correct packages, you can start the MongoDB Daemon as a service using the root
account or a sudoer account (if you get warning messages, you need to create a mongod file):
service mongod start |
Finally, you can connect to the MongoDB client, like so:
mongo |
Inside the mongo shell, you can check the MongoDB version with the following command:
db.version() |
It should print:
3.4.11 |
Or, you can check the statistics of a new empty instance:
db.stats() |
A fresh installation of MongoDB 3.4.11 on Fedora 27 should return:
{ "db" : "test", "collections" : 0, "views" : 0, "objects" : 0, "avgObjSize" : 0, "dataSize" : 0, "storageSize" : 0, "numExtents" : 0, "indexes" : 0, "indexSize" : 0, "fileSize" : 0, "ok" : 1 } |
You can insert data into MongoDB by creating a database, which is simply a file. You use an existing database or file by using the use
command. If the database or file doesn’t exist already, the use
command creates the database.
use videodb |
You can create a collection or table with the insert function. The following creates an item
collection and adds two JSON objects to the item
collection.
db.item.insert({item:"Star Wars: A New Hope"}) |
It returns:
WriteResult({ "nInserted" : 1 }) |
You can create or add to an item
collection or table with the same insert function call. You simply enclose the list of collection elements in the square brackets of a JavaScript array or list. The following inserts the second and third Star Wars films:
db.item.insert([{item:"Star Wars: The Empire Strikes Back"},{item:"Star Wars: Return of the Jedi"}]) |
It returns:
BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 2, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] |
You can query the collection with the find function, like:
db.item.find() |
It returns:
{ "_id" : ObjectId("5b02732435b861850bc51ef1"), "item" : "Star Wars: A New Hope" } { "_id" : ObjectId("5b02734635b861850bc51ef2"), "item" : "Star Wars: The Empire Strikes Back" } { "_id" : ObjectId("5b02734635b861850bc51ef3"), "item" : "Star Wars: Return of the Jedi" } |
You can write large JavaScript files for bulk inserts. For example, the following users.js file:
db.users.insert( [ { contact_account: "CA_20170321_0001" , first_name: "Jonathan" , middle_name: "Eoin" , last_name: "MacGregor" , addresses: { street_address: ["1111 Broadway","Suite 101"] , city: "Oakland" , state: "CA" , zip: "94607" } } , { contact_account: "CA_20170328_0001" , first_name: "Remington" , middle_name: "Alain" , last_name: "Dennison" , addresses: { street_address: ["2222 Broadway","Suite 121"] , city: "Oakland" , state: "CA" , zip: "94607" } } ]) |
You can call the file with the load
command from the interactive MongoDB command line:
load("/home/student/Code/mongodb/users.js") |
You can query the results after you load the collection elements in the users
collection with the following command:
db.users.find() |
It returns:
{ "_id" : ObjectId("5b0270d535b861850bc51eef"), "contact_account" : "CA_20170321_0001", "first_name" : "Jonathan", "middle_name" : "Eoin", "last_name" : "MacGregor", "addresses" : { "street_address" : [ "1111 Broadway", "Suite 101" ], "city" : "Oakland", "state" : "CA", "zip" : "94607" } } { "_id" : ObjectId("5b0270d535b861850bc51ef0"), "contact_account" : "CA_20170328_0001", "first_name" : "Remington", "middle_name" : "Alain", "last_name" : "Dennison", "addresses" : { "street_address" : [ "2222 Broadway", "Suite 121" ], "city" : "Oakland", "state" : "CA", "zip" : "94607" } } |
In both cases, the item
and user
collections add a unique identifier. The unique identifier is much like a surrogate key in a relational database. That’s why you should always define a unique natural key in the definition of your collection.
As always, I hope this helps.