当前位置:K88软件开发文章中心编程语言非主流编程语言Julia → 文章内容

Julia 扩展包

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-15 16:28:29

行来告诉 git 当克隆仓库时使用 'https' 而不是 'git' 协议。 git config --global url."https://".insteadOf git://安装未注册的扩展包Julia 包仅仅是 git 仓库,在任何 git 支持的协议上都是可克隆的,而且包含遵循特定布局惯例的 Julia 代码。官方的 Julia 包在 METADATA.jl 仓库中注册,在可以著名的地方可获得。在之前的段落中,Pkg.add 和 Pkg.rm 命令和注册的包交互,但是包管理也能安装并使用未注册的包。为了安装未注册的包,使用 Pkg.clone(url),在那里 url 是一个包能被克隆的 git URL: julia> Pkg.clone("git://example.com/path/to/Package.jl.git") INFO: Cloning Package from git://example.com/path/to/Package.jl.git Cloning into 'Package'... remote: Counting objects: 22, done. remote: Compressing objects: 100% (10/10), done. remote: Total 22 (delta 8), reused 22 (delta 8) Receiving objects: 100% (22/22), 2.64 KiB, done. Resolving deltas: 100% (8/8), done.按照惯例,Julia 仓库用一个 .jl 的结尾命名(附加的 .git 指示了一个“裸” git 仓库),这防止它们和其他语言的仓库碰撞,也使得 Julia 包在搜索引擎中方便找到。当包在你的 .julia/v0.3 目录下安装时,然而,扩展是多余的,所以我们将它留下。如果未注册的包在它们的资源树的顶部包含 REQUIRE 文件,那这个文件将被用来决定未注册的包依赖于哪些注册的包,而且它们将自动被安装。未注册的包和注册的包一样,具有相同版本的解决逻辑,所以安装过的包版本将在必要时调整来满足注册过的和未注册过的包的需求。[1] 官方的包集在 https://github.com/JuliaLang/METADATA.jl,但是个人和组织能简单地使用一个不同的元数据仓库。这允许包可以自动安装的控制。我们可以仅允许审计通过的和批准的包版本,并使得私人的包和 fork 可被获得。更新扩展包当包开发者发布你正在使用的新的注册的包版本时,你当然,想要新的版本。为了获得最新和最棒的包版本,只要 Pkg.update(): julia> Pkg.update() INFO: Updating METADATA... INFO: Computing changes... INFO: Upgrading Distributions: v0.2.8 => v0.2.10 INFO: Upgrading Stats: v0.2.7 => v0.2.8更新包的第一步是将新的改变放入 ~/.julia/v0.3/METADATA 并看看是否有新的注册包版本已经被发布了。在这之后,Pkg.update()通过从包的上游库 pull 一些更改会更新在一个分支上被检查且不 dirty(比如,在 git 下没有对文件更改)的更新包。上游的改变仅仅在如果没有合并或重定基地址是有必要的情况下应用 - 比如,如果分支是 "fast-forwarded"。如果分支不是 fast-forwarded,就假设你正在使用它而且将自己更改仓库。 最后,更新的过程重新计算了一个最佳的包版本的集合来安装以满足你顶级的需求和 “fix” 包的需求。包被认为是 fixed 如果它是下面几条之一:1.未注册:包不在 METADATA 中 - 你用 Pkg.clone 安装过它。2.被检出:包仓库在一个开发分支上。3.Dirty:在仓库中对文件进行过了修改。如果这些中的任何一项出现,包管理者不能自由地更改安装好的包版本,所以它的需求必须被满足,无论它所选择的其他包版本是怎样的。在 ~/.julia/v0.3/REQUIRE 中的顶层需求的组合和修改过的包的需求被用来决定应该安装什么。Checkout, Pin and Free你可能想要使用包的 master 版本而不是注册版本中的一个。在 master 上可能有修改或功能,它们是你所需要的且没有在任何注册版本上发布,或者你可能是一个包的开发者且想要改变 master 或一些其他的开发分支。在这些例子中,你能通过 Pkg.checkout(pkg)来检查 pkg 或 Pkg.checkout(pkg,branch)的 master 分支以检查一些其他的分支: julia> Pkg.add("Distributions") INFO: Installing Distributions v0.2.9 INFO: Installing NumericExtensions v0.2.17 INFO: Installing Stats v0.2.7 INFO: REQUIRE updated. julia> Pkg.status() Required packages: - Distributions 0.2.9 Additional packages: - NumericExtensions 0.2.17 - Stats 0.2.7 julia> Pkg.checkout("Distributions") INFO: Checking out Distributions master... INFO: No packages to install, update or remove. julia> Pkg.status() Required packages: - Distributions 0.2.9+ master Additional packages: - NumericExtensions 0.2.17 - Stats 0.2.7一旦在用 Pkg.add 安装 Distributions 之后,在写完的同时它就位于最新的注册版本上 - 0.2.9。然后在运行 Pkg.checkout("Distributions")之后,你可以从 Pkg.status()的输出中看到 Distributions 比起 0.2.9 在一个未注册的版本上更佳。由 “pseudo-version” 数字 0.2.9+ 指示。当你检查一个未注册的包版本时,包仓库中 REQUIRE 文件的副本地位高于任何其他在 METADATA 中注册的需求,所以开发者保持这个文件的正确性和及时性是很重要的,这反映了目前包版本的真正需求。如果在包仓库中的 REQUIRE 文件是不正确的或者遗失了,当包被检出时依赖性可能会被移除。这个文件也被用来填充新发布的包版本,如果你使用了 Pkg 为此提供的 API(在下面描述)。当你决定你不再想要让一个包在分支上被检出,你能使用 Pkg “释放”它回到包管理者的控制之下。 julia> Pkg.free("Distributions") INFO: Freeing Distributions... INFO: No packages to install, update or remove. julia> Pkg.status() Required packages: - Distributions 0.2.9 Additional packages: - NumericExtensions 0.2.17 - Stats 0.2.7在这之后,因为包是在一个注册版本之上而且不在一个分支上,它的版本将被更新作为包的注册版本被发布。如果你想要在一个指定的版本上 pin 一个包以使调用 Pkg.update()不会改变包所在的版本,你可以使用 Pkg.pin 功能: julia> Pkg.pin("Stats") INFO: Creating S

上一页  [1] [2] [3]  下一页


Julia 扩展包