• Posts tagged "install"

Blog Archives

Prolog软件包管理器

Prolog语言知识推理系列文章,不同编程语言有着不同编程视角,JAVA是面向对象,Nodejs是异步回调,R语言是统计算法,Prolog就是知识推理。每种语言都是独特的,如果想把一门语言学好用好,关键是利用语言的特点,做对的事情。

本系列文章主要介绍Prolog语言,从入门安装到知识推理。Prolog是完全不一样的,他没有复杂的程序结构,也不是为了解决算法问题,而是专注于逻辑推理,擅长解决抽象的问题。

关于作者:

  • 张丹,分析师/程序员/Quant: R,Java,Nodejs
  • blog: http://fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/prolog-packages/

前言

继续尝试使用prolog语言,本文将主要介绍prolog的包管理器。我们在使用prolog来编程的时候,避免不了会用到第三方的软件包,比如文件操作包,数据库包,http请求包,数据解析包,算法包等。所以,掌握包的安装,查看,加载,卸载都是必须的基本操作能力。

目录

  1. prolog包管理器
  2. 包管理的函数使用

1. prolog包管理器

每种编程语言,在启动时内核不可能加载所有的东西,就需要通过模块化的组织方式,把不同的组件进行分步加载。有些模块是官方提供的,有些模块需要有各种第三方包的支持。那么就需要对各种第三方进行统一的管理,允许开发人员方便地使用这些第三方包。

这样子就涉及到,软件包管理的各种使用和操作,包括本地已安装包的管理,远程软件包仓库的查询,软件包的安装,软件包的下载,软件的依赖管理等等操作。

prolog提供了软件包管理的功能,通过prolog_pack.pl的文件接口进行实现。在prolog_pack.pl中提供了多种函数,来帮助用户实现软件的安装使用的过程,可以参考官方介绍 https://www.swi-prolog.org/pldoc/doc/_SWI_/library/prolog_pack.pl

该库(prolog_pack)提供了使您可以检查已安装的软件包,安装软件包,删除软件包等。它由内置的attach_packs补充,该附件使已安装的软件包可用作库。也可以通过运行doc_browser. 函数在查询。


% 启动prolog运行环境
~ swipl

% 查看软件包管理器
?- doc_browser.
% Started server at http://localhost:64976/pldoc/
true 

会自动打开下面网页。

当然,我们更多地是使用交互函数,来对软件包进行管理。

2. 包管理的函数使用

对于包管理器的使用方法,我们有常用的5个操作,查看软件包列表pack_list函数,查看本地已安装软件包pack_list_installed函数,查看本地已安装软件包详细信息pack_info函数,安装软件包pack_install函数,卸载软件包pack_remove函数。

2.1 查看软件包列表pack_list函数

pack_list(+Query)函数,查询所有的软件包服务器,Query不区分大小写地匹配已知和已安装软件包的名称和标题,同pack_search(+Query)函数。

对于每个匹配的软件包,将显示一行。每一行的第一个字母表示,软件包安装状态:

  • p:本地未安装软件包
  • i:本地已安装的软件包,与公开发布的最新版本一致
  • U:本地已安装的软件包,不是最新版本可以升级
  • A:本地已安装的软件包,比公开发布的更新
  • l:本地已安装的软件包,不在公开的服务器上

函数执行,下面会列出所有官方公开的软件包。截止到2021年1月11日,共有326个包。


3 ?- pack_list("").
% Contacting server at https://www.swi-prolog.org/pack/query ... ok
p achelois@0.5.0            - Collection of tools to make writing scripts in Prolog easier.
p aleph@5                   - Aleph Inductive Logic Programming system
p amazon_api@0.0.3          - Interface to Amazon APIs
p ansi_termx@0.0.1          - ANSI terminal operations
p ape@6.7.0                 - Parser for Attempto Controlled English (ACE)
p app@0.1                   - Prolog Application Server
p arouter@1.1.1             - Alternative HTTP path router
p assertions@0.0.1          - Ciao Assertions Reader for SWI-Prolog
p atom_feed@0.2.0           - Parse Atom and RSS feeds
p auc@1.0                   - Library for computing Areas Under the Receiving Operating Charactersitics and Precision Recall curves
p b_real@0.5                - Interface predicates to commonly used R functions.
p bddem@4.3.1               - A library for manipulating Binary Decision Diagrams
p bencode@0.0.1             - Bencoding from BitTorrent protocol
p bibtex@0.1.8              - Parser and predicates for BibTeX files

