代码之家  ›  专栏  ›  技术社区  ›  quantumpotato

在Ubuntu上安装gmake;Cowboy服务器未启动

  •  1
  • quantumpotato  · 技术社区  · 7 年前

    我的erlang cowboy服务器需要 gmake 运行。我可以使用 gmake run 在我的OSX机器上运行服务器。跑步 make run 工作也很好,但警告我应该安装 gmake公司 .

    https://github.com/QuantumProductions/tunnel.git 在我的ubuntu主机上,我试图 使运行 然后得到一个错误。没有可用于的包 gmake公司 . 如何安装 gmake公司

    root@marble-pyramid-1:~/tunnel# apt-get install gmake
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    E: Unable to locate package gmake
    root@marble-pyramid-1:~/tunnel# ls
    erlang.mk  Makefile  oldh  rel  relx.config  src  static  tunnel.d
    root@marble-pyramid-1:~/tunnel# make run
    erlang.mk:24: Please upgrade to GNU Make 4 or later: https://erlang.mk/guide/installation.html
     DEP    cowboy
     DEP    jiffy
    mv: cannot stat ‘/root/tunnel/deps/jiffy/ebin/jiffy.app’: No such file or directory
    make[1]: Entering directory `/root/tunnel/.erlang.mk/rebar'
    ./bootstrap
    No beam files found.
    escript: exception error: undefined function make:files/2
      in function  erl_eval:do_apply/6 (erl_eval.erl, line 569)
      in call from erl_eval:expr/5 (erl_eval.erl, line 243)
      in call from escript:eval_exprs/5 (escript.erl, line 856)
      in call from erl_eval:local_func/5 (erl_eval.erl, line 467)
      in call from escript:interpret/4 (escript.erl, line 774)
      in call from escript:start/1 (escript.erl, line 277)
      in call from init:start_it/1
    make[1]: *** [all] Error 127
    make[1]: Leaving directory `/root/tunnel/.erlang.mk/rebar'
    /root/tunnel
    {"init terminating in do_boot",{undef,[{rmemo,start,[],[]},{erl_eval,do_apply,6,[{file,"erl_eval.erl"},{line,569}]},{erl_eval,exprs,5,[{file,"erl_eval.erl"},{line,118}]},{init,start_it,1,[]},{init,start_em,1,[]}]}}
    
    Crash dump was written to: erl_crash.dump
    init terminating in do_boot ()
    make[1]: Entering directory `/root/tunnel/deps/cowboy'
    ../../erlang.mk:24: Please upgrade to GNU Make 4 or later: https://erlang.mk/guide/installation.html
     DEP    cowlib
     DEP    ranch
    make[2]: Entering directory `/root/tunnel/deps/cowlib'
    ../../erlang.mk:24: Please upgrade to GNU Make 4 or later: https://erlang.mk/guide/installation.html
     DEPEND cowlib.d
    ../../erlang.mk:24: Please upgrade to GNU Make 4 or later: https://erlang.mk/guide/installation.html
     ERLC   cow_base64url.erl cow_cookie.erl cow_date.erl cow_hpack.erl cow_http.erl cow_http2.erl cow_http_hd.erl cow_http_te.erl cow_mimetypes.erl cow_multipart.erl cow_qs.erl cow_spdy.erl cow_sse.erl cow_uri.erl cow_ws.erl
    src/cow_base64url.erl:31: syntax error before: '{'
    src/cow_base64url.erl:40: syntax error before: '{'
    src/cow_base64url.erl:52: syntax error before: '{'
    src/cow_base64url.erl:59: syntax error before: '{'
    src/cow_base64url.erl:21: function decode/1 undefined
    src/cow_base64url.erl:22: function decode/2 undefined
    src/cow_base64url.erl:23: function encode/1 undefined
    src/cow_base64url.erl:55: function encode/3 undefined
    make[3]: *** [ebin/cowlib.app] Error 1
    make[2]: *** [app] Error 2
    make[2]: Leaving directory `/root/tunnel/deps/cowlib'
    make[1]: *** [deps] Error 2
    make[1]: Leaving directory `/root/tunnel/deps/cowboy'
    make: *** [deps] Error 2
    

    编辑:安装 erlang-base-hipe :

    root@marble-pyramid-1:~/tunnel# apt-get install erlang-base-hipe
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    The following packages were automatically installed and are no longer required:
      gyp javascript-common libc-ares-dev libc-ares2 libjs-node-uuid libssl-dev
      libssl-doc libv8-3.14-dev linux-headers-3.13.0-68
      linux-headers-3.13.0-68-generic linux-image-3.13.0-68-generic
      linux-image-extra-3.13.0-68-generic node-abbrev node-ansi node-archy
      node-async node-block-stream node-combined-stream node-cookie-jar
      node-delayed-stream node-forever-agent node-form-data node-fstream
      node-fstream-ignore node-github-url-from-git node-glob node-graceful-fs
      node-gyp node-inherits node-ini node-json-stringify-safe node-lockfile
      node-lru-cache node-mime node-minimatch node-mkdirp node-mute-stream
      node-node-uuid node-nopt node-normalize-package-data node-npmlog node-once
      node-osenv node-qs node-read node-read-package-json node-request node-retry
      node-rimraf node-semver node-sha node-sigmund node-slide node-tar
      node-tunnel-agent node-which zlib1g-dev
    Use 'apt-get autoremove' to remove them.
    Suggested packages:
      erlang-edoc erlang-gs erlang erlang-manpages erlang-doc
    The following packages will be REMOVED:
      erlang-base
    The following NEW packages will be installed:
      erlang-base-hipe
    0 upgraded, 1 newly installed, 1 to remove and 196 not upgraded.
    Need to get 8,030 kB of archives.
    After this operation, 2,610 kB of additional disk space will be used.
    Do you want to continue? [Y/n] y
    Get:1 http://mirrors.digitalocean.com/ubuntu/ trusty-updates/universe erlang-base-hipe amd64 1:16.b.3-dfsg-1ubuntu2.1 [8,030 kB]
    Fetched 8,030 kB in 0s (16.9 MB/s)
    dpkg: erlang-base: dependency problems, but removing anyway as you requested:
     erlang-crypto depends on erlang-base (= 1:16.b.3-dfsg-1ubuntu2.1) | erlang-base-hipe (= 1:16.b.3-dfsg-1ubuntu2.1); however:
      Package erlang-base is to be removed.
      Package erlang-base-hipe is not installed.
     erlang-asn1 depends on erlang-base (= 1:16.b.3-dfsg-1ubuntu2.1) | erlang-base-hipe (= 1:16.b.3-dfsg-1ubuntu2.1); however:
      Package erlang-base is to be removed.
      Package erlang-base-hipe is not installed.
     erlang-syntax-tools depends on erlang-base (= 1:16.b.3-dfsg-1ubuntu2.1) | erlang-base-hipe (= 1:16.b.3-dfsg-1ubuntu2.1); however:
      Package erlang-base is to be removed.
      Package erlang-base-hipe is not installed.
     erlang-runtime-tools depends on erlang-base (= 1:16.b.3-dfsg-1ubuntu2.1) | erlang-base-hipe (= 1:16.b.3-dfsg-1ubuntu2.1); however:
      Package erlang-base is to be removed.
      Package erlang-base-hipe is not installed.
     erlang-webtool depends on erlang-base (= 1:16.b.3-dfsg-1ubuntu2.1) | erlang-base-hipe (= 1:16.b.3-d
    (Reading database ... 110838 files and directories currently installed.)
    Removing erlang-base (1:16.b.3-dfsg-1ubuntu2.1) ...
    Searching for services which depend on erlang and should be stopped...none found.
    Killing epmd...it is not running.
    Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
    Selecting previously unselected package erlang-base-hipe.
    (Reading database ... 110469 files and directories currently installed.)
    Preparing to unpack .../erlang-base-hipe_1%3a16.b.3-dfsg-1ubuntu2.1_amd64.deb ...
    Unpacking erlang-base-hipe (1:16.b.3-dfsg-1ubuntu2.1) ...
    Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
    Setting up erlang-base-hipe (1:16.b.3-dfsg-1ubuntu2.1) ...
    Searching for services which depend on erlang and should be started...none found.
    root@marble-pyramid-1:~/tunnel# make run
    erlang.mk:24: Please upgrade to GNU Make 4 or later: https://erlang.mk/guide/installation.html
    make[1]: Entering directory `/root/tunnel/deps/cowboy'
    ../../erlang.mk:24: Please upgrade to GNU Make 4 or later: https://erlang.mk/guide/installation.html
    make[2]: Entering directory `/root/tunnel/deps/cowlib'
    ../../erlang.mk:24: Please upgrade to GNU Make 4 or later: https://erlang.mk/guide/installation.html
    ../../erlang.mk:24: Please upgrade to GNU Make 4 or later: https://erlang.mk/guide/installation.html
     ERLC   cow_base64url.erl cow_cookie.erl cow_date.erl cow_hpack.erl cow_http.erl cow_http2.erl cow_http_hd.erl cow_http_te.erl cow_mimetypes.erl cow_multipart.erl cow_qs.erl cow_spdy.erl cow_sse.erl cow_uri.erl cow_ws.erl
    src/cow_base64url.erl:31: syntax error before: '{'
    src/cow_base64url.erl:40: syntax error before: '{'
    src/cow_base64url.erl:52: syntax error before: '{'
    src/cow_base64url.erl:59: syntax error before: '{'
    src/cow_base64url.erl:21: function decode/1 undefined
    src/cow_base64url.erl:22: function decode/2 undefined
    src/cow_base64url.erl:23: function encode/1 undefined
    src/cow_base64url.erl:55: function encode/3 undefined
    make[3]: *** [ebin/cowlib.app] Error 1
    make[2]: *** [app] Error 2
    make[2]: Leaving directory `/root/tunnel/deps/cowlib'
    make[1]: *** [deps] Error 2
    make[1]: Leaving directory `/root/tunnel/deps/cowboy'
    make: *** [deps] Error 2
    root@marble-pyramid-1:~/tunnel#
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   zxq9    7 年前

    make gmake 在Ubuntu上。实际上你不需要叫它 gmake公司 .

    几乎可以肯定 3.81如果你的主机是Ubuntu 14.04 LTS,这似乎是可能的。要获得gmake 4,你必须自己构建它或切换你的主机发行版版本。

    简单解决方案

    在Ubuntu 16.04而不是14.04上托管服务

    稍微复杂(但仍然简单)的解决方案

    尝试以下两个命令并比较主机上的输出:

    ceverett@changa:~$ make --version
    GNU Make 3.81
    Copyright (C) 2006  Free Software Foundation, Inc.
    これはフリーソフトウェアです. 利用許諾についてはソースを
    ご覧ください.
    商業性や特定の目的への適合性の如何に関わらず, 無保証です.
    
    This program built for x86_64-pc-linux-gnu
    ceverett@changa:~$ uname -srv
    Linux 3.13.0-129-generic #178-Ubuntu SMP Fri Aug 11 12:48:20 UTC 2017
    

    这是我最新的Ubuntu 14.04系统之一。我有gmake 3.81,我正在运行内核3.13。(很明显,日本的比特数是由地区决定的。)

    sudo mkdir /opt/gmake
    sudo chown "$USER:$USER" /opt/gmake
    mkdir foo
    cd foo
    wget http://ftp.gnu.org/gnu/make/make-4.2.1.tar.bz2
    tar -jxf make-4.2.1.tar.bz2
    cd make-4.2.1
    ./configure --prefix=/opt/gmake
    make
    make install
    

    假设你已经安装了gcc,这应该可以毫无问题地工作,你将在/opt/gmake/bin/make中安装gmake 4.21。

    钩住二郎。mk和gmake的特殊安装位置将需要一些pathyness校正,但如果您有 $HOME/bin/

    ceverett@changa:~/foo$ sudo ln -s /opt/gmake/bin/make $HOME/bin/make
    ceverett@changa:~/foo$ bash
    ceverett@changa:~/foo$ make --version
    GNU Make 4.2.1
    このプログラムは x86_64-pc-linux-gnu 用にビルドされました
    Copyright (C) 1988-2016 Free Software Foundation, Inc.
    ライセンス GPLv3+: GNU GPL バージョン 3 以降 <http://gnu.org/licenses/gpl.html>
    これはフリーソフトウェアです: 自由に変更および配布できます.
    法律の許す限り、 無保証 です.
    

    我没有任何使用erlang的项目。mk和其他语言的代码也需要构建,但从运行开始 make devel

        2
  •  0
  •   mpm Aim    7 年前

    如果您查看输出,您会发现第一个真正的错误是:

    src/cow_base64url.erl:31: syntax error before: '{'
    

    如果你看这条线 31 src/cow_base64url.erl (英寸 deps/cowlib/src

    decode(Enc, #{}).
    

    #{} 创建一个新的空映射,这是Erlang中的“新”特性(最初在R17中引入,现在我们使用R20)。因此,我认为您正在尝试使用旧版本的Erlang编译代码。

    请验证您的Erlang版本,只需运行 erl 在您的外壳中:

    -> % erl -v
    Erlang/OTP 20 [erts-9.0.1] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:10] [hipe] [kernel-poll:false]
    

    official site 或使用 kerl 轻松构建自己的。

    推荐文章