web-dev-qa-db-ja.com

Linuxでのnloptrのインストール

次のようにインターネット接続がないCentOS LinuxマシンにRパッケージnloptrをインストールしようとしています。

install.packages("/home/ravi/nloptr_1.0.4.tar.gz", repos = NULL, type="source")

このコマンドは、次のファイルをオンラインで検索します

http://ab-initio.mit.edu/nlopt/nlopt-2.4.2.tar.gz

ただし、マシンへのインターネット接続がないため、これは失敗します。

次のstackoverflowの投稿から提案を試みました:

buntuでローカルにnloptrをインストールする際の問題

Configureおよびconfigure.acファイルのURLを次のように変更しました。

NLOPT_URL="file:///home//ravi//${NLOPT_TGZ}"

ただし、パッケージを再度インストールしようとすると、次のエラーが表示されます。

> install.packages("/home/ravi/nloptr_1.0.4.tar.gz", repos = NULL, type="source")
* installing *source* package 'nloptr' ...
files 'configure', 'configure.ac' have the wrong MD5 checksums
ERROR: 'configure' exists but is not executable -- see the 'R Installation and Administration Manual'
* removing '/opt/vertica/R/library/nloptr'
Warning message:
In install.packages("/home/ravi/nloptr_1.0.4.tar.gz",  :
  installation of package '/home/ravi/nloptr_1.0.4.tar.gz' had non-zero exit status

このRパッケージをローカルにインストールする方法を誰か教えてもらえますか?

更新1

最初にnloptをインストールするというDirkの提案に基づいて、私は次のページの指示に従いました。

http://ab-initio.mit.edu/wiki/index.php/NLopt_Installation

次のようにnloptをインストールしました。

./configure --enable-shared
make
make install
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib

Rでnloptrを再インストールしようとすると、nloptリンクはもう検索されませんが、次のエラーがスローされます。

Error in dyn.load(file, DLLpath = DLLpath, ...) :
  unable to load shared object '/opt/vertica/R/library/nloptr/libs/nloptr.so':
  /opt/vertica/R/library/nloptr/libs/nloptr.so: undefined symbol:   nlopt_set_maxtime
Error: loading failed
Execution halted
ERROR: loading failed
* removing '/opt/vertica/R/library/nloptr'
Warning message:
In install.packages("/home/ravi/nloptr_1.0.4.tar.gz",  :
  installation of package '/home/ravi/nloptr_1.0.4.tar.gz' had non-zero exit     status

更新2

Dirkが示唆したように、私はldconfigコマンドを調べ、次のリファレンスを使用しました。

http://codeyarns.com/2014/01/14/how-to-add-library-directory-to-ldconfig-cache/

/etc/ld.so.confファイルを編集し、共有ライブラリを含むディレクトリ/ usr/local/libを追加して、ldconfigコマンドを実行しました。これにより、以下に示すように関連する共有ライブラリが追加されました。

libnlopt.so.0 (libc6,x86-64) => /usr/local/lib/libnlopt.so.0
libnlopt.so (libc6,x86-64) => /usr/local/lib/libnlopt.so

ただし、nloptrパッケージを再インストールしようとすると、同じ共有オブジェクトエラーが引き続き発生します。

誰かが共有ライブラリのエラーを案内してくれますか?

29
Ravi

[t] hisコマンドは、次のファイルをオンラインで検索しますと言うと、ストーリーの半分しか得られません。実際のnloptrパッケージのメンテナーであるJelmerと一緒に、パッケージを次のように変更しました。

  • インストールlibnloptライブラリを探し、見つかった場合はそれを使用します
  • 見つからない場合は、古い動作に戻ってライブラリをダウンロードします

したがって、nloptを単にインストールすることができます

 Sudo apt-get install libnlopt-dev

(または同等のSudo dpkg -i /media/.... USBドライブなどからファイルを指すppなど)し、nloptrパッケージを再インストールします。うまくいくでしょう。私のマシンで:

edd@max:~$ install.r nloptr         ## install.r is in littler
trying URL 'http://cran.rstudio.com/src/contrib/nloptr_1.0.4.tar.gz'
Content type 'application/x-gzip' length 353942 bytes (345 KB)
==================================================
downloaded 345 KB

* installing *source* package ‘nloptr’ ...
** package ‘nloptr’ successfully unpacked and MD5 sums checked
checking for g++... g++
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking how to run the C++ preprocessor... g++ -E
checking whether we are using the GNU C++ compiler... (cached) yes
checking whether g++ accepts -g... (cached) yes
checking for pkg-config... yes
configure: Now testing for NLopt header file.
[...]
checking for nlopt.h... yes
configure: Suitable NLopt library found.
configure: creating ./config.status
config.status: creating src/Makevars
** libs
g++ -I/usr/share/R/include -DNDEBUG      -fpic  -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g  -O3 -Wall -pipe -Wno-unused -pedantic  -c dummy.cpp -o dummy.o
gcc -I/usr/share/R/include -DNDEBUG      -fpic  -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g  -O3 -Wall -pipe -pedantic -std=gnu99 -c nloptr.c -o nloptr.o
g++ -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o nloptr.so dummy.o nloptr.o -lnlopt -lm -L/usr/lib/R/lib -lR
installing to /usr/local/lib/R/site-library/nloptr/libs
** R
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded
* DONE (nloptr)

The downloaded source packages are in
        ‘/tmp/downloaded_packages’
edd@max:~$ 

Nloptインストールが見つかった実際のRパッケージから2つのファイルのみをコンパイルしたことに注意してください。

31

Red Hat Enterprise Linux Serverリリース6.6(Santiago)では、インターネットに直接アクセスできない実稼働マシンでもまったく同じ問題が発生しました。上記で提案された修正は機能しませんでした。nloptライブラリをシステムにインストールするときに、nloptrをインストールしようとすると、「nlopt_set_maxtime」エラーで失敗します。私はnloptのコンパイルオプションをいじってみましたが、役に立ちませんでした。インターネット接続のあるUbuntuマシンでも問題を再現しました。nloptrをアンインストールし、システムにnloptをインストールしてから、nloptrのインストールに失敗しました。

最後に、次の手順を実行して問題を解決しました。

  1. Nloptをオペレーティングシステムからアンインストールします(完全に削除されていることを確認してください)。
  2. Nlopt-2.4.2.tar.gzを手動でダウンロードし、/ tmp /にコピーします
  3. Nloptr_1.0.4.tar.gzを作業ディレクトリに手動でダウンロードし、解凍します。これにより、ディレクトリ「nloptr /」が作成されます。
  4. 「nloptr/configure」を編集し、行をコメント化します

    $( "$ {R_HOME}/bin/Rscript" --Vanilla -e "download.file(url = '$ {NLOPT_URL}'、destfile = '$ {NLOPT_TGZ}')")

    新しい行を挿入します。

    $( "$ {R_HOME}/bin/Rscript" --Vanilla -e "file.copy(from = '/ tmp/nlopt-2.4.2.tar.gz'、to = '$ {NLOPT_TGZ}')")

  5. 「R CMD INSTALL nloptr」でインストールします。

13
renato vitolo

Ubuntuでも同様の問題がありました。 nlopt-devを Dirk answer としてインストールすることに加えて、pkg-configもインストールする必要がありました。

Sudo apt-get install pkg-config

お役に立てれば。

13
Ole Høst

CentOSを使用している場合(およびインターネットにアクセスできるが、nloptサーバーにアクセスできない場合)、最初にnloptをインストールできます

yum install nlopt nlopt-devel

その後、nloptrを通常どおりインストールできます。

6
Xiongbing Jin

RHEL 7.2インスタンスでnloptrを設定するのと同じ問題がありました。 RHELを使用している場合は、次を実行できます。次のRPMSを同じ順序でダウンロードしてインストールします。

これらのRPMには、システム構成に基づいて追加の依存関係をインストールする必要があることに注意してください。

これを投稿すると、install.packagesユーティリティを使用してnloptrを直接インストールするか、CRANからソースをダウンロードして、以前の応答で提案されているようにソースからインストールできます。

お役に立てれば!

キラン

3
Kiran Kaipa

aWS Linuxを使用している場合は、以下が役立ちます

yum --enablerepo=epel install NLopt-devel -y
0
LJT