Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

npm install pcap fails (node v5.4.1, npm 3.5.3) #196

Closed
rgrannell1 opened this issue Jan 17, 2016 · 24 comments
Closed

npm install pcap fails (node v5.4.1, npm 3.5.3) #196

rgrannell1 opened this issue Jan 17, 2016 · 24 comments

Comments

@rgrannell1
Copy link

I tried running both of these commands:

npm install pcap --save

// package.json dependency
"pcap": "mranney/node_pcap"
> socketwatcher@0.2.1 install /home/ryan/.nvm/versions/node/v5.4.1/lib/node_modules/pcap/node_modules/socketwatcher
> node-gyp rebuild

make: Entering directory '/home/ryan/.nvm/versions/node/v5.4.1/lib/node_modules/pcap/node_modules/socketwatcher/build'
  CXX(target) Release/obj.target/socketwatcher/socket_watcher.o
In file included from ../node_modules/nan/nan_new.h:190:0,
                 from ../node_modules/nan/nan.h:80,
                 from ../socket_watcher.hpp:8,
                 from ../socket_watcher.cpp:5:
../node_modules/nan/nan_implementation_12_inl.h: In static member function ‘static NanIntern::FactoryBase<v8::Signature>::return_t NanIntern::Factory<v8::Signature>::New(NanIntern::Factory<v8::Signature>::FTH, int, NanIntern::Factory<v8::Signature>::FTH*)’:
../node_modules/nan/nan_implementation_12_inl.h:181:76: error: no matching function for call to ‘v8::Signature::New(v8::Isolate*, NanIntern::Factory<v8::Signature>::FTH&, int&, NanIntern::Factory<v8::Signature>::FTH*&)’
   return v8::Signature::New(v8::Isolate::GetCurrent(), receiver, argc, argv);
                                                                            ^
In file included from /home/ryan/.node-gyp/5.4.1/include/node/node.h:42:0,
                 from ../node_modules/nan/nan.h:24,
                 from ../socket_watcher.hpp:8,
                 from ../socket_watcher.cpp:5:
/home/ryan/.node-gyp/5.4.1/include/node/v8.h:4674:27: note: candidate: static v8::Local<v8::Signature> v8::Signature::New(v8::Isolate*, v8::Local<v8::FunctionTemplate>)
   static Local<Signature> New(
                           ^
/home/ryan/.node-gyp/5.4.1/include/node/v8.h:4674:27: note:   candidate expects 2 arguments, 4 provided
In file included from ../socket_watcher.hpp:8:0,
                 from ../socket_watcher.cpp:5:
../node_modules/nan/nan.h: At global scope:
../node_modules/nan/nan.h:171:25: error: redefinition of ‘template<class T> v8::Local<T> _NanEnsureLocal(v8::Local<T>)’
 NAN_INLINE v8::Local<T> _NanEnsureLocal(v8::Local<T> val) {
                         ^
../node_modules/nan/nan.h:166:25: note: ‘template<class T> v8::Local<T> _NanEnsureLocal(v8::Handle<T>)’ previously declared here
 NAN_INLINE v8::Local<T> _NanEnsureLocal(v8::Handle<T> val) {
                         ^
../node_modules/nan/nan.h:564:13: error: ‘node::smalloc’ has not been declared
     , node::smalloc::FreeCallback callback
             ^
../node_modules/nan/nan.h:564:35: error: expected ‘,’ or ‘...’ before ‘callback’
     , node::smalloc::FreeCallback callback
                                   ^
../node_modules/nan/nan.h: In function ‘v8::Local<v8::Object> NanNewBufferHandle(char*, size_t, int)’:
../node_modules/nan/nan.h:568:50: error: ‘callback’ was not declared in this scope
         v8::Isolate::GetCurrent(), data, length, callback, hint);
                                                  ^
../node_modules/nan/nan.h:568:60: error: ‘hint’ was not declared in this scope
         v8::Isolate::GetCurrent(), data, length, callback, hint);
                                                            ^
../node_modules/nan/nan.h: In function ‘v8::Local<v8::Object> NanNewBufferHandle(const char*, uint32_t)’:
../node_modules/nan/nan.h:575:67: error: no matching function for call to ‘New(v8::Isolate*, const char*&, uint32_t&)’
     return node::Buffer::New(v8::Isolate::GetCurrent(), data, size);
                                                                   ^
In file included from ../node_modules/nan/nan.h:25:0,
                 from ../socket_watcher.hpp:8,
                 from ../socket_watcher.cpp:5:
/home/ryan/.node-gyp/5.4.1/include/node/node_buffer.h:31:40: note: candidate: v8::MaybeLocal<v8::Object> node::Buffer::New(v8::Isolate*, v8::Local<v8::String>, node::encoding) <near match>
 NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
                                        ^
/home/ryan/.node-gyp/5.4.1/include/node/node_buffer.h:31:40: note:   conversion of argument 3 would be ill-formed:
In file included from ../socket_watcher.hpp:8:0,
                 from ../socket_watcher.cpp:5:
../node_modules/nan/nan.h:575:67: error: invalid conversion from ‘uint32_t {aka unsigned int}’ to ‘node::encoding’ [-fpermissive]
     return node::Buffer::New(v8::Isolate::GetCurrent(), data, size);
                                                                   ^
In file included from ../node_modules/nan/nan.h:25:0,
                 from ../socket_watcher.hpp:8,
                 from ../socket_watcher.cpp:5:
/home/ryan/.node-gyp/5.4.1/include/node/node_buffer.h:43:40: note: candidate: v8::MaybeLocal<v8::Object> node::Buffer::New(v8::Isolate*, char*, size_t) <near match>
 NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
                                        ^
/home/ryan/.node-gyp/5.4.1/include/node/node_buffer.h:43:40: note:   conversion of argument 2 would be ill-formed:
In file included from ../socket_watcher.hpp:8:0,
                 from ../socket_watcher.cpp:5:
../node_modules/nan/nan.h:575:67: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
     return node::Buffer::New(v8::Isolate::GetCurrent(), data, size);
                                                                   ^
../node_modules/nan/nan.h: In function ‘v8::Local<v8::Object> NanNewBufferHandle(uint32_t)’:
../node_modules/nan/nan.h:579:29: error: could not convert ‘node::Buffer::New(v8::Isolate::GetCurrent(), ((size_t)size))’ from ‘v8::MaybeLocal<v8::Object>’ to ‘v8::Local<v8::Object>’
     return node::Buffer::New(v8::Isolate::GetCurrent(), size);
                             ^
../node_modules/nan/nan.h: In function ‘v8::Local<v8::Object> NanBufferUse(char*, uint32_t)’:
../node_modules/nan/nan.h:586:12: error: ‘Use’ is not a member of ‘node::Buffer’
     return node::Buffer::Use(v8::Isolate::GetCurrent(), data, size);
            ^
socketwatcher.target.mk:90: recipe for target 'Release/obj.target/socketwatcher/socket_watcher.o' failed
make: *** [Release/obj.target/socketwatcher/socket_watcher.o] Error 1
make: Leaving directory '/home/ryan/.nvm/versions/node/v5.4.1/lib/node_modules/pcap/node_modules/socketwatcher/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/home/ryan/.nvm/versions/node/v5.4.1/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:276:23)
gyp ERR! stack     at emitTwo (events.js:87:13)
gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Linux 4.2.0-23-generic
gyp ERR! command "/home/ryan/.nvm/versions/node/v5.4.1/bin/node" "/home/ryan/.nvm/versions/node/v5.4.1/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/ryan/.nvm/versions/node/v5.4.1/lib/node_modules/pcap/node_modules/socketwatcher
gyp ERR! node -v v5.4.1
gyp ERR! node-gyp -v v3.2.1
gyp ERR! not ok 
/home/ryan/.nvm/versions/node/v5.4.1/lib
└── (empty)

npm ERR! Linux 4.2.0-23-generic
npm ERR! argv "/home/ryan/.nvm/versions/node/v5.4.1/bin/node" "/home/ryan/.nvm/versions/node/v5.4.1/bin/npm" "install" "-g" "pcap"
npm ERR! node v5.4.1
npm ERR! npm  v3.5.3
npm ERR! code ELIFECYCLE

npm ERR! socketwatcher@0.2.1 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the socketwatcher@0.2.1 install script 'node-gyp rebuild'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the socketwatcher package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs socketwatcher
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls socketwatcher
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/ryan/Code/pguests/npm-debug.log
npm ERR! code 1

The error is caused by node-gyp trying to build a non-existing dependency socketwatcher@0.2.1, which isn't listed as an available version by npm view socketwatcher ( available versions: 0.1.0, 0.1.1, 0.1.2, 0.2.0, 0.3.0).

I'm eager to try out this library; are there any workarounds I can use to get around this install problem?

Environment:

  • node v5.3.1
  • npm v3.5.3
  • Linux 4.2.0-23-generic (Ubuntu 15.10)

Attached:

npm-debug.txt

@ecaron
Copy link

ecaron commented Jan 17, 2016

Also failed on node v4.2.4, npm v2.14.12, Ubuntu 14.04.3 LTS

I'm digging deeper into socketwatcher. Could be related to #70 or btrask/node-socketwatcher#8.

@ecaron
Copy link

ecaron commented Jan 17, 2016

Looks like commit 29737ce moved socketwatcher from a forked-fork (https://github.com/zerouid/node-socketwatcher) which is where the 0.2.1 came from.

The weirdest part is that it feels like this all worked last week...

@ecaron
Copy link

ecaron commented Jan 18, 2016

This feels like a duplicate of #192. @rgrannell1, do you agree?

@rgrannell1
Copy link
Author

Yes @ecaron, it seems to be the same issue; I would have commented under that issue but I had only read the post, not responses to it.

Just to note, the workaround suggested of using:

npm install https://github.com/mranney/node_pcap.git

fails with the following error:

ryan@ryan-S400CA:~/Code/pguests$ npm install https://github.com/mranney/node_pcap.git

> socketwatcher@0.3.0 install /home/ryan/Code/pguests/node_modules/socketwatcher
> node-gyp rebuild

make: Entering directory '/home/ryan/Code/pguests/node_modules/socketwatcher/build'
  CXX(target) Release/obj.target/socketwatcher/socket_watcher.o
  SOLINK_MODULE(target) Release/obj.target/socketwatcher.node
  COPY Release/socketwatcher.node
make: Leaving directory '/home/ryan/Code/pguests/node_modules/socketwatcher/build'

> pcap@2.0.0 install /home/ryan/Code/pguests/node_modules/pcap
> node-gyp rebuild

make: Entering directory '/home/ryan/Code/pguests/node_modules/pcap/build'
  CXX(target) Release/obj.target/pcap_binding/pcap_binding.o
../pcap_binding.cc:2:23: fatal error: pcap/pcap.h: No such file or directory
compilation terminated.
pcap_binding.target.mk:91: recipe for target 'Release/obj.target/pcap_binding/pcap_binding.o' failed
make: *** [Release/obj.target/pcap_binding/pcap_binding.o] Error 1
make: Leaving directory '/home/ryan/Code/pguests/node_modules/pcap/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/home/ryan/.nvm/versions/node/v5.4.1/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:276:23)
gyp ERR! stack     at emitTwo (events.js:87:13)
gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Linux 4.2.0-23-generic
gyp ERR! command "/home/ryan/.nvm/versions/node/v5.4.1/bin/node" "/home/ryan/.nvm/versions/node/v5.4.1/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/ryan/Code/pguests/node_modules/pcap
gyp ERR! node -v v5.4.1
gyp ERR! node-gyp -v v3.2.1
gyp ERR! not ok 
pguests@1.0.0 /home/ryan/Code/pguests
└── socketwatcher@0.3.0  extraneous

npm WARN enoent ENOENT: no such file or directory, open '/home/ryan/Code/pguests/node_modules/pguests/package.json'
npm ERR! Linux 4.2.0-23-generic
npm ERR! argv "/home/ryan/.nvm/versions/node/v5.4.1/bin/node" "/home/ryan/.nvm/versions/node/v5.4.1/bin/npm" "install" "https://github.com/mranney/node_pcap.git"
npm ERR! node v5.4.1
npm ERR! npm  v3.5.3
npm ERR! code ELIFECYCLE

npm ERR! pcap@2.0.0 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the pcap@2.0.0 install script 'node-gyp rebuild'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the pcap package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs pcap
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls pcap
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/ryan/Code/pguests/npm-debug.log

The error warns about a missing header file pcap/pcap.h.

@cyphunk
Copy link

cyphunk commented Jan 20, 2016

for the pcap.h error install libpcap-dev. Then installing via git works. npm install pcap still fails with various compile errors in socket_watcher.cpp http://pastebin.com/MGvhYkrm

The issue is resolved by this edit that changes socketwatcher dependency url from some branched git (that perhaps resolved a compile issue from the past) back to the central socketwatcher repository:

29737ce

@javahas
Copy link

javahas commented Feb 5, 2016

I have the same issue, did you find solution/workaround?

@cyphunk
Copy link

cyphunk commented Feb 5, 2016

Currently I updated all my code to whatever format is being used almost recently and I'm installing via the commit hash I linked to. https://github.com/cyphunk/snifferjs/blob/master/package.json#L13 With that npm install works fine. Tested with ubuntu 14.04 lts, node 4.2.6 lts npm 2.14.12 node-gyp 3.0.3

@codealchemist
Copy link

This is what worked for me as a full install (including nodejs):

sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe"
sudo dpkg --configure -a && sudo apt-get update && sudo apt-get -y upgrade
sudo aptitude install nodejs
sudo apt-get install libpcap-dev git
npm install https://github.com/mranney/node_pcap.git

I'm on Ubuntu 15.10.
node v4.3.2
npm 2.14.12

Hope it helps someone.
Cheers!

@chux0519
Copy link

chux0519 commented May 25, 2016

like @cyphunk said,

for the pcap.h error install libpcap-dev. Then installing via git works.

on Arch Linux ,node v 4.4.4 npm 2.15.1

sudo pacman -S libpcap

then

npm install https://github.com/mranney/node_pcap.git

it works,Hope it helps someone

@fitzk
Copy link

fitzk commented Jul 12, 2016

npm install https://github.com/mranney/node_pcap.git
worked for me, I'm on

OS X El Capitan
node v5.7.0
nam 3.6.0

however npm install pcap --save did not, just an update

@ralyodio
Copy link

ralyodio commented Jan 7, 2017

fails on mac still.

@megastef
Copy link

megastef commented Jan 9, 2017

@chovy Install worked for me with npm install https://github.com/mranney/node_pcap.git on Mac OS X - you might need C++/Xcode installed to compile the native package. BTW: The npm package was updated 2 years ago, who could publish current master to npm? package.json shows 2.0.0 and npm 2.0.1.

@yycncom
Copy link

yycncom commented Feb 23, 2017

Centos 6.4
node v6.10.0
npm 3.10.0
and
node v4.3.2
npm 2.14.12
after installing libpcap-dev,still don't work!

@ghost
Copy link

ghost commented Mar 22, 2017

Why is this still an issue over a year later? Is this project dead?

@ghost
Copy link

ghost commented Jun 20, 2017

@killerspaz It appears to be. I wanted to use arpjs, but it has this failed dependency.

@ebilling
Copy link

ebilling commented Jul 2, 2017

Installing libpcap-dev worked for me.

sudo apt-get install libpcap-dev

@paulorec
Copy link

thank you @ebilling, it worked for me too.

@ooii
Copy link

ooii commented Oct 2, 2017

Hi

Had issues with installing pcap and npm install https://github.com/mranney/node_pcap.git from @rgrannell1 did it.

@willysys
Copy link

ubuntu 16.04.1
node v8.9.2
sudo apt-get install libpcap-dev
npm install https://github.com/mranney/node_pcap.git

works

@thorizer
Copy link

what about windows?

@wreiske
Copy link

wreiske commented Apr 11, 2019

CentOS 7

yum install libpcap-devel -y

@bariskayar
Copy link

centos 7
yum install libpcap-dev -y
yum install libpcap-devel -y
npm install pcap

@bariskayar
Copy link

bariskayar commented Apr 18, 2019

what about windows?

git clone git://github.com/mranney/node_pcap.git
cd node_pcap
download WpdPack_4_1_2 and extract it in node_pcap

copy WpdPack\Include and WpdPack\Lib folder to node_pcap

change bindings.gyp as below

{
"targets": [
{
"target_name": "pcap_binding",
"sources": [ "pcap_binding.cc", "pcap_session.cc" ],
"include_dirs": [
"Include",
"Lib",
"<!(node -e "require('nan')")"
],
"link_settings": {
"libraries": [
"-l../lib/x64/wpcap"
,"-l../lib/x64/Packet"
,"-lWs2_32"
]
},
'configurations': {
'Release': {
'msvs_settings': {
'VCCLCompilerTool': {
'ExceptionHandling': 2
}
}
}
},
}
]
}

modify pcap_session.cc like below;

mark lines as comment from 212 to 220

    // fixes a previous to-do that was here.
    //if (info.Length() == 6) {
    //    if (info[5]->Int32Value()) {
    //        if (pcap_set_rfmon(session->pcap_handle, 1) != 0) {
    //            Nan::ThrowError(pcap_geterr(session->pcap_handle));
    //            return;
    //        }
    //    }
    //}

change include part, I dont remember some header file as below.
add #include <conio.h>

change line number 343 as below
//int fd = pcap_get_selectable_fd(session->pcap_handle);
int fd = pcap_fileno(session->pcap_handle);

chane line number 405 as below
if (pcap_sendpacket(session->pcap_handle, (u_char *)bufferData, bufferLength) != (int)bufferLength) {

finally
cd node_pcap
node-gyp configure build -arch=x64
node-gyp install

C:\DEV\CaptureJS\node_pcap>node-gyp configure build -arch=x64
gyp info it worked if it ends with ok
gyp info using node-gyp@3.8.0
gyp info using node@8.11.1 | win32 | x64
gyp info spawn c:\python27\python.EXE
gyp info spawn args [ 'C:\Users\baris\AppData\Roaming\npm\node_modules\node-gyp\gyp\gyp_main.py',
gyp info spawn args 'binding.gyp',
gyp info spawn args '-f',
gyp info spawn args 'msvs',
gyp info spawn args '-G',
gyp info spawn args 'msvs_version=2015',
gyp info spawn args '-I',
gyp info spawn args 'C:\DEV\CaptureJS\node_pcap\build\config.gypi',
gyp info spawn args '-I',
gyp info spawn args 'C:\Users\baris\AppData\Roaming\npm\node_modules\node-gyp\addon.gypi',
gyp info spawn args '-I',
gyp info spawn args 'C:\Users\baris\.node-gyp\8.11.1\include\node\common.gypi',
gyp info spawn args '-Dlibrary=shared_library',
gyp info spawn args '-Dvisibility=default',
gyp info spawn args '-Dnode_root_dir=C:\Users\baris\.node-gyp\8.11.1',
gyp info spawn args '-Dnode_gyp_dir=C:\Users\baris\AppData\Roaming\npm\node_modules\node-gyp',
gyp info spawn args '-Dnode_lib_file=C:\Users\baris\.node-gyp\8.11.1\<(target_arch)\node.lib',
gyp info spawn args '-Dmodule_root_dir=C:\DEV\CaptureJS\node_pcap',
gyp info spawn args '-Dnode_engine=v8',
gyp info spawn args '--depth=.',
gyp info spawn args '--no-parallel',
gyp info spawn args '--generator-output',
gyp info spawn args 'C:\DEV\CaptureJS\node_pcap\build',
gyp info spawn args '-Goutput_dir=.' ]
gyp info spawn C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe
gyp info spawn args [ 'build/binding.sln',
gyp info spawn args '/clp:Verbosity=minimal',
gyp info spawn args '/nologo',
gyp info spawn args '/p:Configuration=Release;Platform=x64' ]
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
pcap_binding.cc
pcap_session.cc
c:\dev\capturejs\node_pcap\pcap_session.cc(85): warning C4996: 'Nan::MakeCallback': was declared deprecated [C:\DEV\CaptureJS\node_pcap\build\pcap_binding.vcxproj]
c:\dev\capturejs\node_pcap\node_modules\nan\nan.h(959): note: see declaration of 'Nan::MakeCallback'
Creating library C:\DEV\CaptureJS\node_pcap\build\Release\pcap_binding.lib and object C:\DEV\CaptureJS\node_pcap\build\Release\pcap_binding.exp
Generating code
Finished generating code
pcap_binding.vcxproj -> C:\DEV\CaptureJS\node_pcap\build\Release\pcap_binding.node
gyp info ok

C:\DEV\CaptureJS\node_pcap>node-gyp install
gyp info it worked if it ends with ok
gyp info using node-gyp@3.8.0
gyp info using node@8.11.1 | win32 | x64
gyp http GET https://nodejs.org/download/release/v8.11.1/node-v8.11.1-headers.tar.gz
gyp http 200 https://nodejs.org/download/release/v8.11.1/node-v8.11.1-headers.tar.gz
gyp http GET https://nodejs.org/download/release/v8.11.1/SHASUMS256.txt
gyp http GET https://nodejs.org/download/release/v8.11.1/win-x64/node.lib
gyp http GET https://nodejs.org/download/release/v8.11.1/win-x86/node.lib
gyp http 200 https://nodejs.org/download/release/v8.11.1/SHASUMS256.txt
gyp http 200 https://nodejs.org/download/release/v8.11.1/win-x64/node.lib
gyp http 200 https://nodejs.org/download/release/v8.11.1/win-x86/node.lib
8.11.1
gyp info ok

C:\DEV\CaptureJS\node_pcap>

but it doesn't work.

@mildsunrise
Copy link
Contributor

windows is definitely not supported for now, see #249 (comment). this should be closed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests