安装包时出错 - 符号

时间:2018-02-28 01:10:30

标签: package octave

对于扩展,收集,分解和简化方程式,我正在尝试在Octave 4.2.1(在Windows 10上运行)中安装软件包:{ "name": "seregazhuk/pinterest-bot", "description": "PHP library for Pintrest", "keywords": [ "php", "lib", "pinterest" ], "type": "package", "minimum-stability": "dev", "license": "MIT", "autoload": { "files": [ "src/Helpers/functions.php" ], "psr-4": { "seregazhuk\\PinterestBot\\": "src" } }, "autoload-dev": { "psr-4": { "seregazhuk\\PinterestBot\\": "src", "seregazhuk\\tests\\": "tests" } }, "require": { "php": ">=5.6", "ext-curl": "*", "ext-fileinfo": "*" }, "require-dev": { "codeclimate/php-test-reporter": "^0.4.4", "mockery/mockery": "1.0", "phpunit/phpunit": "~5.7" }, "authors": [ { "name": "Sergey Zhuk", "email": "seregazhuk88@gmail.com", "role": "Developer" } ] } 1 。< / p>

当我从命令行执行symbolic时,我得到:

  

dirlist(3):出界2   错误:从中调用   安装在102栏29列   pkg在第394行第9栏

enter image description here

这是什么错误?如何安装包?

1。这是手动下载并位于当前工作目录中:第一张图片的右下角。

2.我有必要的依赖项:pkg install symbolic-2.6.0.tar.gzPython已安装:

3。我读过this post

enter image description here

更新:关注@ Alex338207建议

用7-Zip(两次:符号-2.6.0.tar.gz - &gt; symbolic-2.6.0.tar - &gt; symbolic-2.6.0)提取它。

然后运行:Sympy并收到以下错误:

  

解包:FILETYPE必须是“gunzip”才能进入目录
  错误:从中调用   在第122行第7列打开包装   在第47栏第5栏中解释   安装在第81栏第9栏   pkg在第394行第9栏

更新2:关注@carandraug建议。在pkg install symbolic-2.6.0之后修改函数installdirlist)后,我得到:

[dirlist, err, msg] = readdir (tmpdir);

filelist =
{
  [1,1] = symbolic-2.6.0/
  [2,1] = symbolic-2.6.0/CONTRIBUTORS
  [3,1] = symbolic-2.6.0/COPYING
  [4,1] = symbolic-2.6.0/DESCRIPTION
  [5,1] = symbolic-2.6.0/INDEX
  [6,1] = symbolic-2.6.0/Makefile
  [7,1] = symbolic-2.6.0/NEWS
  [8,1] = symbolic-2.6.0/README.md
  [9,1] = symbolic-2.6.0/bin/
  [10,1] = symbolic-2.6.0/bin/winwrapy.bat
  [11,1] = symbolic-2.6.0/inst/
  [12,1] = symbolic-2.6.0/inst/@double/
  ....
  [396,1] = symbolic-2.6.0/misc/
  [397,1] = symbolic-2.6.0/misc/extract_tests_for_matlab.m
  [398,1] = symbolic-2.6.0/misc/my_print_usage.m
  [399,1] = symbolic-2.6.0/misc/octassert.m
  [400,1] = symbolic-2.6.0/misc/octsympy_tests_matlab.m
  [401,1] = symbolic-2.6.0/octave-symbolic.metainfo.xml
}

2 个答案:

答案 0 :(得分:1)

似乎错误来自安装包(在实际运行包中的任何代码之前)。

Octave似乎无法在压缩目录中读取文件。 你能检查文件symbolic-2.6.0.tar.gz的大小吗?它应该有239429个字节。也许你应该重新下载文件。您还可以使用此处描述的工具https://superuser.com/a/245776/338207验证其MD5总和(c24c07222c7bb6770cf2a6dbee653bff)。还要检查您的系统是否有足够的磁盘空间。

如果文件大小合适且错误仍然存​​在,您还可以解压缩文件symbolic-2.6.0.tar.gz(例如使用7-zip)。它应该包含一个名为symbolic-2.6.0的文件夹。避免将文件解压缩为symbolic-2.6.0\symbolic-2.6.0\...

在八度音程中,您可以使用以下命令从未压缩文件夹安装软件包:

 cd('c:\go\to\the\directory')

c:\go\to\the\directory是包含symbolic-2.6.0的目录。 或者使用GUI中的“当前目录”drop-drown菜单。然后:

 ls('symbolic-2.6.0')

确认您看到instbinMakefile等。最后:

 pkg install symbolic-2.6.0

要加载包使用:

pkg load symbolic

如果您想避免加载包,也可以使用以下命令安装它:

 pkg install -auto symbolic-2.6.0

答案 1 :(得分:1)

pkg函数需要tar.gz文件,即目录树(.tar文件)的存档,然后进行gunzipped(压缩,&#39; .gz&# 39)。所以你不应该试图自己解压缩它。

您得到的错误来自pkg/private/install.m#102,它正好在解压缩包文件后。

    ## The two first entries of dirlist are "." and "..".
    if (exist (tgz, "file"))
      packdir = fullfile (tmpdir, dirlist{3});
    else

包的内部应该有一个目录,包含内容,没有别的。此时,dirlist应为:

{".", "..", the_only_directory_inside_tgz}

但是,您的错误表明dirlist{3}超出范围,因此在解压缩包后没有目录。您可以稍早看到dirlist来自:

    untar (tgz, tmpdir);

    ## Get the name of the directories produced by tar.
    [dirlist, err, msg] = readdir (tmpdir);
    if (err)
      error ("couldn't read directory produced by tar: %s", msg);
    endif

    if (length (dirlist) > 3)
      error ("bundles of packages are not allowed");
    endif

所以,目前还不清楚问题是什么。我们可以推断readdir没有失败,因此dirlist至少会有...。这表明我untar在解压缩过程中一无所获。

尝试用以下代码替换该行:

filelist = untar (tgz, tmpdir) # no ; at the end

查看解压缩的内容。另外,在下面的几行中,打印出dirlist的值应该会给你一些关于发生了什么的提示。

编辑:查看解决方案的回答评论。基本上,似乎untar函数未能将包解压缩到指定的目录(C:\...Temp\oct-...),而是将它们解压缩到C:\