.. 省略

pack_list函数,也执行模糊匹配查询,查询包含db的包。


4 ?- pack_list("db").
% Contacting server at https://www.swi-prolog.org/pack/query ... ok
p bio_db@3.2                - Access, use and manage big, biological datasets.
p bio_db_repo@20.9.14       - Data package for bio_db.
i chess_db@0.3              - PGN and chess game databases.
p db_facts@0.5              - Common db-tables-as-facts and SQL layer for ODBC and proSQLite.
p fld@0.1.0                 - Easy assess to term args when loading from ODBC or CSV.
p pl_omdb@0.5.0             - API interface to OMDB (Open Movie Database)
p rocksdb@0.8.0             - SWI-Prolog interface to RocksDB
true.

2.2 查看本地已安装软件包pack_list_installed函数
只查看本地已安装包pack_list_installed(),与pack_list/1不同,仅显示本地安装的软件包,并且不建立与Internet的连接。


8 ?- pack_list_installed.
Installed packages (2):

i chess_db@0.3              - PGN and chess game databases.
i real@2.1                  - Integrative statistics with R
true.

我当前本地只安装了2个包,分为是chess_db和real,都是公开发布的最新版本。

2.3 查看本地已安装软件包详细信息pack_info函数
pack_info(+ Pack),查看本地已安装软件包的详细信息。


?- pack_info(chess_db).
Package:                chess_db
Title:                  PGN and chess game databases.
Installed version:      0.3
Installed in directory: c:/programdata/swi-prolog/pack/chess_db
Author:                 Nicos Angelopoulos <http://stoics.org.uk/~nicos>
Maintainer:             Nicos Angelopoulos <http://stoics.org.uk/~nicos>
Packager:               Nicos Angelopoulos <http://stoics.org.uk/~nicos>
Home page:              http://stoics.org.uk/~nicos/sware/chess_db
Download URL:           http://stoics.org.uk/~nicos/sware/packs/chess_db/chess_db-*.tgz
Provided libraries:     chess_db
true.

如果本地没有安装,查看时则失败。


18 ?- pack_info(xsd).
Warning: No pack xsd installed.  Use ?- pack_list(Pattern) to search
false.

提示本地没有安装,先用pack_list()查看一下,是否有这个包。

2.4 安装软件包pack_install函数
pack_install(+Name),安装软件包,先来安装一下xsd包。


