Skip to content

Instantly share code, notes, and snippets.

@marcellodesales
Created June 21, 2015 18:41
Show Gist options
  • Save marcellodesales/6a771a412a9e4aef6476 to your computer and use it in GitHub Desktop.
Save marcellodesales/6a771a412a9e4aef6476 to your computer and use it in GitHub Desktop.
NPM Enterprise Installation on RHEL 7
[root@pppdc9prd8tl tmphttps://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/chap-Managing_Services_with_systemd.html
$ sudo ln -s /usr/lib/systemd/system /etc/init
[root@pppdc9prd8tl npme]# mkdir /etc/systemd/system/npme.d
[root@pppdc9prd8tl npme]# ln -s /etc/systemd/system/npme.d /etc/init
[root@pppdc9prd8tl npme]# ls -la /etc/init
lrwxrwxrwx. 1 root root 26 Jun 20 13:36 /etc/init -> /etc/systemd/system/npme.d]# cd /tmp
[root@pppdc9prd8tl tmp]# wget https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
[root@pppdc9prd8tl tmp]# ls *.rpm
[root@pppdc9prd8tl tmp]# sudo yum install epel-release-7-5.noarch.rpm
[root@pppdc9prd8tl tmp]# yum install -y nodejs npm ansible nginx redis couchdb
[root@pppdc9prd8tl tmp]# npm install -g npm
[root@pppdc9prd8tl tmp]# systemctl enable nginx
ln -s '/usr/lib/systemd/system/nginx.service' '/etc/systemd/system/multi-user.target.wants/nginx.service'
[root@pppdc9prd8tl tmp]# systemctl enable redis
ln -s '/usr/lib/systemd/system/redis.service' '/etc/systemd/system/multi-user.target.wants/redis.service'
[root@pppdc9prd8tl tmp]# systemctl enable couchdb
ln -s '/usr/lib/systemd/system/couchdb.service' '/etc/systemd/system/multi-user.target.wants/couchdb.service'
[root@pppdc9prd8tl tmp]# systemctl start nginx
[root@pppdc9prd8tl tmp]# systemctl start redis
[root@pppdc9prd8tl tmp]# systemctl start couchdb
[root@pppdc9prd8tl tmp]# systemctl status couchdb
couchdb.service - CouchDB Server
Loaded: loaded (/usr/lib/systemd/system/couchdb.service; enabled)
Active: active (running) since Sat 2015-06-20 13:38:08 UTC; 5s ago
Main PID: 6763 (beam.smp)
CGroup: /system.slice/couchdb.service
├─6763 /usr/lib64/erlang/erts-5.10.4/bin/beam.smp -Bd -K true -A 4 -- -root /usr/lib64/erlang -progname erl -- -home /var/lib/couchdb -- -noshell -noinput -sasl errlog_type error -couc...
├─6781 sh -s disksup
├─6783 /usr/lib64/erlang/lib/os_mon-2.2.14/priv/bin/memsup
└─6784 /usr/lib64/erlang/lib/os_mon-2.2.14/priv/bin/cpu_sup
Jun 20 13:38:07 pppdc9prd8tl couchdb[6763]: Apache CouchDB 1.6.1 (LogLevel=info) is logging to /var/log/couchdb/couch.log.
Jun 20 13:38:08 pppdc9prd8tl couchdb[6763]: Apache CouchDB has started. Time to relax.
Jun 20 13:38:08 pppdc9prd8tl systemd[1]: Started CouchDB Server.
[root@pppdc9prd8tl tmp]# systemctl status redis
redis.service - Redis persistent key-value database
Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled)
Drop-In: /etc/systemd/system/redis.service.d
└─limit.conf
Active: active (running) since Sat 2015-06-20 13:38:02 UTC; 18s ago
Main PID: 6758 (redis-server)
CGroup: /system.slice/redis.service
└─6758 /usr/bin/redis-server 127.0.0.1:6379
Jun 20 13:38:02 pppdc9prd8tl systemd[1]: Starting Redis persistent key-value database...
Jun 20 13:38:02 pppdc9prd8tl systemd[1]: Started Redis persistent key-value database.
[root@pppdc9prd8tl tmp]# systemctl status nginx
nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled)
Active: active (running) since Sat 2015-06-20 13:37:58 UTC; 39s ago
Process: 6749 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Process: 6747 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Main PID: 6751 (nginx)
CGroup: /system.slice/nginx.service
├─6751 nginx: master process /usr/sbin/nginx
├─6752 nginx: worker process
├─6753 nginx: worker process
├─6754 nginx: worker process
└─6755 nginx: worker process
Jun 20 13:37:58 pppdc9prd8tl nginx[6747]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Jun 20 13:37:58 pppdc9prd8tl nginx[6747]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Jun 20 13:37:58 pppdc9prd8tl systemd[1]: Started The nginx HTTP and reverse proxy server.
[root@pppdc9prd8tl tmp]# sudo mkdir /usr/local/etc/nginx
[root@pppdc9prd8tl tmp]# sudo mkdir /usr/local/etc/couchdb
* PASSWORDLESS NPME USER
[root@pppdc9prd8tl tmp]# useradd npme
[root@pppdc9prd8tl tmp]# visudo
npme ALL=(ALL) NOPASSWD:ALL
[root@pppdc9prd8tl tmp]# mkdir /etc/npme
[root@pppdc9prd8tl tmp]# chown -R npme:npme /etc/npme/
[npme@pppdc9prd8jb tmp]$ chmod -R 777 /etc/npme
* http://docs.couchdb.org/en/latest/intro/security.html
npme@ubuntu:~$ HOST="http://127.0.0.1:5984"
npme@ubuntu:~$ curl -X PUT $HOST/_config/admins/admin -d '"admin"'
npme@ubuntu:~$ HOST="http://admin:[email protected]:5984"
npme@ubuntu:~$ curl -X PUT $HOST/test
{"ok":true}
* WHEN REINSTALLING
[npme@pppdc9prd8jb ~]$ curl -X DELETE http://admin:admin@localhost:5984/registry
{"ok":true}
* VERIFY WHICH IP IT IS LISTENING. IT MUST BE LOCALHOST ONLY
[npme@pppdc9prd8jb npme]$ sudo vim /etc/couchdb/local.ini
[httpd]
port = 5984
bind_address = 127.0.0.1
;bind_address = 10.132.79.179
[npme@pppdc9prd8jb ~]$ netstat -atnp | grep 5984
(No info could be read for "-p": geteuid()=994 but you should be root.)
tcp 0 0 127.0.0.1:5984 0.0.0.0:* LISTEN -
[npme@pppdc9prd8tl ~]$ npm install npme
-
> [email protected] postinstall /home/npme/node_modules/npme
> node ./bin/npme.js install
[?] this will install npmE on this server (you should only run this on a dedicated machine), continue? Yes
[?] enter your billing email: [email protected]
[?] enter your license key: 1af3df63-c041-4a39-a945-42b950b5983c
? have you installed ansible on this computer? Yes
? have you installed CouchDB on this computer? Yes
? have you installed Redis on this computer? Yes
? have you installed nginx on this computer? Yes
Installing OS dependencies with Ansible:
PLAY [npme] *******************************************************************
GATHERING FACTS ***************************************************************
ok: [127.0.0.1]
TASK: [bcoe.npme | create npme group] *****************************************
ok: [127.0.0.1]
TASK: [bcoe.npme | create npme user] ******************************************
ok: [127.0.0.1]
TASK: [bcoe.npme | create npme directories] ***********************************
changed: [127.0.0.1] => (item=/etc/npme/logs)
TASK: [bcoe.npme | create npme directories] ***********************************
ok: [127.0.0.1] => (item=/etc/npme)
changed: [127.0.0.1] => (item=/etc/npme/bin)
changed: [127.0.0.1] => (item=/etc/npme/node_modules)
TASK: [bcoe.npme | install couch-app bin] *************************************
changed: [127.0.0.1]
TASK: [bcoe.npme | install bootstrap config] **********************************
changed: [127.0.0.1] => (item=package.json)
changed: [127.0.0.1] => (item=service.json)
TASK: [bcoe.npme | build-essentials] ******************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | install dependencies] **************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | download couchdb tarball] **********************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | unarchive] *************************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | build] *****************************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | create couchdb user] ***************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | Change the ownership of the couchdb directories] ***********
skipping: [127.0.0.1] => (item=/usr/local/etc/couchdb)
skipping: [127.0.0.1] => (item=/usr/local/var/lib/couchdb)
skipping: [127.0.0.1] => (item=/usr/local/var/log/couchdb)
skipping: [127.0.0.1] => (item=/usr/local/var/run/couchdb)
TASK: [bcoe.npme | install init.d script] *************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | make couchdb run at boot] **********************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | remove couchdb tarball] ************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | add 8080 to iptables] **************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | save iptables] *********************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | restart redis] *********************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | install npm@npme-beta] *************************************
changed: [127.0.0.1]
TASK: [bcoe.npme | install ndm] ***********************************************
changed: [127.0.0.1]
TASK: [bcoe.npme | install python-pycurl] *************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | build-essentials] ******************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | add repository for modern redis] ***************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | install redis] *********************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | install apt packages] **************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | create db directory] ***************************************
changed: [127.0.0.1]
TASK: [bcoe.npme | include_vars centos65.yml] *********************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | include_vars unknown.yml] **********************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | copy nginx configuration] **********************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | copy couchdb configuration] ********************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | create npme directories] ***********************************
skipping: [127.0.0.1] => (item=/etc/npme)
skipping: [127.0.0.1] => (item=/etc/npme/bin)
skipping: [127.0.0.1] => (item=/etc/npme/node_modules)
TASK: [bcoe.npme | chown db directory] ****************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | more restrictive permissions] ******************************
skipping: [127.0.0.1] => (item=package.json)
skipping: [127.0.0.1] => (item=service.json)
PLAY RECAP ********************************************************************
127.0.0.1 : ok=13 changed=7 unreachable=0 failed=0
install complete!
sh: /etc/npme/node_modules/.bin/ndm: Permission denied
Configuring npmeE services:
PLAY [npme] *******************************************************************
GATHERING FACTS ***************************************************************
ok: [127.0.0.1]
TASK: [bcoe.npme | create npme group] *****************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | create npme user] ******************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | create npme directories] ***********************************
skipping: [127.0.0.1] => (item=/etc/npme/logs)
TASK: [bcoe.npme | create npme directories] ***********************************
skipping: [127.0.0.1] => (item=/etc/npme)
skipping: [127.0.0.1] => (item=/etc/npme/bin)
skipping: [127.0.0.1] => (item=/etc/npme/node_modules)
TASK: [bcoe.npme | install couch-app bin] *************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | install bootstrap config] **********************************
skipping: [127.0.0.1] => (item=package.json)
skipping: [127.0.0.1] => (item=service.json)
TASK: [bcoe.npme | build-essentials] ******************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | install dependencies] **************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | download couchdb tarball] **********************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | unarchive] *************************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | build] *****************************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | create couchdb user] ***************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | Change the ownership of the couchdb directories] ***********
skipping: [127.0.0.1] => (item=/usr/local/etc/couchdb)
skipping: [127.0.0.1] => (item=/usr/local/var/lib/couchdb)
skipping: [127.0.0.1] => (item=/usr/local/var/log/couchdb)
skipping: [127.0.0.1] => (item=/usr/local/var/run/couchdb)
TASK: [bcoe.npme | install init.d script] *************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | make couchdb run at boot] **********************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | remove couchdb tarball] ************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | add 8080 to iptables] **************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | save iptables] *********************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | restart redis] *********************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | install npm@npme-beta] *************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | install ndm] ***********************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | install python-pycurl] *************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | build-essentials] ******************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | add repository for modern redis] ***************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | install redis] *********************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | install apt packages] **************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | create db directory] ***************************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | include_vars centos65.yml] *********************************
skipping: [127.0.0.1]
TASK: [bcoe.npme | include_vars unknown.yml] **********************************
ok: [127.0.0.1]
TASK: [bcoe.npme | copy nginx configuration] **********************************
ok: [127.0.0.1]
TASK: [bcoe.npme | copy couchdb configuration] ********************************
ok: [127.0.0.1]
TASK: [bcoe.npme | create npme directories] ***********************************
changed: [127.0.0.1] => (item=/etc/npme)
ok: [127.0.0.1] => (item=/etc/npme/bin)
ok: [127.0.0.1] => (item=/etc/npme/node_modules)
TASK: [bcoe.npme | chown db directory] ****************************************
ok: [127.0.0.1]
TASK: [bcoe.npme | more restrictive permissions] ******************************
changed: [127.0.0.1] => (item=package.json)
changed: [127.0.0.1] => (item=service.json)
PLAY RECAP ********************************************************************
127.0.0.1 : ok=11 changed=2 unreachable=0 failed=0
configuration complete!
npm WARN package.json @npm/[email protected] No README data
npm WARN package.json @npm/[email protected] No license field.
> [email protected] install /etc/npme/node_modules/@npm/registry-frontdoor/node_modules/light-cycle/node_modules/xxhash
> node-gyp rebuild
make: Entering directory `/etc/npme/node_modules/@npm/registry-frontdoor/node_modules/light-cycle/node_modules/xxhash/build'
CXX(target) Release/obj.target/hash/src/hash.o
CC(target) Release/obj.target/hash/deps/xxhash/xxhash.o
SOLINK_MODULE(target) Release/obj.target/hash.node
COPY Release/hash.node
make: Leaving directory `/etc/npme/node_modules/@npm/registry-frontdoor/node_modules/light-cycle/node_modules/xxhash/build'
> [email protected] install /etc/npme/node_modules/@npm/registry-frontdoor/node_modules/ursa
> node-gyp rebuild
make: Entering directory `/etc/npme/node_modules/@npm/registry-frontdoor/node_modules/ursa/build'
CXX(target) Release/obj.target/ursaNative/src/ursaNative.o
CXX(target) Release/obj.target/ursaNative/src/asprintf.o
SOLINK_MODULE(target) Release/obj.target/ursaNative.node
COPY Release/ursaNative.node
make: Leaving directory `/etc/npme/node_modules/@npm/registry-frontdoor/node_modules/ursa/build'
> [email protected] install /etc/npme/node_modules/@npm/npm-auth-ws/node_modules/restify/node_modules/dtrace-provider
> node scripts/install.js
> [email protected] install /etc/npme/node_modules/@npm/registry-frontdoor/node_modules/restify/node_modules/dtrace-provider
> node scripts/install.js
npm WARN deprecated [email protected]: IMPORTANT hotfix
> [email protected] install /etc/npme/node_modules/@npm/validate-and-store/node_modules/restify/node_modules/dtrace-provider
> node scripts/install.js
> [email protected] install /etc/npme/node_modules/@npm/npm-auth-ws/node_modules/restify/node_modules/bunyan/node_modules/dtrace-provider
> node scripts/install.js
> [email protected] install /etc/npme/node_modules/@npm/registry-frontdoor/node_modules/restify/node_modules/bunyan/node_modules/dtrace-provider
> node scripts/install.js
|
> [email protected] install /etc/npme/node_modules/@npm/validate-and-store/node_modules/multi-fs/node_modules/manta-client/node_modules/manta/node_modules/watershed/node_modules/dtrace-provider
> node-gyp rebuild
make: Entering directory `/etc/npme/node_modules/@npm/validate-and-store/node_modules/multi-fs/node_modules/manta-client/node_modules/manta/node_modules/watershed/node_modules/dtrace-provider/build'
TOUCH Release/obj.target/DTraceProviderStub.stamp
make: Leaving directory `/etc/npme/node_modules/@npm/validate-and-store/node_modules/multi-fs/node_modules/manta-client/node_modules/manta/node_modules/watershed/node_modules/dtrace-provider/build'
> [email protected] install /etc/npme/node_modules/@npm/validate-and-store/node_modules/restify/node_modules/bunyan/node_modules/dtrace-provider
> node scripts/install.js
|
> [email protected] install /etc/npme/node_modules/@npm/validate-and-store/node_modules/multi-fs/node_modules/manta-client/node_modules/manta/node_modules/restify/node_modules/dtrace-provider
> node-gyp rebuild
make: Entering directory `/etc/npme/node_modules/@npm/validate-and-store/node_modules/multi-fs/node_modules/manta-client/node_modules/manta/node_modules/restify/node_modules/dtrace-provider/build'
TOUCH Release/obj.target/DTraceProviderStub.stamp
make: Leaving directory `/etc/npme/node_modules/@npm/validate-and-store/node_modules/multi-fs/node_modules/manta-client/node_modules/manta/node_modules/restify/node_modules/dtrace-provider/build'
> [email protected] install /etc/npme/node_modules/@npm/validate-and-store/node_modules/multi-fs/node_modules/manta-client/node_modules/manta/node_modules/bunyan/node_modules/dtrace-provider
> node-gyp rebuild
make: Entering directory `/etc/npme/node_modules/@npm/validate-and-store/node_modules/multi-fs/node_modules/manta-client/node_modules/manta/node_modules/bunyan/node_modules/dtrace-provider/build'
TOUCH Release/obj.target/DTraceProviderStub.stamp
make: Leaving directory `/etc/npme/node_modules/@npm/validate-and-store/node_modules/multi-fs/node_modules/manta-client/node_modules/manta/node_modules/bunyan/node_modules/dtrace-provider/build'
npm WARN prefer global [email protected] should be installed with -g
@npm/[email protected] node_modules/@npm/npm-auth-ws
├── [email protected]
├── [email protected]
├── [email protected]
├── @npm/[email protected]
├── [email protected]
├── @npm/[email protected] ([email protected])
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
├── @npm/[email protected] ([email protected], [email protected], [email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
└── @npm/[email protected] ([email protected], [email protected], [email protected], [email protected], [email protected])
@npm/[email protected] node_modules/@npm/registry-frontdoor
├── [email protected]
├── @npm/[email protected]
├── [email protected]
├── [email protected] ([email protected])
├── [email protected]
├── [email protected] ([email protected])
├── [email protected]
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected])
├── @npm/[email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
├── [email protected]
├── [email protected]
└── @npm/[email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
@npm/[email protected] node_modules/@npm/policy-follower
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
├── [email protected]
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected])
├── [email protected]
├── [email protected]
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
└── @npm/[email protected] ([email protected], [email protected], [email protected], [email protected], [email protected])
@npm/[email protected] node_modules/@npm/package-whitelist
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected])
├── [email protected]
├── [email protected] ([email protected])
├── [email protected]
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
@npm/[email protected] node_modules/@npm/validate-and-store
├── @npm/[email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
├── [email protected] ([email protected])
├── @npm/[email protected] ([email protected])
├── [email protected]
├── [email protected] ([email protected])
├── [email protected] ([email protected])
├── [email protected]
├── [email protected]
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
├── @npm/[email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected])
[email protected] node_modules/npm-registry-couchapp
├── [email protected]
├── [email protected]
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
{"ok":true}
> [email protected] start /etc/npme/node_modules/npm-registry-couchapp
> bash ./push.sh
/etc/npme/node_modules/npm-registry-couchapp/node_modules/.bin/couchapp
Preparing.
Serializing.
PUT http://admin:******@localhost:5984/registry/_design/scratch
Finished push. 1-61842f31ff2035691783217e5ef81f53
Preparing.
Serializing.
PUT http://admin:******@localhost:5984/_users/_design/scratch
Finished push. 5-4215bebd93f1caefdfdcc1255a219bcf
Pushed to scratch ddoc. To make it real, use a COPY request.
Something like this:
curl -u "$username:$password" \
$couch/registry/_design/scratch \
-X COPY \
-H destination:'_design/app?rev=$rev'
But, before you do that, make sure to fetch the views and give
them time to load, so that real users don't feel the pain of
view generation latency.
You can do it like this using npm:
npm run load
# Go get lunch and come back.
# Go take the dog for a walk, and play some frisbee in the park.
# If you don't have a dog, go get a puppy, provide it with love
# and appropriate discipline until it gets older, train it to play
# frisbee in the park, and then take it to the park and play frisbee.
# Wait some more. It's probably almost done now.
# Make it live:
npm run copy
> [email protected] load /etc/npme/node_modules/npm-registry-couchapp
> bash ./load-views.sh
LOADING: norevs
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "7XGA2YEFCURUB5NYGP8R9NEA0"
Date: Sun, 21 Jun 2015 18:16:55 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: mixedcase
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "EYTETQNKOG3NK4F62H1DXD4HC"
Date: Sun, 21 Jun 2015 18:16:55 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: conflicts
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "7XGA2YEFCURUB5NYGP8R9NEA0"
Date: Sun, 21 Jun 2015 18:16:55 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: oddhost
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "7XGA2YEFCURUB5NYGP8R9NEA0"
Date: Sun, 21 Jun 2015 18:16:55 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: updated
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "EYTETQNKOG3NK4F62H1DXD4HC"
Date: Sun, 21 Jun 2015 18:16:55 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: listAll
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "EYTETQNKOG3NK4F62H1DXD4HC"
Date: Sun, 21 Jun 2015 18:16:56 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: allVersions
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "7XGA2YEFCURUB5NYGP8R9NEA0"
Date: Sun, 21 Jun 2015 18:16:56 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: modified
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "EYTETQNKOG3NK4F62H1DXD4HC"
Date: Sun, 21 Jun 2015 18:16:56 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: modifiedPackage
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "EYTETQNKOG3NK4F62H1DXD4HC"
Date: Sun, 21 Jun 2015 18:16:56 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: noShasum
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "7XGA2YEFCURUB5NYGP8R9NEA0"
Date: Sun, 21 Jun 2015 18:16:56 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: byEngine
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "EYTETQNKOG3NK4F62H1DXD4HC"
Date: Sun, 21 Jun 2015 18:16:56 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: countVersions
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "7XGA2YEFCURUB5NYGP8R9NEA0"
Date: Sun, 21 Jun 2015 18:16:57 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: byKeyword
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "7XGA2YEFCURUB5NYGP8R9NEA0"
Date: Sun, 21 Jun 2015 18:16:57 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: byField
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "EYTETQNKOG3NK4F62H1DXD4HC"
Date: Sun, 21 Jun 2015 18:16:57 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: needBuild
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "EYTETQNKOG3NK4F62H1DXD4HC"
Date: Sun, 21 Jun 2015 18:16:57 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: scripts
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "EYTETQNKOG3NK4F62H1DXD4HC"
Date: Sun, 21 Jun 2015 18:16:57 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: nodeWafInstall
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "EYTETQNKOG3NK4F62H1DXD4HC"
Date: Sun, 21 Jun 2015 18:16:57 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: orphanAttachments
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "EYTETQNKOG3NK4F62H1DXD4HC"
Date: Sun, 21 Jun 2015 18:16:58 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: noAttachment
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "7XGA2YEFCURUB5NYGP8R9NEA0"
Date: Sun, 21 Jun 2015 18:16:58 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: starredByUser
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "EYTETQNKOG3NK4F62H1DXD4HC"
Date: Sun, 21 Jun 2015 18:16:58 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: starredByPackage
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "EYTETQNKOG3NK4F62H1DXD4HC"
Date: Sun, 21 Jun 2015 18:16:58 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: byUser
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "EYTETQNKOG3NK4F62H1DXD4HC"
Date: Sun, 21 Jun 2015 18:16:58 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: browseAuthorsRecent
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "7XGA2YEFCURUB5NYGP8R9NEA0"
Date: Sun, 21 Jun 2015 18:16:58 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: npmTop
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "7XGA2YEFCURUB5NYGP8R9NEA0"
Date: Sun, 21 Jun 2015 18:16:58 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: browseAuthors
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "7XGA2YEFCURUB5NYGP8R9NEA0"
Date: Sun, 21 Jun 2015 18:16:59 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: browseUpdated
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "7XGA2YEFCURUB5NYGP8R9NEA0"
Date: Sun, 21 Jun 2015 18:16:59 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: browseAll
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "7XGA2YEFCURUB5NYGP8R9NEA0"
Date: Sun, 21 Jun 2015 18:16:59 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: analytics
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "7XGA2YEFCURUB5NYGP8R9NEA0"
Date: Sun, 21 Jun 2015 18:16:59 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: dependedUpon
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "7XGA2YEFCURUB5NYGP8R9NEA0"
Date: Sun, 21 Jun 2015 18:16:59 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: dependentVersions
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "7XGA2YEFCURUB5NYGP8R9NEA0"
Date: Sun, 21 Jun 2015 18:16:59 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: browseStarUser
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "7XGA2YEFCURUB5NYGP8R9NEA0"
Date: Sun, 21 Jun 2015 18:17:00 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: browseStarPackage
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "7XGA2YEFCURUB5NYGP8R9NEA0"
Date: Sun, 21 Jun 2015 18:17:00 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
LOADING: fieldsInUse
HTTP/1.1 200 OK
Server: CouchDB/1.6.1 (Erlang OTP/R16B03-1)
ETag: "7XGA2YEFCURUB5NYGP8R9NEA0"
Date: Sun, 21 Jun 2015 18:17:00 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 0
Cache-Control: must-revalidate
> [email protected] copy /etc/npme/node_modules/npm-registry-couchapp
> bash ./copy.sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 41 100 41 0 0 268 0 --:--:-- --:--:-- --:--:-- 269
{"ok":true,"id":"_design/app","rev":"1-c08b3107269c710f52369428b567ca53"}
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 10832 100 10832 0 0 71000 0 --:--:-- --:--:-- --:--:-- 71263
{"ok":true,"id":"_design/_auth","rev":"6-2e7222576810a0a761514b2986c1da32"}
generating service wrappers:
generated /etc/init/npm-auth-ws.conf
log path: /etc/npme/logs/npm-auth-ws.log
generated /etc/init/policy-follower.conf
log path: /etc/npme/logs/policy-follower.log
generated /etc/init/validate-and-store.conf
log path: /etc/npme/logs/validate-and-store.log
generated /etc/init/registry-frontdoor.conf
log path: /etc/npme/logs/registry-frontdoor.log
package-whitelist does not have start script.
generated /etc/init/package-whitelist.conf
log path: /etc/npme/logs/package-whitelist.log
to start a all services run: 'ndm start'
or manually start the service using 'launchctl', 'initctl', or 'upstart'
success!
♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
♥♥♥♥ ♥♥♥♥ ♥♥♥♥ ♥♥♥♥♥
♥♥♥♥ ♥♥♥♥ ♥♥♥♥ ♥♥♥♥♥
♥♥♥♥ ♥♥♥♥ ♥♥♥♥ ♥♥♥♥♥
♥♥♥♥ ♥♥♥♥ ♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥♥
♥♥♥♥ ♥♥♥♥ ♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥♥
♥♥♥♥ ♥♥♥♥ ♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥♥
♥♥♥♥ ♥♥♥♥ ♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥♥
♥♥♥♥ ♥♥♥♥ ♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥♥
♥♥♥♥ ♥♥♥♥ ♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥♥
♥♥♥♥ ♥♥♥♥ ♥♥♥♥ ♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥♥
♥♥♥♥ ♥♥♥♥ ♥♥♥♥ ♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥♥
♥♥♥♥ ♥♥♥♥ ♥♥♥♥ ♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥♥
♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥ ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥ ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥ ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
run `npme start` to boot npmeE.
run `npme add-package <package-name>` to add packages to your whitelist.
logs are stored in /etc/npme/logs
setup complete. npm loves you!
npmE is now up and running!
[email protected] node_modules/npme
├── [email protected]
├── [email protected]
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected])
├── [email protected]
├── [email protected] ([email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected]
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected])
└── [email protected] ([email protected], [email protected])
[npme@pppdc9prd8tl ~]$ cd /etc/npme/
[npme@pppdc9prd8tl npme]$ sudo ./node_modules/ndm/bin/ndm.js generate --uid=root --gid=root --platform=initd
generating service wrappers:
generated /etc/init.d/npm-auth-ws
log path: /etc/npme/logs/npm-auth-ws.log
generated /etc/init.d/policy-follower
log path: /etc/npme/logs/policy-follower.log
# Generated by ndm
generated /etc/init.d/validate-and-store
# Generated by ndm
log path: /etc/npme/logs/validate-and-store.log
# Generated by ndm
generated /etc/init.d/registry-frontdoor
# Generated by ndm
log path: /etc/npme/logs/registry-frontdoor.log
package-whitelist does not have start script.
generated /etc/init.d/package-whitelist
log path: /etc/npme/logs/package-whitelist.log
to start a all services run: 'ndm start'
or manually start the service using 'launchctl', 'initctl', or 'upstart'
success!
[root@pppdc9prd8tl npme]# npme start
starting services:
Starting policy-follower
Starting npm-auth-ws
Starting validate-and-store
start /etc/init/policy-follower.conf
start /etc/init/validate-and-store.conf
start /etc/init/npm-auth-ws.conf
Starting registry-frontdoor
start /etc/init/registry-frontdoor.conf
npmE is now running (curl http://localhost:8080).
@marcellodesales
Copy link
Author

Installation process run by user "npme" works with a few problems:

Setting up directories

I had to create the directories below to make the install pass:

[root@pppdc9prd8tl tmp]# sudo mkdir /usr/local/etc/nginx
[root@pppdc9prd8tl tmp]# sudo mkdir /usr/local/etc/couchdb

I'm not sure if the RHEL 7 installation of couchdb and nginx will be using those directories by default as user's conf...

In addition, a new dir and symlink to avoid the build to break for the "ndm" files...

mkdir /etc/systemd/system/npme.d 
ln -s /etc/systemd/system/npme.d /etc/init

NDM Fails to execute

The first problem is that the ndm fails to run. It fails with the following:

sh: /etc/npme/node_modules/.bin/ndm: Permission denied

The installation process continues till the end, created the registry properly, etc... Also, I think the questions for the Hub (what's your host, github API, path to save files) are not asked... The file "service.js" is not properly created...

SOLUTIONS ndm running

I noticed that there are a couple of "platforms" supported by the installation process... The installation process uses the "centos6.5" platform for ndm... As RHEL 7 has a different directory structure for systemd, and that's the reason why I had to create the systemd dir for npme...

mkdir /etc/systemd/system/npme.d 
ln -s /etc/systemd/system/npme.d /etc/init

Then, based on the Dockerfile (https://github.com/npm/npme-docker/blob/master/Dockerfile#L24-L27) installation, ndm should run to generate the shell scripts...

$ cd /etc/npme; ndm generate --uid=root --gid=root --platform=initd

Generated files were incorrect

I had to manually change all the files created with the hostnames of the host... That might be a result of running the ndm command without changing the service.js.

start /etc/init/policy-follower.conf
start /etc/init/validate-and-store.conf
start /etc/init/npm-auth-ws.conf
start /etc/init/registry-frontdoor.conf

The localhost:8080 URL does NOT open the couchdb:5984/registry view

After the installation process, the regular couchdb page opens... Is this because of the couchdb file generated to /usr/local/ maybe not read by the frontdoor app?

{
  couchdb: "Welcome",
  uuid: "32416f1f651444817a5fd6eaa081763d",
  version: "1.6.1",
  vendor: {
    version: "1.6.1",
    name: "The Apache Software Foundation"
  }
}

I followed the same steps in the documentation... I'm sure it might have failed setting up the service... The database is locally and properly setup...

[root@pppdc9prd8tl mdesales]# curl localhost:5984/_all_dbs/
["_replicator","_users","registry","test"]

@marcellodesales
Copy link
Author

Just found out that the database is correctly working... So I guess it is just a matter of missing nginx setting to properly route frontdoor:8080 to couchdb:5984/registry...

[root@pppdc9prd8tl registry-frontdoor]# curl localhost:5984/registry
{
  "db_name":"registry",
  "doc_count":2,
  "doc_del_count":0,
  "update_seq":2,
  "purge_seq":0,
  "compact_running":false,
  "disk_size":82018,
  "data_size":81125,
  "instance_start_time":"1434910613197770",
  "disk_format_version":6,
  "committed_update_seq":2
}

@marcellodesales
Copy link
Author

I noticed that the nginx and the couchdb/local.ini were in the incorrect places. I placed them under /etc/couchdb and /etc/nginx... Now, I can see them being loaded, but the vhosts setting are not working...

[root@pppdc9prd8tl mdesales]# systemctl status couchdb
couchdb.service - CouchDB Server
Loaded: loaded (/usr/lib/systemd/system/couchdb.service; enabled)
Active: active (running) since Mon 2015-06-22 20:33:24 UTC; 5s ago
Main PID: 14761 (beam.smp)
CGroup: /system.slice/couchdb.service
├─14761 /usr/lib64/erlang/erts-5.10.4/bin/beam.smp -Bd -K true -A 4 -- -root /usr/lib64/erlang -progname erl -- -home /var/lib/couchdb -- -noshell -noinput -sasl errlog_type error -couch_ini...
├─14779 sh -s disksup
├─14781 /usr/lib64/erlang/lib/os_mon-2.2.14/priv/bin/memsup
└─14782 /usr/lib64/erlang/lib/os_mon-2.2.14/priv/bin/cpu_sup

Jun 22 20:33:24 pppdc9prd8tl couchdb[14761]: [stats] samples="[0, 60, 300, 900]"
Jun 22 20:33:24 pppdc9prd8tl couchdb[14761]: [uuids] algorithm="sequential"
Jun 22 20:33:24 pppdc9prd8tl couchdb[14761]: [uuids] max_count="1000"
Jun 22 20:33:24 pppdc9prd8tl couchdb[14761]: [vendor] name="The Apache Software Foundation"
Jun 22 20:33:24 pppdc9prd8tl couchdb[14761]: [vendor] version="1.6.1"
Jun 22 20:33:24 pppdc9prd8tl couchdb[14761]: [vhosts] localhost:5984="/registry/_design/app/_rewrite"
Jun 22 20:33:24 pppdc9prd8tl couchdb[14761]: [vhosts] npmjs.corp.intuit.net:5984="/registry/_design/app/_rewrite"
Jun 22 20:33:24 pppdc9prd8tl couchdb[14761]: [view_compaction] keyvalue_buffer_size="2097152"
Jun 22 20:33:24 pppdc9prd8tl couchdb[14761]: Apache CouchDB has started. Time to relax.
Jun 22 20:33:24 pppdc9prd8tl systemd[1]: Started CouchDB Server.

The call to the localhost to redirect the output to show the registry output still shows the couchdb output as before... :(

{
  couchdb: "Welcome",
  uuid: "32416f1f651444817a5fd6eaa081763d",
  version: "1.6.1",
  vendor: {
    version: "1.6.1",
    name: "The Apache Software Foundation"
  }
}

@marcellodesales
Copy link
Author

Just got it to work!!!

[npme@pppdc9prd8jb npme]$ curl http://npme.corp.intuit.net
{
  "db_name":"registry",
  "doc_count":2,
  "doc_del_count":0,
  "update_seq":4,
  "purge_seq":0,
  "compact_running":false,
  "disk_size":163938,
  "data_size":81195,
  "instance_start_time":"1435861636045845",
  "disk_format_version":6,
  "committed_update_seq":4
}

The final settings needed were the following:

  • /etc/nginx/nginx.conf
user   root;
worker_processes  1;

error_log  /var/log/nginx/error.log;

events {
    worker_connections  1024;
}
http {
    upstream npme {
        server 127.0.0.1:8080;
    }

    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;

    keepalive_timeout  65;

    # HTTPS server
    #
    server {
        listen       80;
        server_name  npme-private.npmjs.com;

        location / {
            proxy_pass       http://npme;
            proxy_set_header Host $host;
        }
    }

    # Package Tarballs.
    server {
        listen       8000 default_server;
        location / {
          root /etc/npme/packages;
        }
    }
}
  • /etc/couchdb/local.ini

I just changed the database location from the /etc/npme/couchdb to the /var/lib/couchdb.

; CouchDB Configuration Settings

; Custom settings should be made in this file. They will override settings
; in default.ini, but unlike changes made to default.ini, this file won't be
; overwritten on server upgrade.

[couchdb]
delayed_commits = false
database_dir = /etc/npme/couchdb
uuid = c477da9e5c945acfa6c9b2865f49a344

[httpd]
secure_rewrites = false

[couch_httpd_auth]
public_fields = appdotnet, avatar, avatarMedium, avatarLarge, date, email, fields, freenode, fullname, github, homepage, name, roles, twitter, type, _id, _rev
users_db_public = true

[log]
;level = debug


; To enable Virtual Hosts in CouchDB, add a vhost = path directive. All requests to
; the Virual Host will be redirected to the path. In the example below all requests
; to http://example.com/ are redirected to /database.
; If you run CouchDB on a specific port, include the port number in the vhost:
; example.com:5984 = /database

[vhosts]
registry.npmjs.org = /registry/_design/app/_rewrite

[update_notification]
;unique notifier name=/full/path/to/exe -with "cmd line arg"

; To create an admin account uncomment the '[admins]' section below and add a
; line in the format 'username = password'. When you next start CouchDB, it
; will change the password to a hash (so that your passwords don't linger
; around in plain-text files). You can add more admin accounts with more
; 'username = password' lines. Don't forget to restart CouchDB after
; changing this.
[admins]
admin = -pbkdf2-0c1e8d932a0ea91d883dbe86800c2aed5b22b72c,51e581318de8d2b8c5c4174afa386698,10

@marcellodesales
Copy link
Author

YES! NPM publish validation with GitHub Enterprise working!

  • npm login
$ npm -d login --registry="http://npme.corp.intuit.net" --scope="@servicesplatform-node"
npm info it worked if it ends with ok
npm info using [email protected]
npm info using [email protected]
Username: (cicduser) mdesales
Password: 
Email: (this IS public) ([email protected]) 
npm info attempt registry request try #1 at 11:48:28
npm http request PUT http://npme.corp.intuit.net/-/user/org.couchdb.user:mdesales
npm http 201 http://npme.corp.intuit.net/-/user/org.couchdb.user:mdesales
npm info adduser Authorized user mdesales
npm info ok 
  • npm publish
$ npm -d publish
npm info it worked if it ends with ok
npm info using [email protected]
npm info using [email protected]
npm info prepublish @servicesplatform-node/[email protected]
npm info attempt registry request try #1 at 11:57:55
npm http request PUT http://npme.corp.intuit.net/@servicesplatform-node%2fsp-core
npm http 200 http://npme.corp.intuit.net/@servicesplatform-node%2fsp-core
+ @servicesplatform-node/[email protected]
npm info publish @servicesplatform-node/[email protected]
npm info postpublish @servicesplatform-node/[email protected]
npm info ok 
  • npm install
$ npm install -d @servicesplatform-node/[email protected]
npm info it worked if it ends with ok
npm info using [email protected]
npm info using [email protected]
npm info attempt registry request try #1 at 15:57:40
npm http request GET http://npme.corp.intuit.net/@servicesplatform-node%2fsp-core
npm http 304 http://npme.corp.intuit.net/@servicesplatform-node%2fsp-core
npm info install @servicesplatform-node/[email protected] into /tmp
npm info installOne @servicesplatform-node/[email protected]


npm info preinstall @servicesplatform-node/[email protected]
npm info attempt registry request try #1 at 15:58:28
npm http request GET https://registry.npmjs.org/node-pom-parser
npm info attempt registry request try #1 at 15:58:28
npm http request GET https://registry.npmjs.org/underscore-contrib
npm info attempt registry request try #1 at 15:58:28
npm http request GET https://registry.npmjs.org/xml2js
npm http 304 https://registry.npmjs.org/underscore-contrib
npm http 304 https://registry.npmjs.org/node-pom-parser
npm http 304 https://registry.npmjs.org/xml2js
npm info install [email protected] into /tmp/node_modules/@servicesplatform-node/sp-core
npm info install [email protected] into /tmp/node_modules/@servicesplatform-node/sp-core
npm info install [email protected] into /tmp/node_modules/@servicesplatform-node/sp-core
npm info installOne [email protected]
npm info installOne [email protected]
npm info installOne [email protected]
npm info preinstall [email protected]
npm info attempt registry request try #1 at 15:58:28
npm http request GET https://registry.npmjs.org/ltx
npm info attempt registry request try #1 at 15:58:28
npm http request GET https://registry.npmjs.org/node-expat
npm info preinstall [email protected]
npm info attempt registry request try #1 at 15:58:28
npm http request GET https://registry.npmjs.org/sax
npm info attempt registry request try #1 at 15:58:28
npm http request GET https://registry.npmjs.org/xmlbuilder
npm info preinstall [email protected]
npm info attempt registry request try #1 at 15:58:28
npm http request GET https://registry.npmjs.org/underscore
npm http 304 https://registry.npmjs.org/ltx
npm http 304 https://registry.npmjs.org/sax
npm http 304 https://registry.npmjs.org/xmlbuilder
npm info install [email protected] into /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/xml2js
npm info install [email protected] into /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/xml2js
npm info installOne [email protected]
npm info installOne [email protected]
npm http 304 https://registry.npmjs.org/node-expat
npm info install [email protected] into /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser
npm info install [email protected] into /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser
npm info installOne [email protected]
npm info installOne [email protected]
npm http 304 https://registry.npmjs.org/underscore
npm info install [email protected] into /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/underscore-contrib
npm info installOne [email protected]
npm info preinstall [email protected]
npm info attempt registry request try #1 at 15:58:28
npm http request GET https://registry.npmjs.org/lodash
npm info preinstall [email protected]
npm info build /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/underscore-contrib/node_modules/underscore
npm info linkStuff [email protected]
npm info install [email protected]
npm info postinstall [email protected]
npm info build /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/underscore-contrib
npm info linkStuff [email protected]
npm info install [email protected]
npm info postinstall [email protected]
npm info preinstall [email protected]
npm info install [email protected] into /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser/node_modules/ltx
npm info installOne [email protected]
npm http 304 https://registry.npmjs.org/lodash
npm info install [email protected] into /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/xml2js/node_modules/xmlbuilder
npm info installOne [email protected]
npm info preinstall [email protected]
npm info build /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/xml2js/node_modules/sax
npm info linkStuff [email protected]
npm info install [email protected]
npm info postinstall [email protected]
npm info preinstall [email protected]
npm info build /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser/node_modules/ltx/node_modules/sax
npm info linkStuff [email protected]
npm info install [email protected]
npm info postinstall [email protected]
npm info build /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser/node_modules/ltx
npm info linkStuff [email protected]
npm info install [email protected]
npm info postinstall [email protected]
npm info preinstall [email protected]
npm info build /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/xml2js/node_modules/xmlbuilder/node_modules/lodash
npm info linkStuff [email protected]
npm info install [email protected]
npm info postinstall [email protected]
npm info build /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/xml2js/node_modules/xmlbuilder
npm info linkStuff [email protected]
npm info install [email protected]
npm info postinstall [email protected]
npm info build /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/xml2js
npm info linkStuff [email protected]
npm info install [email protected]
npm info postinstall [email protected]
npm info preinstall [email protected]
npm info attempt registry request try #1 at 15:58:29
npm http request GET https://registry.npmjs.org/bindings
npm info attempt registry request try #1 at 15:58:29
npm http request GET https://registry.npmjs.org/debug
npm info attempt registry request try #1 at 15:58:29
npm http request GET https://registry.npmjs.org/iconv
npm info attempt registry request try #1 at 15:58:29
npm http request GET https://registry.npmjs.org/nan
npm http 304 https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/bindings
npm http 304 https://registry.npmjs.org/iconv
npm http 304 https://registry.npmjs.org/nan
npm info install [email protected] into /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser/node_modules/node-expat
npm info install [email protected] into /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser/node_modules/node-expat
npm info install [email protected] into /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser/node_modules/node-expat
npm info install [email protected] into /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser/node_modules/node-expat
npm info installOne [email protected]
npm info installOne [email protected]
npm info installOne [email protected]
npm info installOne [email protected]
npm info preinstall [email protected]
npm info build /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser/node_modules/node-expat/node_modules/bindings
npm info linkStuff [email protected]
npm info install [email protected]
npm info postinstall [email protected]
npm info preinstall [email protected]
npm info attempt registry request try #1 at 15:58:29
npm http request GET https://registry.npmjs.org/ms
npm info preinstall [email protected]
npm info build /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser/node_modules/node-expat/node_modules/nan
npm info linkStuff [email protected]
npm info install [email protected]
npm info postinstall [email protected]
npm http 304 https://registry.npmjs.org/ms
npm info install [email protected] into /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser/node_modules/node-expat/node_modules/debug
npm info installOne [email protected]
npm info preinstall [email protected]
npm info build /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser/node_modules/node-expat/node_modules/debug/node_modules/ms
npm info linkStuff [email protected]
npm info install [email protected]
npm info postinstall [email protected]
npm info build /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser/node_modules/node-expat/node_modules/debug
npm info linkStuff [email protected]
npm info install [email protected]
npm info postinstall [email protected]
npm info preinstall [email protected]
npm info build /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser/node_modules/node-expat/node_modules/iconv
npm info linkStuff [email protected]
npm info install [email protected]

> [email protected] install /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser/node_modules/node-expat/node_modules/iconv
> node-gyp rebuild

gyp info it worked if it ends with ok
gyp info using [email protected]
gyp info using [email protected] | linux | x64
gyp info spawn python
gyp info spawn args [ '/usr/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'make',
gyp info spawn args   '-I',
gyp info spawn args   '/tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser/node_modules/node-expat/node_modules/iconv/build/config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/usr/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/home/mdesales/.node-gyp/0.10.33/common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=/home/mdesales/.node-gyp/0.10.33',
gyp info spawn args   '-Dmodule_root_dir=/tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser/node_modules/node-expat/node_modules/iconv',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'build',
gyp info spawn args   '-Goutput_dir=.' ]
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
make: Entering directory `/tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser/node_modules/node-expat/node_modules/iconv/build'
  CC(target) Release/obj.target/libiconv/deps/libiconv/lib/iconv.o
  AR(target) Release/obj.target/iconv.a
  COPY Release/iconv.a
  CXX(target) Release/obj.target/iconv/src/binding.o
  SOLINK_MODULE(target) Release/obj.target/iconv.node
  SOLINK_MODULE(target) Release/obj.target/iconv.node: Finished
  COPY Release/iconv.node
make: Leaving directory `/tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser/node_modules/node-expat/node_modules/iconv/build'
gyp info ok 
npm info postinstall [email protected]
npm info build /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser/node_modules/node-expat
npm info linkStuff [email protected]
npm info install [email protected]

> [email protected] install /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser/node_modules/node-expat
> node-gyp rebuild

gyp info it worked if it ends with ok
gyp info using [email protected]
gyp info using [email protected] | linux | x64
gyp info spawn python
gyp info spawn args [ '/usr/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'make',
gyp info spawn args   '-I',
gyp info spawn args   '/tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser/node_modules/node-expat/build/config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/usr/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/home/mdesales/.node-gyp/0.10.33/common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=/home/mdesales/.node-gyp/0.10.33',
gyp info spawn args   '-Dmodule_root_dir=/tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser/node_modules/node-expat',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'build',
gyp info spawn args   '-Goutput_dir=.' ]
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
make: Entering directory `/tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser/node_modules/node-expat/build'
  CC(target) Release/obj.target/expat/deps/libexpat/lib/xmlparse.o
  CC(target) Release/obj.target/expat/deps/libexpat/lib/xmltok.o
../deps/libexpat/lib/xmltok.c:471:1: warning: missing initializer for field ‘isName2’ of ‘const struct normal_encoding’ [-Wmissing-field-initializers]
 };
 ^
../deps/libexpat/lib/xmltok.c:186:21: note: ‘isName2’ declared here
   int (PTRFASTCALL *isName2)(const ENCODING *, const char *);
                     ^
../deps/libexpat/lib/xmltok.c:484:1: warning: missing initializer for field ‘isName2’ of ‘const struct normal_encoding’ [-Wmissing-field-initializers]
 };
 ^
../deps/libexpat/lib/xmltok.c:186:21: note: ‘isName2’ declared here
   int (PTRFASTCALL *isName2)(const ENCODING *, const char *);
                     ^
../deps/libexpat/lib/xmltok.c:504:1: warning: missing initializer for field ‘isName2’ of ‘const struct normal_encoding’ [-Wmissing-field-initializers]
 };
 ^
../deps/libexpat/lib/xmltok.c:186:21: note: ‘isName2’ declared here
   int (PTRFASTCALL *isName2)(const ENCODING *, const char *);
                     ^
../deps/libexpat/lib/xmltok.c:517:1: warning: missing initializer for field ‘isName2’ of ‘const struct normal_encoding’ [-Wmissing-field-initializers]
 };
 ^
../deps/libexpat/lib/xmltok.c:186:21: note: ‘isName2’ declared here
   int (PTRFASTCALL *isName2)(const ENCODING *, const char *);
                     ^
../deps/libexpat/lib/xmltok.c:730:1: warning: missing initializer for field ‘isName2’ of ‘const struct normal_encoding’ [-Wmissing-field-initializers]
 };
 ^
../deps/libexpat/lib/xmltok.c:186:21: note: ‘isName2’ declared here
   int (PTRFASTCALL *isName2)(const ENCODING *, const char *);
                     ^
../deps/libexpat/lib/xmltok.c:749:1: warning: missing initializer for field ‘isName2’ of ‘const struct normal_encoding’ [-Wmissing-field-initializers]
 };
 ^
../deps/libexpat/lib/xmltok.c:186:21: note: ‘isName2’ declared here
   int (PTRFASTCALL *isName2)(const ENCODING *, const char *);
                     ^
../deps/libexpat/lib/xmltok.c:762:1: warning: missing initializer for field ‘isName2’ of ‘const struct normal_encoding’ [-Wmissing-field-initializers]
 };
 ^
../deps/libexpat/lib/xmltok.c:186:21: note: ‘isName2’ declared here
   int (PTRFASTCALL *isName2)(const ENCODING *, const char *);
                     ^
../deps/libexpat/lib/xmltok.c:775:1: warning: missing initializer for field ‘isName2’ of ‘const struct normal_encoding’ [-Wmissing-field-initializers]
 };
 ^
../deps/libexpat/lib/xmltok.c:186:21: note: ‘isName2’ declared here
   int (PTRFASTCALL *isName2)(const ENCODING *, const char *);
                     ^
../deps/libexpat/lib/xmltok.c:871:1: warning: missing initializer for field ‘isName2’ of ‘const struct normal_encoding’ [-Wmissing-field-initializers]
 };
 ^
../deps/libexpat/lib/xmltok.c:186:21: note: ‘isName2’ declared here
   int (PTRFASTCALL *isName2)(const ENCODING *, const char *);
                     ^
../deps/libexpat/lib/xmltok.c:890:1: warning: missing initializer for field ‘isName2’ of ‘const struct normal_encoding’ [-Wmissing-field-initializers]
 };
 ^
../deps/libexpat/lib/xmltok.c:186:21: note: ‘isName2’ declared here
   int (PTRFASTCALL *isName2)(const ENCODING *, const char *);
                     ^
  CC(target) Release/obj.target/expat/deps/libexpat/lib/xmlrole.o
  AR(target) Release/obj.target/deps/libexpat/libexpat.a
  COPY Release/libexpat.a
  CXX(target) Release/obj.target/node_expat/node-expat.o
  SOLINK_MODULE(target) Release/obj.target/node_expat.node
  SOLINK_MODULE(target) Release/obj.target/node_expat.node: Finished
  COPY Release/node_expat.node
make: Leaving directory `/tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser/node_modules/node-expat/build'
gyp info ok 
npm info postinstall [email protected]
npm info build /tmp/node_modules/@servicesplatform-node/sp-core/node_modules/node-pom-parser
npm info linkStuff [email protected]
npm info install [email protected]
npm info postinstall [email protected]
npm info build /tmp/node_modules/@servicesplatform-node/sp-core
npm info linkStuff @servicesplatform-node/[email protected]
npm info install @servicesplatform-node/[email protected]
npm info postinstall @servicesplatform-node/[email protected]
@servicesplatform-node/[email protected] node_modules/@servicesplatform-node/sp-core
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected])
└── [email protected] ([email protected], [email protected])
npm info ok 

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment