当前位置: 首页 > 知识库问答 >
问题:

haskell:跨沙箱共享模块?

何烨华
2023-03-14

我安装了一个图表,看起来一切都很好。

>cabal install diagrams
Resolving dependencies...
All the requested packages are already installed: diagrams-1.2
Use --reinstall if you want to reinstall anyway.

但是如果我尝试使用它:导入图表。前奏

 Could not find module `Diagrams.Prelude'
  Use -v to see a list of the files searched for. 

以及:

>ghc-pkg list diagrams
WARNING: there are broken packages.
Run 'ghc-pkg check' for more details.
e:/Plang/Haskell Platform\lib\package.conf.d:
    (no packages)
C:\Users\guthrie\AppData\Roaming\ghc\i386-mingw32-7.8.3\package.conf.d:
    (no packages)

(损坏的包都是旧版本的东西,安装了一个好的新版本。)

好像是装在。cabal-sandbox,但那不是ghc-pkg报道的(?):

C:\Users\guthrie \.cabal sandbox \i386-windows-ghc-78.3-packages.conf.d\Diagrams。。。

我知道我可以使用“Cabal resl”而不是GHCi,这将为路径添加额外的包库引用,但我想使用来自其他Haskell IDE(热、Leksah)的这些已安装库。

我不确定这个沙盒是否是先前cabal安装的残余,否则将无法工作,或者新的cabal版本(1.22)是否自动使用它们,或者…

我发现使用“cabal exec ghc”可能会解决这个问题,但我尝试了一下,尽管我自己输入了显式路径,但我没有找到正确的用法:

-- Good:
ghc --make Program.hs -package-db=c:\users\name\.cabal-sandbox\i386-windows-ghc-7.8.3-packages.conf.d\
-- Fails:
cabal ghc --make Program.hs

目前的ide也没有这个选项。我是否必须在所有其他使用GHC的工具中添加一个指向这个目录的命令行选项(-package-db=)。这是正确的方法吗?

共有1个答案

齐修贤
2023-03-14

一般来说,IDE和其他调用cabal/GHC的工具需要了解沙盒,并根据是否存在沙盒而有所不同。我无法与Leksah交谈,但对于emacs来说,了解CLI的方式使设置IDE更容易。

ghci的沙盒感知等价物是阴谋集团。

与< code>ghc-pkg对应的沙盒感知功能是< code>cabal沙盒hc-pkg。

可能值得对您想要构建的图表进行代码化。我知道这对于只依赖图库的单个Haskell文件来说似乎有些多余。我发现创建. Cabal文件(或向公共my-diagrams.cabal添加可执行部分)比弄清楚如何使所有工具(emacs haskell-mod、ghc-mod、hslint、GHC)在构建非代码化文件时从沙盒中获取包所花费的时间更少。

 类似资料:
  • 安全是Chromium最重要的目标之一。安全的关键在于理解下面这点:在我们完整地理解了系统在所有可能的输入组合下表现出的行为之后,我们才能够真的保证系统安全。对于像Chromium这样庞大而多样化的代码库,推理它的各个部分可能的行为的组合几乎是不可能的。沙箱的目标是提供这样一种保证:不论输入什么,保证一段代码最终能或不能做的事情。 沙盒利用操作系统提供的安全性,允许不能对计算机做出持久性改变或者访

  • Jinja2 沙箱用于为不信任的代码求值。访问不安全的属性和方法是被禁止的。 假定在默认配置中 env 是一个 SandboxedEnvironment 实例,下面的代码展示 了它如何工作: >>> env.from_string("{{ func.func_code }}").render(func=lambda:None) u'' >>> env.from_string("{{ func.fu

  • Jinja2 沙箱用于为不信任的代码求值。访问不安全的属性和方法是被禁止的。 假定在默认配置中 env 是一个 SandboxedEnvironment 实例,下面的代码展示 了它如何工作: >>> env.from_string("{{ func.func_code }}").render(func=lambda:None) u&"" title="jinja2.sandbox.Security

  • 我正在使用SpringBoot1.4开发一些Spring应用程序。1和spring boot starter与ELEAF的依赖关系。我希望在我的Web服务器上共享我的ThymileAF模板(例如页眉和页脚),以便能够将它们包含在我的应用程序中。实现这一点的最简单方法是在我的每个应用程序中包含指向我的模板的服务器根相对链接。这样,我的应用程序将是可移植的,我可以让它在我的所有环境(开发、测试、产品)

  • 我编写了一个简单的RMI服务器,并为它提供了一个默认的: 以下是服务器的代码(来自Oracle RMI教程,但我添加了RMISecurityManager): } 我这样做:

  • 什么是沙箱? 沙箱是一个允许沙箱进程创建的C++库,沙箱进程是一种运行在非常限制性的环境中的进程。沙箱进程可以唯一自由使用的资源是CPU周期和内存。例如,沙箱进程不能写磁盘或者显示他们自己的窗口。它们真正能做的事情由一种明确的策略锁控制。Chromium渲染器都是沙箱化进程。 沙箱可以保护什么,不能保护什么? 沙箱限制了运行在沙箱中的代码的bug的危害。这些bug不能在用户的账号中安装持久性的恶意

  • 问题内容: 我正在尝试编写一个Java应用程序,该应用程序将访问其他 共享 邮箱以阅读电子邮件并执行其他活动。我阅读自己的INBOX(或其文件夹和内容)没有问题,但是很难找到有关如何访问(并最终解析/读取)共享邮箱的信息。 问题答案: 在其他答案的帮助下,我找到了以下解决方案,该解决方案适用于com.sun.mail:javax.mail:1.6.2 使用javax.mail:mail:1.4.7

  • 共享模块 Nest Modules can export their components. It means that we can easily share component instance between them. The best way to share an instance between two or more modules is to create Shared Modu