?- pack_install(xsd).
% Contacting server at https://www.swi-prolog.org/pack/query ... ok
% Pack `xsd' is already installed @0.2.1
true.

再安装yaml包


?- pack_install(yaml).
% Contacting server at https://www.swi-prolog.org/pack/query ... ok
Select download location for yaml@0.1
   (1) * GIT repository at http://git.cf.ericsson.net/5g-mgmt/yaml.git
   (2)   GIT repository at http://git.cf.ericsson.net/components/yaml.git
   (3)   GIT repository at http://git.cf.ericsson.net/ehonlia/yaml.git
   (4)   GIT repository at https://github.com/honnix/yaml.git
   (5)   Cancel

Your choice? 
% Cloning into 'c:/programdata/swi-prolog/pack/yaml'...
% Contacting server at https://www.swi-prolog.org/pack/query ... ok
% "yaml.git" was downloaded 171 times
Package:                yaml
Title:                  YAML parser
Installed version:      0.1
Author:                 Honnix Liang <hxliang1982@gmail.com>
Maintainer:             Hongxin Liang <hxliang1982@gmail.com>
Packager:               Honnix Liang <hxliang1982@gmail.com>
Home page:              https://github.com/honnix/yaml
Download URL:           https://github.com/honnix/yaml/archive/v0.1.zip
Run post installation scripts for pack "yaml" Y/n? 
% make: Nothing to be done for 'all'.
% make: Nothing to be done for 'check'.
% make: Nothing to be done for 'install'.
true.

安装后的包,都放在了本地的swi-prolog安装目录 C:\ProgramData\swi-prolog\pack 目录下面了。


C:\ProgramData\swi-prolog\pack>dir
 驱动器 C 中的卷是 Windows
 卷的序列号是 28E7-F0A9

 C:\ProgramData\swi-prolog\pack 的目录

2021-01-11  11:34    <DIR>          .
2021-01-11  11:34    <DIR>          ..
2021-01-11  09:49    <DIR>          chess_db
2021-01-11  11:24    <DIR>          Downloads
2020-12-31  16:11    <DIR>          real
2021-01-11  11:26    <DIR>          xsd
2021-01-11  11:38    <DIR>          yaml
               0 个文件              0 字节
               7 个目录 84,370,649,088 可用字节

用tree命令查看,可以看到整个目录的结构


C:\ProgramData\swi-prolog\pack>tree
卷 Windows 的文件夹 PATH 列表
卷序列号为 28E7-F0A9
C:.
├─chess_db
│  ├─data
│  │  └─pgn
│  ├─doc
│  │  └─html
│  ├─examples
│  │  └─short
│  ├─prolog
│  └─src
│      └─lib
├─Downloads
├─real
│  ├─.git
│  │  ├─hooks
│  │  ├─info
│  │  ├─logs
│  │  │  └─refs
│  │  │      ├─heads
│  │  │      └─remotes
│  │  │          └─origin
│  │  ├─objects
│  │  │  └─pack
│  │  └─refs
│  │      ├─heads
│  │      └─remotes
│  │          └─origin
│  ├─c
│  ├─configs
│  ├─doc
│  ├─examples
│  │  └─ws_hist
│  ├─lib
│  │  ├─i386-win32
│  │  ├─x64-win64
│  │  └─x86_64-linux
│  └─prolog
└─yaml
    ├─examples
    └─prolog
        └─yaml

2.5 卸载软件包pack_remove函数
pack_remove(+Name),用于卸载软件包。


?- pack_remove(xsd).
% Removing 'c:/programdata/swi-prolog/pack/xsd' and contents
true.

% 查看已安装软件包
?- pack_list_installed.
Installed packages (3):

i chess_db@0.3              - PGN and chess game databases.
i real@2.1                  - Integrative statistics with R
i yaml@0.1                  - YAML parser
true.

本文的完整代码,可以在github上找到:https://github.com/bsspirit/prolog-learning/tree/main/03 package

同样,本文还是对于prolog的初探,进行逻辑推理,从浅入入深的过程,希望本文能让所有的prolog新手快速上手。

转载请注明出处:
http://blog.fens.me/prolog-packages/

打赏作者

R的历史版本安装

R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大。

R语言作为统计学一门语言,一直在小众领域闪耀着光芒。直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器。随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长。现在已不仅仅是统计领域,教育,银行,电商,互联网….都在使用R语言。

要成为有理想的极客,我们不能停留在语法上,要掌握牢固的数学,概率,统计知识,同时还要有创新精神,把R语言发挥到各个领域。让我们一起动起来吧,开始R的极客理想。

关于作者:

  • 张丹(Conan), 程序员Java,R,PHP,Javascript
  • weibo:@Conan_Z
  • blog: http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/r-install-ubuntu/

r-install-history

前言

R语言软件包已进入到了3.0的时代,但有些第三方的R包还处于2.15的状态,没有及时升级,像RHadoop,RHive。我们要用这些R包的时候,就需要指定版本的R软件。

对于Windows来说,这是很简单的操作,只要安装不同的(exe)文件就行了;对于Linux系统,我们也需要手动的进行配置。不熟悉Linux同学,在这里就很容易卡住。所以,今天就讲一下,在Linux Ubuntu系统中,R语言软件包指定版本安装。

目录

  1. R在Windows中安装
  2. R在Ubuntu中安装
  3. R在Ubuntu中最新版本安装
  4. R在Ubuntu中指定版本安装

1. R在Windows中安装

通过R的官方网站http://cran.r-project.org/,我们可以下载Linux, MacOS, Windows系统的R语言安装包。

R在Windows系统中安装非常简单,双击下载的可执行文件(.exe),即可进行安装。

安装后,运行R语言的界面

r-win

2. R在Ubuntu中安装

本文基于的Linux是Ubuntu 12.04.2 LTS 64bit的系统,安装R语言软件包可以通过apt-get实现。

在Linux Ubuntu中安装R语言


#检查R是否已安装
~  R
The program 'R' is currently not installed.  You can install it by typing:
sudo apt-get install r-base-core

# 根据提示安装R语言软件包
~ sudo apt-get install r-base-core

# 检查R的版本
~ R --version
R version 2.14.1 (2011-12-22)
Copyright (C) 2011 The R Foundation for Statistical Computing
ISBN 3-900051-07-0
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under the terms of the
GNU General Public License version 2.
For more information about these matters see
http://www.gnu.org/licenses/.

发现R安装的默认版本是2.14.1,这与本书的中R的版本是不符的,接下来我们希望安装最新版本R的软件包。

3. R在Ubuntu中最新版本安装

首先,删除Linux Ubuntu系统中原有的R软件包。


sudo apt-get autoremove r-base-core

接下来,我们找到一个Ubuntu的软件源镜像(http://mirror.bjtu.edu.cn/cran/bin/linux/ubuntu/) ,Linux Ubuntu 12.04对应的名字是precise,进入到precise/目录,找到r-base-core相关的文件,发现有不同的R的版本。

source.list

把这个软件源,增加到apt的sources.list文件中


# 在sources.list文件最下面,新加一行
~ sudo sh -c "echo deb http://mirror.bjtu.edu.cn/cran/bin/linux/ubuntu precise/ >>/etc/apt/sources.list"

#更新源
~ sudo apt-get update

#再次安装R语言软件包
~ sudo apt-get install r-base-core

# 检查R的版本
~ R --version
R version 3.0.3 (2014-03-06) -- "Warm Puppy"
Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under the terms of the
GNU General Public License versions 2 or 3.
For more information about these matters see
http://www.gnu.org/licenses/.

这时我们就安装了,最新的R语言3.0.3版本。

4. R在Ubuntu中指定版本安装

由于本书中的例子,大部分是基于3.0.1完成的,RHadoop的例子是基于2.15.3完成的,因此我们还需要指定R的安装版本。

安装R的2.15.3版本


# 删除系统中原有的R软件包
~ sudo apt-get autoremove r-base-core

# 安装R的2.15.3版本
~ sudo apt-get install r-base-core=2.15.3-1precise0precise1

# 检查R语言软件包版本
~ R --version
R version 2.15.3 (2013-03-01) -- "Security Blanket"
Copyright (C) 2013 The R Foundation for Statistical Computing
ISBN 3-900051-07-0
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under the terms of the
GNU General Public License versions 2 or 3.
For more information about these matters see
http://www.gnu.org/licenses/.

安装R的3.0.1版本


# 删除系统中原有的R软件包
~ sudo apt-get autoremove r-base-core

# 检查直接的版本
~ sudo apt-cache showpkg r-base

# 安装R的3.0.1版本
~ sudo apt-get install r-base-core=3.0.1-6precise0

# 检查R语言软件包版本
~ R --version
R version 3.0.1 (2013-05-16) -- "Good Sport"
Copyright (C) 2013 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under the terms of the
GNU General Public License versions 2 or 3.
For more information about these matters see
http://www.gnu.org/licenses/.

这样我们就可以很方便的,指定安装不同版本的R的语言。

转载请注明出处:
http://blog.fens.me/r-install-ubuntu/

打赏作者