如何在Ubuntu上安装appium?

时间:2015-11-12 20:17:57

标签: node.js homebrew appium linuxbrew

我在Ubuntu上安装appium时遇到问题。我尝试了正常的apt-get安装方式,发现我不应该这样做。所以我从apt-get卸载了node和appium,并尝试了这些线程中列出的指令的变体

How to setup Appium in Ubuntu for android

How to install and run appium in linux?

我做了以下

  1. 安装rvm

    \curl -sSL https://get.rvm.io | bash -s stable --ruby

  2. 使用rvm

    安装ruby

    rvm install 2.2.3

  3. 使我的shell成为终端模拟器选项中的登录shell(我使用的是终结者,而不是常规终端)当我试图运行时,rvm表示这样做而不是rvm --default use 2.2.3 rvm - 默认。安装rvm时安装的ruby是2.2.1,所以此时我使用的是Ruby的2.2.1。

  4. 从其他问题线程安装相关软件包。我这样做是因为另一个线程做到了这一点。

    sudo apt-get install build-essential curl m4 texinfo libbz2-dev libcurl4-openssl-dev libexpat-dev libncurses-dev zlib1g-dev

  5. 从这里安装Linux自制程序https://github.com/Homebrew/linuxbrew

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/linuxbrew/go/install)"

  6. 让Linux自制并运行

    brew doctor

    brew install git(我不得不这样做,因为酿酒医生说我的git太老了)

  7. 安装节点的依赖包。我不得不这样做,因为当我试图运行brew install node时,它失败了一个关于丢失头文件的编译错误。当我用Google搜索该文件名时,有人提到该文件所需的包

    sudo apt-get install libx11-dev

  8. 使用brew安装gcc。我不得不这样做,因为在安装软件包后尝试brew install node后我得到了进一步的编译错误。我在homebrew github https://github.com/Homebrew/linuxbrew/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+node上查找了节点的bug,这个bug https://github.com/Homebrew/linuxbrew/issues/597说用gcc 5安装节点。当我尝试那个命令时,它说我的gcc太旧了(它是4.6)并使用brew安装gcc5。

    brew install gcc

  9. 安装节点

    brew install node --cc=gcc-5

  10. 此时安装了brew和节点。然后我尝试安装appium。无论是全局还是非全局,他们都失败了,这是一组巨大的编译错误。 (我不确定如何使stackoverflow只是将代码作为原始文本)。当然,在这一点上,我在我的智慧结束时,我不知道如何正确地编译节点appium。我不确定如何阅读这些编译错误并找出其真正的根本原因。我将在节点和appium上提交一个错误并将其粘贴回来。任何帮助将不胜感激。

    username@redacted:~$ npm install -g appium
    npm WARN optional dep failed, continuing udidetect@1.0.7
    npm WARN engine xmlbuilder@2.2.1: wanted: {"node":"0.8.x || 0.10.x"} (current: {"node":"4.2.1","npm":"2.14.7"})
    
    > bufferutil@1.1.0 install /home/username/.linuxbrew/lib/node_modules/appium/node_modules/ws/node_modules/bufferutil
    > node-gyp rebuild
    
    make: Entering directory `/home/username/.linuxbrew/lib/node_modules/appium/node_modules/ws/node_modules/bufferutil/build'
      CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
    In file included from ../src/bufferutil.cc:16:0:
    ../node_modules/nan/nan.h:261: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:256: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:661:13: error: 'node::smalloc' has not been declared
         , node::smalloc::FreeCallback callback
                 ^
    ../node_modules/nan/nan.h:661: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:665:50: error: 'callback' was not declared in this scope
             v8::Isolate::GetCurrent(), data, length, callback, hint);
                                                      ^
    ../node_modules/nan/nan.h:665: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:672: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 ../src/bufferutil.cc:10:0:
    /home/username/.node-gyp/4.2.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/username/.node-gyp/4.2.1/include/node/node_buffer.h:31:40: note:   conversion of argument 3 would be ill-formed:
    In file included from ../src/bufferutil.cc:16:0:
    ../node_modules/nan/nan.h:672: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 ../src/bufferutil.cc:10:0:
    /home/username/.node-gyp/4.2.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/username/.node-gyp/4.2.1/include/node/node_buffer.h:43:40: note:   conversion of argument 2 would be ill-formed:
    In file included from ../src/bufferutil.cc:16:0:
    ../node_modules/nan/nan.h:672: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:676: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:683:12: error: 'Use' is not a member of 'node::Buffer'
         return node::Buffer::Use(v8::Isolate::GetCurrent(), data, size);
                ^
    make: *** [Release/obj.target/bufferutil/src/bufferutil.o] Error 1
    make: Leaving directory `/home/username/.linuxbrew/lib/node_modules/appium/node_modules/ws/node_modules/bufferutil/build'
    gyp ERR! build error 
    gyp ERR! stack Error: `make` failed with exit code: 2
    gyp ERR! stack     at ChildProcess.onExit (/home/username/.linuxbrew/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270: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 3.13.0-66-generic
    gyp ERR! command "/home/username/.linuxbrew/Cellar/node/4.2.1/bin/node" "/home/username/.linuxbrew/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
    gyp ERR! cwd /home/username/.linuxbrew/lib/node_modules/appium/node_modules/ws/node_modules/bufferutil
    gyp ERR! node -v v4.2.1
    gyp ERR! node-gyp -v v3.0.3
    gyp ERR! not ok 
    
    > utf-8-validate@1.1.0 install /home/username/.linuxbrew/lib/node_modules/appium/node_modules/ws/node_modules/utf-8-validate
    > node-gyp rebuild
    
    make: Entering directory `/home/username/.linuxbrew/lib/node_modules/appium/node_modules/ws/node_modules/utf-8-validate/build'
      CXX(target) Release/obj.target/validation/src/validation.o
    In file included from ../src/validation.cc:15:0:
    ../node_modules/nan/nan.h:261: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:256: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:661:13: error: 'node::smalloc' has not been declared
         , node::smalloc::FreeCallback callback
                 ^
    ../node_modules/nan/nan.h:661: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:665:50: error: 'callback' was not declared in this scope
             v8::Isolate::GetCurrent(), data, length, callback, hint);
                                                      ^
    ../node_modules/nan/nan.h:665: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:672: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 ../src/validation.cc:10:0:
    /home/username/.node-gyp/4.2.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/username/.node-gyp/4.2.1/include/node/node_buffer.h:31:40: note:   conversion of argument 3 would be ill-formed:
    In file included from ../src/validation.cc:15:0:
    ../node_modules/nan/nan.h:672: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 ../src/validation.cc:10:0:
    /home/username/.node-gyp/4.2.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/username/.node-gyp/4.2.1/include/node/node_buffer.h:43:40: note:   conversion of argument 2 would be ill-formed:
    In file included from ../src/validation.cc:15:0:
    ../node_modules/nan/nan.h:672: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:676: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:683:12: error: 'Use' is not a member of 'node::Buffer'
         return node::Buffer::Use(v8::Isolate::GetCurrent(), data, size);
                ^
    make: *** [Release/obj.target/validation/src/validation.o] Error 1
    make: Leaving directory `/home/username/.linuxbrew/lib/node_modules/appium/node_modules/ws/node_modules/utf-8-validate/build'
    gyp ERR! build error 
    gyp ERR! stack Error: `make` failed with exit code: 2
    gyp ERR! stack     at ChildProcess.onExit (/home/username/.linuxbrew/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270: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 3.13.0-66-generic
    gyp ERR! command "/home/username/.linuxbrew/Cellar/node/4.2.1/bin/node" "/home/username/.linuxbrew/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
    gyp ERR! cwd /home/username/.linuxbrew/lib/node_modules/appium/node_modules/ws/node_modules/utf-8-validate
    gyp ERR! node -v v4.2.1
    gyp ERR! node-gyp -v v3.0.3
    gyp ERR! not ok 
    npm WARN optional dep failed, continuing bufferutil@1.1.0
    npm WARN optional dep failed, continuing utf-8-validate@1.1.0
    
    > utf-8-validate@1.2.1 install /home/username/.linuxbrew/lib/node_modules/appium/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/utf-8-validate
    > node-gyp rebuild
    
    make: Entering directory `/home/username/.linuxbrew/lib/node_modules/appium/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/utf-8-validate/build'
      CXX(target) Release/obj.target/validation/src/validation.o
      SOLINK_MODULE(target) Release/obj.target/validation.node
      COPY Release/validation.node
    make: Leaving directory `/home/username/.linuxbrew/lib/node_modules/appium/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/utf-8-validate/build'
    
    > bufferutil@1.2.1 install /home/username/.linuxbrew/lib/node_modules/appium/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/bufferutil
    > node-gyp rebuild
    
    make: Entering directory `/home/username/.linuxbrew/lib/node_modules/appium/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/bufferutil/build'
      CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
      SOLINK_MODULE(target) Release/obj.target/bufferutil.node
      COPY Release/bufferutil.node
    make: Leaving directory `/home/username/.linuxbrew/lib/node_modules/appium/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/bufferutil/build'
    
    > utf-8-validate@1.2.1 install /home/username/.linuxbrew/lib/node_modules/appium/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/utf-8-validate
    > node-gyp rebuild
    
    make: Entering directory `/home/username/.linuxbrew/lib/node_modules/appium/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/utf-8-validate/build'
      CXX(target) Release/obj.target/validation/src/validation.o
      SOLINK_MODULE(target) Release/obj.target/validation.node
      COPY Release/validation.node
    make: Leaving directory `/home/username/.linuxbrew/lib/node_modules/appium/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/utf-8-validate/build'
    
    > bufferutil@1.2.1 install /home/username/.linuxbrew/lib/node_modules/appium/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/bufferutil
    > node-gyp rebuild
    
    make: Entering directory `/home/username/.linuxbrew/lib/node_modules/appium/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/bufferutil/build'
      CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
      SOLINK_MODULE(target) Release/obj.target/bufferutil.node
      COPY Release/bufferutil.node
    make: Leaving directory `/home/username/.linuxbrew/lib/node_modules/appium/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/bufferutil/build'
    npm WARN engine hawk@0.10.2: wanted: {"node":"0.8.x"} (current: {"node":"4.2.1","npm":"2.14.7"})
    npm WARN engine cryptiles@0.1.3: wanted: {"node":"0.8.x"} (current: {"node":"4.2.1","npm":"2.14.7"})
    npm WARN engine sntp@0.1.4: wanted: {"node":"0.8.x"} (current: {"node":"4.2.1","npm":"2.14.7"})
    npm WARN engine boom@0.3.8: wanted: {"node":"0.8.x"} (current: {"node":"4.2.1","npm":"2.14.7"})
    npm WARN engine hoek@0.7.6: wanted: {"node":"0.8.x"} (current: {"node":"4.2.1","npm":"2.14.7"})
    npm WARN peerDependencies The peer dependency continuation-local-storage@~3 included from cls-bluebird will no
    npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency 
    npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.
    npm WARN peerDependencies The peer dependency bluebird@>=1.0.3 included from cls-bluebird will no
    npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency 
    npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.
    /
    > appium-chromedriver@2.3.2 install /home/username/.linuxbrew/lib/node_modules/appium/node_modules/appium-chromedriver
    > node install-npm.js
    
    info Chromedriver Install Opening temp file to write chromedriver_linux64 to...
    info Chromedriver Install Downloading http://chromedriver.storage.googleapis.com/2.18/chromedriver_linux64.zip...
    info Chromedriver Install Writing binary content to /tmp/1151012-17037-1mkrlkq/chromedriver_linux64.zip...
    info Chromedriver Install Extracting /tmp/1151012-17037-1mkrlkq/chromedriver_linux64.zip to /tmp/1151012-17037-1mkrlkq/chromedriver_linux64
    info Chromedriver Install Creating /home/username/.linuxbrew/lib/node_modules/appium/node_modules/appium-chromedriver/chromedriver/linux...
    info Chromedriver Install Copying unzipped binary, reading from /tmp/1151012-17037-1mkrlkq/chromedriver_linux64/chromedriver...
    info Chromedriver Install Writing to /home/username/.linuxbrew/lib/node_modules/appium/node_modules/appium-chromedriver/chromedriver/linux/chromedriver_64...
    info Chromedriver Install /home/username/.linuxbrew/lib/node_modules/appium/node_modules/appium-chromedriver/chromedriver/linux/chromedriver_64 successfully put in place
    /home/username/.linuxbrew/bin/appium -> /home/username/.linuxbrew/lib/node_modules/appium/bin/appium.js
    /home/username/.linuxbrew/bin/appium-doctor -> /home/username/.linuxbrew/lib/node_modules/appium/bin/appium-doctor.js
    /home/username/.linuxbrew/bin/authorize_ios -> /home/username/.linuxbrew/lib/node_modules/appium/bin/authorize-ios.js
    appium@1.4.14 /home/username/.linuxbrew/lib/node_modules/appium
    ├── camel-back-promise@1.0.0
    ├── path@0.11.14
    ├── bufferpack@0.0.6
    ├── vargs@0.1.0
    ├── win-spawn@2.0.0
    ├── stack-trace@0.0.9
    ├── q@1.1.2
    ├── utf7@1.0.0
    ├── uuid-js@0.7.5
    ├── bytes@1.0.0
    ├── xpath@0.0.9
    ├── underscore@1.8.3
    ├── node-idevice@0.1.5
    ├── async@0.9.2
    ├── xmldom@0.1.19
    ├── rimraf@2.2.8
    ├── through@2.3.8
    ├── js2xmlparser2@0.2.0
    ├── bplist-parser@0.1.0
    ├── adm-zip@0.4.7
    ├── node-uuid@1.4.3
    ├── ncp@2.0.0
    ├── colors@1.0.3
    ├── safari-launcher@2.0.5
    ├── es6-promise@2.3.0
    ├── temp@0.8.3 (os-tmpdir@1.0.1)
    ├── difflib@0.2.4 (heap@0.2.6)
    ├── sandboxed-module@2.0.3 (require-like@0.1.2)
    ├── appium-atoms@0.0.5
    ├── which@1.2.0 (is-absolute@0.1.7)
    ├── mv@2.0.3 (ncp@0.6.0)
    ├── touch@0.0.3 (nopt@1.0.10)
    ├── mkdirp@0.5.1 (minimist@0.0.8)
    ├── morgan@1.5.3 (basic-auth@1.0.3, depd@1.0.1, on-finished@2.2.1, debug@2.2.0)
    ├── method-override@2.3.5 (methods@1.1.1, vary@1.0.1, parseurl@1.3.0, debug@2.2.0)
    ├── underscore.string@3.0.3
    ├── bplist-creator@0.0.6 (stream-buffers@2.2.0)
    ├── serve-favicon@2.2.1 (fresh@0.2.4, ms@0.7.1, parseurl@1.3.0, etag@1.6.0)
    ├── date-utils@1.2.17
    ├── glob@4.4.2 (inherits@2.0.1, inflight@1.0.4, once@1.3.2, minimatch@2.0.10)
    ├── npmlog@1.1.0 (ansi@0.3.0, gauge@1.1.0, are-we-there-yet@1.0.4)
    ├── body-parser@1.12.4 (content-type@1.0.1, depd@1.0.1, qs@2.4.2, on-finished@2.2.1, raw-body@2.0.2, iconv-lite@0.4.8, debug@2.2.0, type-is@1.6.9)
    ├── express@4.11.2 (utils-merge@1.0.0, merge-descriptors@0.0.2, cookie@0.1.2, fresh@0.2.4, media-typer@0.3.0, vary@1.0.1, finalhandler@0.3.3, range-parser@1.0.3, content-disposition@0.5.0, serve-static@1.8.1, methods@1.1.1, escape-html@1.0.1, cookie-signature@1.0.5, parseurl@1.3.0, path-to-regexp@0.1.3, depd@1.0.1, qs@2.3.3, on-finished@2.2.1, debug@2.1.3, send@0.11.1, proxy-addr@1.0.8, etag@1.5.1, type-is@1.5.7, accepts@1.2.13)
    ├── winston@0.9.0 (cycle@1.0.3, eyes@0.1.8, isstream@0.1.2, pkginfo@0.3.1)
    ├── ws@0.7.2 (options@0.0.6, ultron@1.0.2)
    ├── request@2.53.0 (forever-agent@0.5.2, aws-sign2@0.5.0, caseless@0.9.0, form-data@0.2.0, tunnel-agent@0.4.1, oauth-sign@0.6.0, stringstream@0.0.5, isstream@0.1.2, json-stringify-safe@5.0.1, tough-cookie@2.2.0, qs@2.3.3, mime-types@2.0.14, combined-stream@0.0.7, http-signature@0.10.1, bl@0.9.4, hawk@2.3.1)
    ├── longjohn@0.2.9 (source-map-support@0.3.2)
    ├── prompt@0.2.14 (revalidator@0.1.8, pkginfo@0.3.1, read@1.0.7, utile@0.2.1, winston@0.8.3)
    ├── grunt-cli@0.1.13 (resolve@0.3.1, nopt@1.0.10, findup-sync@0.1.3)
    ├── unzip@0.1.11 (setimmediate@1.0.4, readable-stream@1.0.33, pullstream@0.4.1, match-stream@0.0.2, fstream@0.1.31, binary@0.3.0)
    ├── swig@1.4.2 (optimist@0.6.1, uglify-js@2.4.24)
    ├── grunt@0.4.5 (eventemitter2@0.4.14, dateformat@1.0.2-1.2.3, which@1.0.9, async@0.1.22, colors@0.6.2, getobject@0.1.0, lodash@0.9.2, hooker@0.2.3, grunt-legacy-util@0.2.0, exit@0.1.2, coffee-script@1.3.3, iconv-lite@0.2.11, underscore.string@2.2.1, nopt@1.0.10, minimatch@0.2.14, glob@3.1.21, grunt-legacy-log@0.1.2, findup-sync@0.1.3, js-yaml@2.0.5)
    ├── md5calculator@0.0.3 (crypto@0.0.3, elementtree@0.1.3, unzip@0.1.8)
    ├── binary-cookies@0.1.1 (path@0.4.10, async@0.2.10, colors@0.6.2, underscore@1.4.4, argparse@0.1.16, winston@0.6.2)
    ├── appium-uiauto@1.10.10 (argparse@0.1.16, winston@0.8.3)
    ├── socket.io@1.3.7 (debug@2.1.0, has-binary-data@0.1.3, socket.io-parser@2.2.4, socket.io-adapter@0.3.1, engine.io@1.5.4, socket.io-client@1.3.7)
    ├── namp@0.2.25 (highlight.js@8.9.1)
    ├── appium-adb@1.7.5 (underscore@1.6.0, q@1.0.1, ncp@0.5.1, appium-support@0.0.3, winston@0.7.3)
    ├── argparse@1.0.3 (sprintf-js@1.0.3, lodash@3.10.1)
    ├── appium-support@1.1.2 (bluebird@2.10.2, lodash@3.10.1)
    ├── xml2js@0.4.15 (sax@1.1.4, xmlbuilder@4.0.0)
    ├── plist@1.1.0 (util-deprecate@1.0.0, base64-js@0.0.6, xmlbuilder@2.2.1)
    ├── appium-instruments@2.0.6 (underscore@1.7.0, winston@0.8.3, appium-support@1.0.3)
    ├── appium-xcode@2.0.5 (q@1.4.1, denodeify@1.2.1, npmlog@1.2.1, source-map-support@0.2.10, asyncbox@2.3.1, lodash@3.10.1, babel-runtime@5.5.5)
    ├── node-simctl@2.1.0 (npmlog@1.2.1, source-map-support@0.2.10, appium-logger@1.1.7, es6-mapify@1.0.0, asyncbox@2.3.1, babel-runtime@5.5.5, teen_process@1.5.1)
    └── appium-chromedriver@2.3.2 (is-os@1.0.0, q@1.4.1, ps-node@0.0.4, rimraf@2.4.3, request-promise@0.4.3, source-map-support@0.3.3, appium-logger@1.1.7, request@2.65.0, asyncbox@2.3.1, lodash@3.10.1, babel-runtime@5.5.5, appium-jsonwp-proxy@1.4.1, teen_process@1.5.1)
    username@redacted:~$ 
    
  11. 编辑:有一个我没有考虑的选项,即appium实际安装正确,我不应该担心。当我稍后尝试加载appium时,它似乎加载,虽然我没有尝试将其用于移动测试。我的问题是,如果这个输出确实意味着它正在工作,那就是所有错误的原因。我经历了类似的过程在MacOSX上安装Appium,然后我没有看到所有这些错误。为什么这次安装会出错?是否已安装,但此输出会暴露错误?

4 个答案:

答案 0 :(得分:0)

在我看来,只查看Appium的GIT项目更容易。之后,您可以运行./reset.sh进行设置&amp;验证

答案 1 :(得分:0)

我在安装过程中看到了类似的错误,但mocha android-simple.js传递了{{1}}(使用真实手机)。

答案 2 :(得分:0)

安装步骤: 我的系统是:3.19.0-58-generic#64~14.04.1-Ubuntu

请在开始此史诗般的旅程之前下载并安装Android SDK,Java JDK

将以下内容添加到~./bashrc

ANDROID_HOME=/home/myloc/Android/Sdk 
export PATH=$PATH:/home/myloc/Android/Sdk/tools

PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig:/usr/lib64/pkgconfig:/usr/lib/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig:$PKG_CONFIG_PATH

#Setup linux brew 
export PATH="$HOME/.linuxbrew/bin:$PATH"
export MANPATH="$HOME/.linuxbrew/share/man:$MANPATH" 
export INFOPATH="$HOME/.linuxbrew/share/info:$INFOPATH"

这些是您必须按顺序安装的一些项目:ruby - &gt; linuxbrew - &gt;节点 - &gt; appium

$ sudo apt-get install build-essential curl git m4 ruby texinfo libbz2-dev libcurl4-openssl-dev libexpat-dev libncurses-dev zlib1g-dev
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/linuxbrew/go/install)"
$ brew update
$ brew install node
$ brew link node
$ npm install -g node-gyp

从github repo签出Appium(或标记版本,我的标签后直接来自主版:2016年4月9日的1.5.1):

$ git clone https://github.com/appium/appium.git 
$ cd appium_checkout_from_git_location
$ npm install

如果gyp rebuild存在问题,请输入以下命令:

$ rm -rf ~/.node_gyp
$ cd appium_checkout_from_git
$ npm install
$ npm rebuild

如果这些仍然不能正常工作,请输入以下命令来帮助您自己缩小已检出的git仓库中的任何问题:

$ node bin/appium-doctor.js --dev

希望这有助于某人,,特别是因为自Appium 1.5版以来reset.sh脚本已被删除。

我的参考文献:

  1. https://askubuntu.com/questions/729047/how-to-install-and-configure-appium-in-ubuntu (Mark Kirby的回答,我没有足够的积分来支持他:()
  2. common.gypi not found error in node.js     (Jedininjaster的回答,我没有足够的积分来支持他     太)

答案 3 :(得分:0)

如果您通过SUDO安装,请记住Appium抛出错误。所以通过npm安装Appium,通过npm安装安装Appium,你需要node.js和npm 0.12或更高版本。  确保您没有使用sudo安装Node或Appium。  要在没有sudo的情况下安装node.js和appium,我们使用linuxbrew。 以下是在Ubuntu 14.04OS上安装Appium的详细步骤。

要安装linuxbrew,这些是依赖项 Ruby 1.8.6或更新版本 GCC 4.2或更新版本 Git 1.7.12.4或更新版本 Linux 2.6.16或更高版本 64位x86或32位ARM平台

安装步骤 1.安装Ruby(将命令复制到终端并按回车键)

sudo apt-get install build-essential curl git m4 python-setuptools ruby texinfo libbz2-dev libcurl4-openssl-dev libexpat-dev libncurses-dev zlib1g-dev
  1. 安装Linux Brew :(将命令复制到终端并按回车键)

    ruby​​ -e“$(curl -fsSL https://raw.githubusercontent.com/Homebrew/linuxbrew/go/install)&#34;

  2. 3.设置brew的路径 在终端输入sudo gedit.bashrc并将以下内容复制到.bashrc文件中.export PATH =&#34; $ HOME / .linuxbrew / bin:$ PATH&#34; export MANPATH =&#34; $ HOME / .linuxbrew /分享/男人:$ MANPATH&#34;导出INFOPATH =&#34; $ HOME / .linuxbrew / share / info:$ INFOPATH&#34;

    4.安装节点:打开新终端并复制命令并按Enter键

    brew update
    brew install node
    brew link node
    

    安装节点时可能会遇到如下错误:

    ==> make install
    Last 15 lines from /home/tsepak/.cache/Homebrew/Logs/node/02.make:
    ../deps/v8/src/base/platform/mutex.h:170:3: error: ‘void v8::operator=(const v8::RecursiveMutex&)’ must be a nonstatic member function
    ../deps/v8/src/base/platform/mutex.h:184:9: error: ‘LazyStaticInstance’ does not name a type
    ../deps/v8/src/base/platform/mutex.h:202:17: error: template declaration of ‘LockGuard final’
    ../deps/v8/src/base/platform/mutex.h:203:2: error: expected primary-expression before ‘public’
    ../deps/v8/src/base/platform/mutex.h:203:2: error: expected ‘}’ before ‘public’
    ../deps/v8/src/base/platform/mutex.h:205:14: error: declaration of ‘~LockGuard’ as non-member
    ../deps/v8/src/base/platform/mutex.h:207:2: error: expected unqualified-id before ‘private’
    ../deps/v8/src/base/platform/mutex.h:210:3: error: expected unqualified-id before ‘const’
    ../deps/v8/src/base/platform/mutex.h:210:3: error: expected ‘)’ before ‘const’
    ../deps/v8/src/base/platform/mutex.h:210:3: error: ‘void operator=(const LockGuard&)’ must be a nonstatic member function
    ../deps/v8/src/base/platform/mutex.h:211:1: error: expected declaration before ‘}’ token
    make[1]: *** [/tmp/node20160122-19291-3znamd/node-v5.4.1/out/Release/obj.target/v8_libplatform/deps/v8/src/libplatform/default-platform.o] Error 1
    make[1]: *** Waiting for unfinished jobs....
    make[1]: Leaving directory `/tmp/node20160122-19291-3znamd/node-v5.4.1/out’
    make: *** [node] Error 2
    READTHIS:https://github.com/Linuxbrew/linuxbrew/blob/master/share/doc/homebrew/Troubleshooting.md#troubleshooting
    

    *******这是一个编译器问题。如果您尝试使用不兼容的编译器进行构建,您将面临上述错误,这是Git中的一个未解决的问题。请尝试以下  将gcc更新为4.9 或尝试 brew安装节点--cc = gcc-5 ****

    即使这样做也可以卸载linuxbrew并从新的开始。

    5.最终安装Appium:Appium通过npm安装 有两种方法可以安装npm软件包:本地或全局。 对于appium,我们需要全局安装npm软件包。

    npm install -g appium
    

    6.Let&#39; s检查安装是否成功。 打开终端并输入&#34; appium&#34;并按Enter键 appium

    您应该在终端

    中看到类似的内容
    info: Welcome to Appium v1.4.12(REV 8db2d00b9afcf2c50a09a80a2e8d56b05a902caf)
    info: Appium REST http interface listener started on 0.0.0.0:4723
    info: Console LogLevel: debug