在Windows上使用Ubuntu进行Bash,运行Linux命令以安装Windows程序

时间:2017-01-15 22:52:22

标签: r linux windows-subsystem-for-linux

我是Linux新手,但我在安装没有Windows二进制文件的R软件包时遇到了很多麻烦。我宁愿不安装完整的Linux安装并移动所有内容。从Windows Interoperability开始判断似乎这样应该是可能的。 我想从块引用中的GNU R package cplexAPI文档中选择任何一个选项。我试过了:

C:\Users\zejas>bash
zejas@DESKTOP-JASON:/mnt/c/Users/zejas$ R CMD INSTALL cplexAPI_1.3.2.tar.gz
The program 'R' is currently not installed. You can install it by typing:
sudo apt-get install r-base-core
zejas@DESKTOP-JASON:/mnt/c/Users/zejas$

基于以下示例:

$/mnt/c/Windows/System32/notepad.exe

我试过了:

zejas@DESKTOP-JASON:/mnt/c/Users/zejas$ $/mnt/C/Program Files/Microsoft/MRO-3.3.1/bin
bash: $/mnt/C/Program: No such file or directory
zejas@DESKTOP-JASON:/mnt/c/Users/zejas$ /mnt/C/Program Files/Microsoft/MRO-3.3.1/bin
bash: /mnt/C/Program: No such file or directory
zejas@DESKTOP-JASON:/mnt/c/Users/zejas$ /mnt/C/Program Files/Microsoft/MRO-3.3.1/bin/R.exe
bash: /mnt/C/Program: No such file or directory
zejas@DESKTOP-JASON:/mnt/c/Users/zejas$ $/mnt/C/Program Files/Microsoft/MRO-3.3.1/bin/R.exe
bash: $/mnt/C/Program: No such file or directory
zejas@DESKTOP-JASON:/mnt/c/Users/zejas$ C/Program Files/Microsoft/MRO-3.3.1/bin/R.exe
bash: C/Program: No such file or directory
zejas@DESKTOP-JASON:/mnt/c/Users/zejas$ $/mnt/C/Program Files/Microsoft/MRO-3.3.1/bin/R.exe
bash: $/mnt/C/Program: No such file or directory
zejas@DESKTOP-JASON:/mnt/c/Users/zejas$ /mnt/C/Program Files/Microsoft/MRO-3.3.1/bin/R.exe
bash: /mnt/C/Program: No such file or directory
zejas@DESKTOP-JASON:/mnt/c/Users/zejas$ /mnt/c/Program Files/Microsoft/MRO-3.3.1/bin/R.exe
 bash: /mnt/c/Program: No such file or directory
 zejas@DESKTOP-JASON:/mnt/c/Users/zejas$ /mnt/c/Windows/System32/notepad.exe
 bash: /mnt/c/Windows/System32/notepad.exe: cannot execute binary file: Exec format error

有什么想法吗?

  

----------------------------------------------- -----------------------------

     

Linux和MacOS X安装

     

----------------------------------------------- -----------------------------

     

CPLEX可调用库和CPLEX的位置包括   目录可以在/README.html>中找到   是CPLEX安装目录。还看看了   CPLEX的示例Makefile中的变量CLNFLAGS和COPT   安装。在那里,变量CPLEXLIBDIR指向可调用的   图书馆目录。

     

有几种方法可以安装cplexAPI包:

     

1)直接设置变量PKG_CFLAGS,PKG_CPPFLAGS和PKG_LIBS,例如:

     

R CMD INSTALL --configure-args =" \ PKG_CFLAGS =' -m64 -fPIC' \
  PKG_CPPFLAGS =' -I / CPLEX /包括' \
  PKG_LIBS =' -L $ {CPLEXLIBDIR} -lcplex -m64 -lm -pthread'" \
  cplexAPI_x.x.x.tar.gz

     

PKF_CFLAGS是可选的,但PKG_CPPFLAGS和PKG_LIBS都必须是   给出。

     

2)使用--with-cplex - :

     

- with-cplex-include = PATH,PATH是include目录   CPLEX

     

- with-cplex-lib = PATH,PATH是目录   含有                                   可调用的CPLEX库。

     

R CMD INSTALL --configure-args =" \          --with-cplex-include = / path / to / include / dir \          --with-CPLEX-LIB = /路径/到/ LIB /目录" cplexAPI_x.x.x.tar.gz

     

当使用--with-cplex-时,两个参数--with-cplex-lib和   必须提供--with-cplex-include。

     

- with-cplex-link = -l ...库到链接器的路径                                   汇编

     

如果没有给出--with-cplex-link,' -lcplex -lm -pthread'将会   用作默认值。

     

- with-cplex-cflags = ...可选CFLAGS

     

可以使用另一个参数来使用debuging   CPLEX的C API中包含的例程:

     

- with-cplex-check = PATH,PATH是目录   含有                                   来自CPLEX示例目录的文件check.c。

     

R CMD INSTALL --configure-args =" \
  --with-CPLEX-LIB =' /路径/到/ LIB /目录' \ --with-cplex-include =' / path / to / include / dir' \ --with-cplex-link =' -lcplex -m64 -lm -pthread' \ --with-cplex-cflags =' -m64 -fPIC' \ --with-cplex-check =' / path / to / examples / dir / examples / src / c'" \ cplexAPI_x.x.x.tar.gz

     

3)提供CPLEX安装的位置:

     

- 与-CPLEX-DIR = PATH          PATH是CPLEX目录。这不是CPLEX安装目录,它是包含的目录   lib / include /和examples /目录。通常这是   / CPLEX。

     

R CMD INSTALL --configure-args ="
  --with-CPLEX-DIR =' / CPLEX'" \ cplexAPI_x.x.x.tar.gz

     

此过程将采用第一种系统类型和库格式   它找到了。编译所需的信息来自于   示例Makefile。

     

4)不提供任何信息:

     

R CMD INSTALL cplexAPI_x.x.x.tar.gz          此过程将尝试查找CPLEX交互式优化器或指向的CPLEX_BIN环境变量   将使用CPLEX交互式优化器。目录有两个级别   以上用作CPLEX目录,获取所有其他信息   来自上面#3中的CPLEX示例Makefile。

1 个答案:

答案 0 :(得分:0)

首先,要访问其中包含空格的路径,请使用双引号:

"/mnt/c/Program Files/Microsoft/MRO-3.3.1/bin/R.exe"

其次,如果您构建了Windows 10或更高版本的14951,则只能从bash运行Windows程序。这在您链接到的MSDN页面顶部注明:

  

适用于Linux的Windows子系统可以调用本机Windows二进制文件,并可以从Windows命令行调用。运行Anniversary Update build 14951的Windows 10用户可以使用此功能。

此版本仍在Windows Insider版本中,因此目前尚未推出(截至2017年1月16日,最新的GA版本为14393)。目前,如果您需要此功能,可以安装cbwin

第三,从Linux shell运行R不会神奇地解决预编译二进制包不可用的原因:cplexAPI依赖于IBM的CPLEX Studio应用程序,您仍然需要将它用于R包上班。假设您确实可以使用此功能,则可以下载cplexAPI源并从Windows 编译包,而无需触及bash shell。