R Installation and Administration (translated in Korean)

Table of Contents

R Installation and Administration (translated in Korean)

이 문서는 R의 설치와 관리에 대한 안내서입니다.

This manual is for R, version (3.3.0).

Copyright © 2001–2014 R Core Team

Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the R Core Team.


1 R을 얻는 방법

Sources, binaries and documentation for R can be obtained via CRAN, the “Comprehensive R Archive Network” whose current members are listed at https://CRAN.R-project.org/mirrors.html.


1.1 소스(source)를 얻은 뒤 압축을 푸는 방법

가장 간단한 방법은 가장 최신 버전의 R-x.y.z.tar.gz 파일을 다운로드 받은 뒤 아래의 명령어를 이용하여 압축을 푸는 것입니다.이를 위해서는 적정한 버전1tar가 설치되어 있어야 합니다.

tar -xf R-x.y.z.tar.gz

다른 시스템에서 다음과 같은 명령어를 사용하기 위해서는 gzip이라는 프로그램이 설치되어야 합니다.

gzip -dc R-x.y.z.tar.gz | tar -xf -

대부분의 make 프로그램 (특히 GNU make)들이 공백(space)을 허용하지 않는 것과 같이 소스의 압축이 어디에 풀리게 될지를 지정하는 디렉토리의 경로명은 공백이 있으면 안됩니다.

만약 여러명의 사용자들이 사용할 수 있도록 빌드하기 원한다면, 압축을 풀기 전에 umask를 설정하는 것은 파일들이 다른 대상 그룹(target group)에 의하여 읽혀질 수 있게 해줍니다. (예를들어, umask 022라고 하는 것은 모든 사용자가 사용할 수 있게 합니다).빌드와 설치 중에 umask 설정을 유지하도록 하십시오.

If you use a recent GNU version of tar and do this as a root account (which on Windows includes accounts with administrator privileges) you may see many warnings about changing ownership. In which case you can use

tar --no-same-owner -xf R-x.y.z.tar.gz

and perhaps also include the option --no-same-permissions. 그리고 또한 옵션 --no-same-permissions을 사용할 수도 있습니다. (이런 옵션들은 TAR_OPTIONS 환경변수 내에서 설정될 수 있습니다: 만약 하나 이상의 옵션이 포함되면 그것들은 하나의 공백으로 구분되어야 합니다.)


1.2 패치된(patched) 버전과 개발(development)버전을 얻는 방법

현재 공개된 버전의 패치 버전인 ‘r-patched’와 현재 개발 중인 버전인 ‘r-devel’은 일간 tarballs이나 R Subversion repository 에 접속함으로써 사용 가능합니다(2.x.0 같은 낮은 버전의 공개 2주전 동안에는 ‘r-patched’ tarballs는 곧 공개될 버전의 베타/공개후보를 가리킬수 있으며, 현재 공개된 패치 버전은 Subversion을 통해 얻을 수 있었습니다).

The tarballs are available from https://stat.ethz.ch/R/daily. Download R-patched.tar.gz or R-devel.tar.gz (or the .tar.bz2 versions) and unpack as described in the previous section. They are built in exactly the same way as distributions of R releases.


1.2.1 서브버전과 rsync를 이용하는 방법

Sources are also available via https://svn.R-project.org/R/, the R Subversion repository. If you have a Subversion client (see https://subversion.apache.org/), you can check out and update the current ‘r-devel’ from https://svn.r-project.org/R/trunk/ and the current ‘r-patched’ from ‘https://svn.r-project.org/R/branches/R-x-y-branch/’ (where x and y are the major and minor number of the current released version of R). E.g., use

svn checkout https://svn.r-project.org/R/trunk/ path

다음배포를 위한 개발단계 x.y.0 릴리즈의 알파, 베타 그리고 RC 버전은 릴리즈 4주전에 ‘https://svn.r-project.org/R/branches/R-x-y-branch/’으로부터 얻을 수 있습니다.

https:’이 요구되어 지며2, R project의 서브버전 서버에 대한 SSL 증명이 신뢰된 소스로서 인식되어야 합니다.

해당 URL로부터 wget -r 또는 svn export을 이용하여 소스를 가져오지 못할 수 있습니다. R을 빌드하기 위해서 서브버전 정보가 필요하기 때문입니다.

서브버전 저장소는 추천 패키지들에 대한 현재 소스를 담고 있지 않으며, 이것들은 rsync을 이용하여 얻거나 CRAN에서 다운로드 받아야 합니다.추천 패키지의 올바른 소스를 설치하기 위해 rsync를 이용하는 것은 R 소스의 최상위 레벨에서 ./tools/rsync-recommended를 실행하는 것입니다.

If downloading manually from CRAN, do ensure that you have the correct versions of the recommended packages: if the number in the file VERSION is ‘x.y.z’ you need to download the contents of ‘https://CRAN.R-project.org/src/contrib/dir’, where dir is ‘x.y.z/Recommended’ for r-devel or x.y-patched/Recommended for r-patched, respectively, to directory src/library/Recommended in the sources you have unpacked. After downloading manually you need to execute tools/link-recommended from the top level of the sources to make the requisite links in src/library/Recommended. A suitable incantation from the top level of the R sources using wget might be (for the correct value of dir)

wget -r -l1 --no-parent -A\*.gz -nd -P src/library/Recommended \
  https://CRAN.R-project.org/src/contrib/dir
./tools/link-recommended

2 유닉스와 같은 환경에서 R 설치하기

R will configure and build under most common Unix and Unix-alike platforms including ‘cpu-*-linux-gnu’ for the ‘alpha’, ‘arm’, ‘hppa’, ‘ix86’, ‘m68k’, ‘mips’, ‘mipsel’, ‘powerpc’, ‘s390’, ‘sparc’, and ‘x86_64CPUs, ‘x86_64-apple-darwin’, ‘i386-sun-solaris’ and ‘sparc-sun-solaris’ as well as perhaps (it is tested less frequently on these platforms) ‘i386-apple-darwin’, ‘i386-*-freebsd’, ‘x86_64-*-freebsd’, ‘i386-*-netbsd’, ‘i386-*-openbsd’ and ‘powerpc-ibm-aix6*

또한, 일부 많이 쓰이는 리눅스 배포들과 OS X (이전의 Mac OS)를 위한 바이너리 배포들이 있습니다. 더 자세한 사항은 FAQ를 살펴보세요. 이들은 플랫폼에 맞춘 특정한 방식으로 설치됩니다. 이 챕터의 나머지 부분에서는 소스로부터 직접 구축하는 것에 대해서만 알아볼 것입니다.

크로스 빌딩은 불가능합니다. R을 설치하는 것은 R의 가장 작은 버전을 빌드하고완벽히 빌드하기 위해 많은 R 스크립트를 실행합니다.


2.1 간단한 컴파일하기(compilation)

먼저 Essential and useful other programs under a Unix-alike에 나열한 필수적이고 유용한 도구들과 라이브러리들에 대해서 알아보고, 당신이 원하거나 필요한 것들을 설치하도록 합니다. 먼저 환경변수 TMPDIR가 지정되어 있지 않는지 (그리고 /tmp가 존재하며 쓰기 권한이 주어져 있고 스크립트가 이곳으로부터 실행이 가능한지를 확인하고) 또는 (스크립트의 실행이 가능한) 유효한 임시디렉토리를 지정하고 있는지 확인합니다.

R 트리가 설치될 장소를 선택하세요 (R은 단순한 바이너리가 아닌 추가적인 데이터셋, 도움말 파일, 그리고 글꼴 모양에 대한 정보를 가집니다). 이 장소를 R_HOME이라고 부르도록 합니다.소스코드의 압축을 풉니다.이 과정은 src, doc, 그리고 최상위 레벨 디렉토리 아래에 몇 가지 디렉토리를 더 생성할 것입니다. (여기에서 북미지역의 독자들은 반드시 Setting paper size를 살펴보길 바랍니다.) 다음의 명령을 실행합니다:

./configure
make

(만약 당신이 사용하는 make가 ‘make’가 아니라면 Using make를 살펴보시길 바랍니다.) 64 비트 기반의 데비안 사용자은 아마도 아래와 같이 명령을 실행해야 할 수도 있습니다. 3

./configure LIBnn=lib
make

그리고 난 뒤 다음의 명령어를 이용하여 구축한 시스템이 올바르게 작동하는지를 확인합니다.

make check

Failures are not necessarily problems as they might be caused by missing functionality, but you should look carefully at any reported discrepancies. (Some non-fatal errors are expected in locales that do not support Latin-1, in particular in true C locales and non-UTF-8 non-Western-European locales.) A failure in tests/ok-errors.R may indicate inadequate resource limits (see Running R).

좀 더 심도있는 테스트를 위하여 다음의 명령어를 이용해 볼 수 있습니다.

make check-devel

또는

make check-all

see file tests/README and Testing a Unix-alike Installation for the possibilities of doing this in parallel. Note that these checks are only run completely if the recommended packages are installed.

만약 configuremake이라는 명령어들이 성공적으로 사용되었다면, 쉘스크립트로 작성된 R이라는 파일이 생길 것이고 이는 R_HOME/bin에 복사될 것입니다. 이 스크립트를 복사하여 사용자가 이를 실행시키고자 하는 곳에 붙여넣을 수 있습니다.예를들어, /usr/local/bin/R에 복사할 수 있습니다.또한 R.1이라는 도움말 페이지를 복사하여 사용자의 man 리더(reader)가 이를 찾을 수 있는 곳으로 복사할 수 있습니다.예를들면, /usr/local/man/man1이라는 곳입니다.만약, 완전한 R 트리를 /usr/local/lib/R에 설치하고 싶다면 Installation를 살펴보세요.주목할점: 실제로는 R을 꼭 설치할 필요는 없습니다.그 이유는 이것이 구축된 곳으로부터 실행할 수 있기 때문입니다.

R을 꼭 최상위 소스 디렉토리 (이를 편의상 TOP_SRCDIR이라고 해봅니다) 내에서 빌드할 필요는 없습니다. BUILDDIR 내에서 빌드해보고자 한다면 아래와 같이 할 수 있습니다.

cd BUILDDIR
TOP_SRCDIR/configure
make

and so on, as described further below. This has the advantage of always keeping your source tree clean and is particularly recommended when you work with a version of R from Subversion. (You may need GNU make to allow this, and you will need no spaces in the path to the build directory. It is unlikely to work if the source directory has previously been used for a build.)

Now rehash if necessary, type R, and read the R manuals and the R FAQ (files FAQ or doc/manual/R-FAQ.html, or https://CRAN.R-project.org/doc/FAQ/R-FAQ.html which always has the version for the latest release of R).

만약 필요하다면, rehash를 수행한 뒤에 R이라고 입력하고 R 매뉴얼들과 R FAQ (가장 최근에 릴리즈된 R과 함께 제공되는 FAQ 또는 doc/manual/R-FAQ.html, 또는 http://CRAN.R-project.org/doc/FAQ/R-FAQ.html의 파일들)을 읽어보세요.


2.2 도움말 설치 옵션

기본적으로 HTML 도움말 페이지는 설치될 때에 구축되는 것이 아니라 필요할 때 생성됩니다.

만약 서버가 비활성화 된 상태에서 HTML 도움말을 사용하기를 원한다면, 패키지들이 설치될 때 (R과 함께 설치되는 것들도 포함) HTML페이지들을 빌드하도록 하는 옵션이 제공됩니다. 이는 configure 사용시 --enable-prebuilt-html 이라는 옵션을 통해서 이루어지게 됩니다.R CMD INSTALL (즉, install.packages)이라는 명령이 HTML 페이지들의 설치준비를 하는 것은 R 설치를 살펴봄으로서 알수 있고 R INSTALL --help에 의하여 보고 되어집니다.이것은 INSTALL과 함께 쓰이는 --html 또는 --no-html이라는 옵션을 통하여 조절될 수 있습니다.

서버는 R이 시작되기 전 또는 HTML 도움말 (help.start의 사용을 포함함)이 사용되기 전의 R 세션 내에서 환경 변수 R_DISABLE_HTTPD에 비어있지 않은 값으로 설정함으로서 비활성화 될 수 있습니다. 또한, 만약 loopback 인터페이스가 비활성화된 경우와 같이 시스템 보안과 관련된 사항들은 서버의 시작을 방해할 수도 있습니다. 더 자세한 내용은 ?tool::startDynamicHelp를 살펴보시길 바랍니다.


2.3 Making the manuals

소스로부터 빌드될 수 있는 매뉴얼들이 있습니다.

fullrefman

Printed versions of all the help pages for base and recommended packages (around 3500 pages).

refman

Printed versions of the help pages for selected base packages (around 2000 pages)

R-FAQ

R FAQ

R-intro

“An Introduction to R”.

R-data

“R Data Import/Export”.

R-admin

“R Installation and Administration”, this manual.

R-exts

“Writing R Extensions”.

R-lang

“The R Language Definition”.

refman’ 보다 ‘fullrefman’와 함께 이 문서들을 생성하기 위해서는 다음의 명령어를 이용하면 됩니다.

make pdf      to create PDF versions
make info     to create info files (not ‘refman’ nor ‘fullrefman’).

You will not be able to build any of these unless you have texi2any version 5.1 or later installed, and for PDF you must have texi2dvi and texinfo.tex installed (which are part of the GNU texinfo distribution but are, especially texinfo.tex, often made part of the TeX package in re-distributions). For historical reasons, the path to texi2any can be set by macro ‘MAKEINFO’ in config.site (makeinfo is nowadays a link to texi2any).

PDF 버전의 문서는 최근에 나온 아무 종류의 PDF 뷰어를 이용하여 볼 수 있으며, 하이퍼링크 기능이 지원됩니다. info 파일들은 이맥스 (Emacs) 또는 독립적인 GNU info 프로그램에서 사용되는데 적합합니다. PDF 버전들은 ISO 표준인 a4 용지의 크기에 맞추어 생성되지만, 이는 make 명령어 라인에서 R_PAPERSIZE를 조절하거나 make -e를 이용하여 변경할 수 있습니다.(만약 용지의 크기를 다르게 하여 매뉴얼을 재생성하고 싶다면 doc/manual/version.texi를 먼저 삭제해야 합니다. 북미에서는 기본값이 ‘letter’ 사이즈로 되어 있습니다).

PDF 형식의 참조 매뉴얼, refman.pdf 또는 fullrefman.pdf을 생성하는데는 몇가지 이슈들이 있습니다. 도움말 파일들은 표준 LaTeX Computer Modern 글꼴에는 포함되어 있지 않은 ISO Latin1 문자들 (즉, text.Rd)와 오른쪽 큰 따옴표를 포함하고 있습니다. 우리는 다음과 같은 네가지 대안을 제공하고 있습니다.

times

(The default.) Using standard PostScript fonts, Times Roman, Helvetica and Courier. This works well both for on-screen viewing and for printing. One disadvantage is that the Usage and Examples sections may come out rather wide: this can be overcome by using in addition either of the options inconsolata (on a Unix-alike only if found by configure) or beramono, which replace the Courier monospaced font by Inconsolata or Bera Sans mono respectively. (You will need a recent version of the appropriate LaTeX package inconsolata4 or bera installed.)

대부분의 LaTeX 설치에 있어서 이것은 실제로 PDF를 위한 표준 글꼴을 사용하는 것이 아니며, URW clones NimbusRom, NimbusSans, 그리고 MimbusMon을 끼워넣는 것입니다.

This needs LaTeX packages times, helvetic and (if used) courier installed.

lm

Using the Latin Modern fonts. These are not often installed as part of a TeX distribution, but can obtained from https://www.ctan.org/tex-archive/fonts/ps-type1/lm/ and mirrors. This uses fonts rather similar to Computer Modern, but is not so good on-screen as times.

cm-super

Using type-1 versions of the Computer Modern fonts by Vladimir Volovich. This is a large installation, obtainable from https://www.ctan.org/tex-archive/fonts/ps-type1/cm-super/ and its mirrors. These type-1 fonts have poor hinting and so are nowhere near as readable on-screen as the other three options.

ae

Computer Modern 글꼴의 복합체를 이용하는 패키지입니다. 이것은 대부분의 경우에 잘 작동하며 이것의 PDF 버전은 이전의 두가지 옵션들보다 더욱 읽기에 좋은 질을 가집니다. 비트맵된 글꼴, tctt0900.600pk, tctt1000.600pk 그리고, tcrm1000.600pk 을 이용해야하는 세가지 글꼴들이 있습니다.아쉽게도 이러한 파일들을 이용할 수 없다면, 아크로뱃 리더는 잘못된 상형문자로 대체하게 될 것입니다.따라서, 로그를 주의깊게 살펴보아야 합니다.

기본값들은 R_RD4PDF이라는 환경변수를 조절함으로서 변경될 수 있습니다. R_RD4PDF. (On Unix-alikes, this will be picked up at install time and stored in etc/Renviron, but can still be overridden when the manuals are built, using make -e.) The usual5 default value for R_RD4PDF is ‘times,inconsolata,hyper’: omit ‘hyper’ if you do not want hyperlinks (e.g. for printing the manual) or do not have LaTeX package hyperref, and omit ‘inconsolata’ if you do not have LaTeX package inconsolata installed.

Further options, e.g for hyperref, can be included in a file Rd.cfg somewhere on your LaTeX search path. For example, if you prefer the text and not the page number in the table of contents to be hyperlinked use

\ifthenelse{\boolean{Rd@use@hyper}}{\hypersetup{linktoc=section}}{}

또는

\ifthenelse{\boolean{Rd@use@hyper}}{\hypersetup{linktoc=all}}{}

to hyperlink both text and page number.

Ebook versions of most of the manuals in one or both of .epub and .mobi formats can be made by running in doc/manual one of

make ebooks
make epub
make mobi

This requires ebook-convert from Calibre (http://calibre-ebook.com/download), or from most Linux distributions). If necessary the path to ebook-convert can be set as make macro EBOOK to by editing doc/manual/Makefile (which contains a commented value suitable for OS X).


2.4 Installation

설치된 트리가 올바른 그룹내의 사용자들에 의해서 사용될 수 있게 하기 위해서는 소스의 압축을 풀기 전에 umask가 올바르게 설정되어야 하고, 빌드과정 동안 유지되어야 합니다.

설치를 위해서는 다음과 같은 명령어를 입력합니다.

./configure
make
make check

(소스 밖에서 빌드할때에는 TOP_SRCDIR/configure라고 합니다). 위의 명령어가 성공적으로 수행되었다면, 완전한 R 트리를 시스템에 다음의 명령어를 이용하여 설치할 수 있습니다.

make install

make를 병렬식으로 사용할 수도 있습니다 (그러나 make all을 먼저 수행하세요)

위의 명령어는 다음과 같은 디렉토리에 설치를 진행할 것입니다.

prefix/bin or bindir

사용자가 사용할 수 있는 쉘 스크립트와 다른 스크립트들, 그리고 실행가능한 것들

prefix/man/man1 or mandir/man1

도움말 페이지

prefix/LIBnn/R or libdir/R

위의 것을 제외한 모든 것 (즉, 라이브러리들, 온라인 도움말 시스템, …).여기에서 LIBnn은 일반적으로 ‘lib’이지만, 일부 64-비트 리눅스 시스템에서는 ‘lib64’입니다.이곳은 R 홈 디렉토리라고 알려져 있습니다.

여기에서 prefix는 설정을 하는동안 결정되며 (일반적으로는 /usr/local입니다) configure 명령어를 --prefix 옵션과 함께 아래와 같이 사용함으로서 설정될 수 있습니다.

./configure --prefix=/where/you/want/R/to/go

where the value should be an absolute path. This causes make install to install the R script to /where/you/want/R/to/go/bin, and so on. The prefix of the installation directories can be seen in the status message that is displayed at the end of configure. The installation may need to be done by the owner of prefix, often a root account.

You can install into another directory tree by using

make prefix=/path/to/here install

at least with GNU make and current Solaris make (but not some older Unix makes).

좀 더 정교한 조정은 환경설정시에 옵션들을 통하여 이루어질 수 있습니다.더 자세한 내용은 configure --help를 살펴보세요.(그러나, 대부분의 ’Fine tuning of the installation directories’ 옵션들은 R에 의하여 사용되는 것이 아닙니다).

R 스크립트의 복사를 만들고 man 페이지의 설치를 조정할 수 있는 환경설정 옵션들 --bindir--mandir이 지원됩니다.

--libdir 옵션은 주된 R 파일들이 어디에 설치되어야 하는지를 조정합니다.기본값은 ‘eprefix/LIBn’인데, eprefix는 아키텍쳐-의존 파일들을 설치하는데 사용되는 prefix 이며, prefix에 대한 기본값입니다. 그리고 환경설정 옵션 --exec-prefix를 통하여 설정될 수 있습니다.

bindir, mandir 그리고 libdir은 또한 make install 명령어 라인에서 설정될 수 있습니다.

configure 또는 make 변수 rdocdirrsharedir는 시스템-독립적인 docshare 디렉토리들을 libdir이 아닌 다른곳에 설치하게 할 수 있습니다. C 헤더파일들은 rincludedir의 값에 설치되어질 수 있습니다.헤더들은 하위디렉토리에 설치되지 않기 때문에 아마도 rincludedir=/usr/local/include/R-(3.3.0) 와 같은 것을 원할 수 있습니다.

만약 R 홈이 libdir/R이 아닌 다른 곳으로 설정하기 원하다면 rhome 옵션을 이용하세요.예를들면, 다음과 같습니다.

make install rhome=/usr/local/lib64/R-(3.3.0)

위의 명령어는 리눅스 64 비트 시스템에서 버전별 R 홈디렉토리를 이용하는 것입니다.

만약 R을 shared/dynamic 라이브러리로서 만들고 싶다면 시스템의 라이브러리 디렉토리내에 이것들을 아래와 같은 방법으로 설치할 수 있습니다.

make prefix=/path/to/here install-libR

여기에서 prefix는 선택사항이며, libdir은 좀 더 정교한 조절을 하게 됩니다위의 명령어 사용은 stripped executables을 설치할 것이고, 이것이 지원이되는 플랫폼들에서 libmodules 디렉토리들하고 표준 패키지들 안에 stripped libraries를 설치 할것입니다.

make install-strip

will install stripped executables, and on platforms where this is supported, stripped libraries in directories lib and modules and in the standard packages.

R은 공백이 존재하는 경로명에는 설치되지 않으며, 최소한 (소스 패키지들을 설치하는 것과 같은) 일부 기능들은 작동하지 않을 것입니다.

info와 PDF 버전의 매뉴얼들을 설치하기 위해서는 아래의 명령들 중 하나를 이용합니다.

make install-info
make install-pdf

Once again, it is optional to specify prefix, libdir or rhome (the PDF manuals are installed under the R home directory). (make install-info needs Perl installed if there is no command install-info on the system.)

좀 더 정교한 조절이 가능합니다. info의 경우에 사용된 설정은 infodir의 값입니다 (기본값은 환경설정 옵션 --infodir에 의하여 조정되는 prefix/info입니다).PDF 파일들은 R doc 트리에 설치되며, make 변수 rdocdir에 의해서 조정됩니다.

스테이지된 설치 또한 가능합니다. 즉, 최종목적에 설치된 트리를 옮기기 위해서 R을 임시디렉토리에 설치하는 것입니다. 이 경우에는 prefix는 최종목적지를 반드시 지정해야 하며, DESTDIR이 사용되어야 합니다. final destination, and DESTDIR should be used: see https://www.gnu.org/prep/standards/html_node/DESTDIR.html.

make check-all의 일부분인 런타임 테스트를 아래의 명령어를 사용하여 선택적으로 설치할수 있습니다. 이는 설치시 tests 디렉토리를 채웁니다.

make install-tests

which populates a tests directory in the installation.


2.5 제거하기

다음과 같은 방법으로 R을 제거할 수있습니다.

make uninstall

설치에서 지정했던 것과 같은 방법으로 prefix와 그 밖의 것들을 선택적으로 지정할 수 있습니다.

이것은 또한 설치된 어떠한 매뉴얼들도 함께 삭제합니다. doc/manual/Makefile 파일내에 info와 PDF 매뉴얼들을 삭제해야할 정확한 대상들이 있습니다.

대상을 정해주었을때 uninstall-tests는 설치된 아무 테스트들을 삭제하며 테스트 결과들을 가지고 있는 tests 디렉토리 또한 제거 할 것입니다.

An installed shared/static libR can be uninstalled by

make prefix=/path/to/here uninstall-libR

2.6 Sub-architectures

R은 일부 플랫폼들은 실행가능한 파일들과 동적 객체들을 제외한 나머지들을 공유할 수 있는 연동형 빌드를 지원합니다. 예를들면 솔라리스에서 서로 다른 칩들에 대한 빌드 (특히, 32와 64비트 빌드), ‘x86_64’ 리눅스에서의 64와 32비트 빌드, 그리고 (Mac) OS X에서 서로 다른 CPU들(즉, ‘i386’과 ‘x86_64’)에 빌드와 같은 것입니다.

R은 아키텍쳐에 맞춘 빌드가 가능하게 지원하며, 이는 ‘r_arch=name’을 configure 라인에 추가함으로서 이루어집니다. 여기에서 name은 비어있지 않게 그 어떠한 것도 될 것도 될 수 있으며, lib, etc, include들의 서브디렉토리들과 패키지 libs 서브디렉토리들을 명명하는데 이용됩니다. Sparc Solaris에서 sparcv9이라는 이름의 사용과 ‘x86_64’ 리눅스에서 GCC에 의한 32의 사용이 대표적인 예입니다.

If you have two or more such builds you can install them over each other (and for 32/64-bit builds on one architecture, one build can be done without ‘r_arch’). The space savings can be considerable: on ‘x86_64’ Linux a basic install (without debugging symbols) took 74Mb, and adding a 32-bit build added 6Mb. If you have installed multiple builds you can select which build to run by

R --arch=name

R’이라고만 실행하는 것은 마지막에 설치한 빌드를 실행하는 것입니다.

R CMD INSTALL은 하나 이상의 빌드가 설치되어 있는지와 각각에 대해서 적합한 라이브러리 객체들과 함께 패키지를 설치하고자 하는 것인지를 파악하게 됩니다.이것은 패키지가 실행가능한 configure 스크립트 또는 src/Makefile 파일을 가지고 있지 않다면 이루어지지 않습니다.이러한 경우에는 추가적인 빌드는 아래와 같이 수행될 수 있습니다.

R --arch=name CMD INSTALL --libs-only pkg1 pkg2

만약 다른 플랫폼들 (예를들어 ‘x86_64’ 리눅스와 ‘i686’ 리눅스)에서 컴파일된 서브-아키텍쳐들을 혼용하고자 한다면, 각각의 이름들을 분명히 기재하여 사용하는것이 좋은 방법입니다. 그리고 또한 그들이 같은 위에서 설치가 되는지 확인하는 libdir를 지정하는 것이 필요할 수 있습니다.

서브-아키텍쳐들이 사용될때에는 /usr/bin/내에 있는 파일 Rscript의 버전이 마지막에 설치된 것이지만, 아키텍쳐에 맞춘 버전들은 srlib64/R/bin/exec${R_ARCH}에서 찾아볼 수 있습니다.일반적으로 설치된 모든 아키텍쳐들은 플랫폼에서 실행되며, Rscript 자체의 아키텍쳐는 문제가 되지 않습니다. 실행이 가능한 RscriptR 스크립트를 실행시킬때 R_ARCH이라는 환경변수에 어떤 아키텍쳐인지를 결정하게 됩니다.

서브-아키텍쳐들과 함께 설치후 테스트는 아래와 같이 수행될 수 있습니다.

R --arch=name CMD make check[-devel|all]

to select a sub-architecture to check.

서브-아키텍쳐는 윈도우즈에서 또한 사용되어지지만 적합한 bin 디렉토리, R_HOME/bin/i386 또는 R_HOME/bin/x64 내에서 실행가능한 파일들을 선택하게 됩니다. 2.12.0 이하의 R이 가지는 하위호환성(backwards compatibility)에 대해서는 R_HOME/bin/R.exe 또는 R_HOME/bin/Rscript.exe내에 실행파일들이 있습니다. 이들은 R_ARCH 환경변수에서 처음으로 취해진 서브디렉토리들중 하나로부터 실행 한뒤 --arch 커맨드라인 옵션6으로부터 수행한 뒤 설치 기본설정으로부터 수행하게 됩니다.


2.6.1 Multilib

리눅스7 상에서는 32비트와 64비트 라이브러리들을 혼용하기 위하여 multilib이라고 알려진 라이브러리라는 대체 메카니즘이 있습니다.만약 리눅스 배포가 multilib를 지원한다면 R의 병렬빌드는 아마도 lib(32비트)와 lib64(64비트) 서브디렉토리내에 설치되어질 것입니다.그러면, 실행될 빌드는 아마도 setarch 명령어를 이용하여 선택되어질 수 있습니다. 예를들면, 32비트 빌드는 아래와 같이 선택되어 질 수 있습니다.

setarch i686 R

만약 32비트와 64비트 빌드가 모두 설치되어 있다면, setarch 명령어는 오로지 선택적 사항입니다.만약 이들 중 하나만 설치되었다면, setarch 명령어에 의하여 지정된 아키텍쳐와 관계없이 항상 이것이 수행될 것입니다.

non-native 아키텍쳐위에 패키지들을 설치하는데 문제가 있을 수 있습니다.만약 설치된 R 버전에 대한 선택사항이 없다면, 어떤 패키지가 설치될 세션에서 setarch i686 R을 수행하는 것은 좋은 생각입니다.그 이유는 이것이 패키지 설치 코드에 필요한 아키텍쳐가 무엇인지 말해주기 때문입니다)

현재 Java를 이용한 패키지들에는 잠재적인 문제가 있습니다.그 이유는 ‘x86_64’ 리눅스에서 ‘i386’ RPM에 대한 설치후에 자바의 환경설정을 변경하고 ‘x86_64’ Java를 찾을 것이기 때문입니다. 만약 32비트 Jave가 설치된 곳을 알고 있다면 (루트 권한으로서) 올바른 환경설정을 위해서는 아래와 같은 명령어를 수행해야 할 것입니다.

export JAVA_HOME=<path to jre directory of 32-bit Java>
setarch i686 R CMD javareconf

to get a suitable setting.

이러한 메카니즘이 사용될 때 /usr/bin내에 있는 Rscript의 버전은 설치된 마지막것이 될 것입니다. 그러나 아키텍처에 맞춘 버전은 /usr/lib64/R/bin에서 확인할 수 있습니다. 일반적으로 설치된 모든 아키텍쳐들은 플랫폼에서 실행될 것이기 때문에 Rscript의 아키텍쳐는 문제가 되지 않습니다.


2.7 다른 선택사항들 알아보기

다양한 종류의 설치 옵션들이 있습니다. 이들중 대부분은 configure --help에 의하여 나열됩니다.이 문서의 다른곳에 나열되지 않은 옵션들의 대부분은 표준 autoconf 옵션들이거나 R과는 관계가 특별히 없거나 R 개발자들에 의하여 특수한 목적으로 사용되기 때문일 수 있습니다.

R에서 작업을 할 때 유용할 수 있는 것은 --disable-by-compiled-packages 옵션입니다. 이는 베이스와 추천 패키지들이 바이트컴파일 되지 앟고 레이지로드가 되도록 확실히 하여줍니다. (다른 방법으로는 make 또는 환경변수 R_NO_BASE_COMPILE을 빌드하는 도중에 비어있지 않은 값으로 설정할수 있는것입니다).

Option --with-internal-tzcode makes use of R’s own code and copy of the Olson database for managing timezones. This will be preferred where there are issues with the system implementation, usually involving times after 2037 or before 1916. An alternative time-zone directory8 can be used, pointed to by environment variable TZDIR: this should contain files such as Europe/London. On all tested OSes the system timezone was deduced correctly, but if necessary it can be set as the value of environment variable TZ.


2.8 설치 확인하기

풀테스팅은 아래의 명령어를 이용해서 테스트 파일들을이 설치되었을 경우에만 가능합니다.

make install-tests

which populates a tests directory in the installation.

만약 이것이 사용되었었다면, 두가지 테스팅 방법이 가능합니다. 하나는 R 설치 (R.home()에서 보이는 것과 같이) 홈 디렉토리 로 옮겨가서 아래의 명령어들을 수행합니다.

cd tests
## followed by one of
../bin/R CMD make check
../bin/R CMD make check-devel
../bin/R CMD make check-all

그리고 표준 팩키지와 (만약 설치가 되어 있다면) 추천 패키지들의 테스트를 수행하기 위한 test-BasePackagestest-Recommended는 유용합니다.

이것은 (패키지 비그네트에 있는 예제들을 포함하여) 설치된 R과 관계된 모든 테스트들을 재수행합니다. 그러나, 독립적인 Rmath 라이브러리를 만드는 것과 매뉴얼안에 있는 예제 코드를 확인하지 않습니다. 이것은 운영체제가 업데이트 되었거나 BALS가 대체된 경우와 같이 운영환경이 변경되었을때 매우 유용합니다.

Parallel checking of packages may be possible: set the environment variable TEST_MC_CORES to the maximum number of processes to be run in parallel. This affects both checking the package examples (part of make check) and package sources (part of make check-devel and make check-recommended). It does require a make command which supports the make -j n option: most do but on Solaris you need to select GNU make or dmake. Where parallel checking of package sources is done, a log file pngname.log is left in the tests directory for inspection.

또 다른 방법으로는 설치된 R을 --vanilla과 같이 수행한뒤 다음의 명령어를 이용하는 것입니다.

Sys.setenv(LC_COLLATE = "C", LC_TIME = "C", LANGUAGE = "en")
library("tools")
testInstalledBasic("both")
testInstalledPackages(scope = "base")
testInstalledPackages(scope = "recommended")

runs the basic tests and then all the tests on the standard and recommended packages. These tests can be run from anywhere: the basic tests write their results in the tests folder of the R home directory and run fewer tests than the first approach: in particular they do not test things which need Internet access—that can be tested by

testInstalledBasic("internet")

(On Windows that runs the tests using whichever of internal or WinInet internet functions has been selected for that session: to test both run this twice selecting both options using setInternet2.)

이러한 테스트들은 diff (Windows 사용자에게는 Rtools*.exe내에 있습니다)이 경로상에 위치하고 있을때 가장 잘 수행되며, 일부 시스템에서는 collation 로케일 셋을 직접 조정해야 할 필요가 있습니다 (R 코드가 이를 시도하지만 아마도 리셋하는것은 불가능할 것입니다).만약 이러한 경우가 필요하다면 R을 시작하기 전에 환경변수 LC_COLLATE의 값을 ‘C’로 조정해보시길 바랍니다.

It is possible to test the installed packages (but not their package-specific tests) by testInstalledPackages even if make install-tests was not run.

시간과 메시지들과 연관된 결과들은 언어설정에 따라 달라집니다. 가장 비슷하게 결과를 비교할 수 있는 설정은 다음과 같습니다.

LANGUAGE=en

and use a UTF-8 or Latin-1 locale.


3 윈도우즈에서 R 설치하기

CRAN 사이트의 bin/windows 디렉토리에는 윈도우즈 XP나 그후에 나온 ix86 CPUs (AMD64/Intel649 칩스와 윈도우즈 x64 포함)에서 사용할수있는 기본 배포(base distribution)용 바이너리와 많은 양의 CRAN용 add-on 팩키지들이 포함되어있습니다.

사용자의 파일 시스템(file system)은 긴 파일명도 수용할수있어야 합니다 (혹시 있을수있는 네트워크에 연결된 몇몇의 시스템을 제외하고 보통 다 가능함).

(3.3.0)-win.exe 라는 설치 프로그램을 통해서 설치하십시요. 아이콘을 더블 클릭하신후 나오는 설명서를 참조하시면 됩니다. 64-bit 윈도우즈에 설치하실때는 32-와 64-bit 두가지 버젼의 R이 옵션에 있습니다 (기본은 두가지 버젼을 모두 설치하는 것입니다). 컨트럴 패널 (Control Panel) 안에서 R을 제거할수도 있습니다,

참고하실것은 설치 실행시 언어를 선택하게 되어있습니다, 그리고 선택하신 언어는 설치와 제거 실행시 모두 적용되지만 R 자체를 실행할때는 적용이 않됩니다.

See the R Windows FAQ for more details on the binary installer.


3.1 Building from source

윈도우즈상에서 R은 32- 또는 64-bit 어플리케이션으로 만들어질수있습니다: 64-bit 어플리케이션을 만들려면 윈도우즈역시 64-bit 발행판이어야 합니다: 그러한 운영체제 (OS) 안에서 32-bit R을 만드는것도 가능합니다.

기본 설치 프로그램은 32-bit과 64-bit을 합쳐서 한장소에 설치되며 .exe.dll 그리고 etc 디렉토리에 있는 몇몇의 형상파일들을 제외한 모든 파일들을 공유할수있도록 하나의 실행파일로 만들어졌다.

Building is only tested in a 8-bit locale: using a multi-byte locale (as used for CJK languages) is unsupported and may not work (the scripts do try to select a ‘C’ locale; Windows may not honour this).

NB: The build process is currently being changed to require external binary distributions of third-party software. Their location is set using macro EXT_LIBS with default setting $(LOCAL_SOFT); the $(LOCAL_SOFT) macro defaults to $(R_HOME)/extsoft. This directory can be populated using make rsync-extsoft. The location can be overridden by setting EXT_LIBS to a different path in src/gnuwin32/MkRules.local. A suitable collection of files can also be obtained from https://CRAN.R-project.org/bin/windows/extsoft or https://www.stats.ox.ac.uk/pub/Rtools/libs.html.


3.1.1 필요한 도구 갖추기

If you want to build R from the sources, you will first need to collect, install and test an extensive set of tools. See The Windows toolset (and perhaps updates in https://CRAN.R-project.org/bin/windows/Rtools/) for details.

The Windows toolset에 설며되어 있는 Rtools*.exe이라는 실행가능한 인스톨러는 또한 아래 설명된 것과 같이 R 소스외에도 추가적인 몇가지 소스파일들이 포함되어 있습니다.올바른 tar 파일과 그외에 필요한 것들을 얻기 위하여 이를 제일 먼저 실행해야 합니다. 그리고 “Full installation”을 선택하고 나머지 파일들을 C:/R과 같이 설치하고자 하는 위치에 추가적인 파일들을 설치하세요. 디렉토리 이름에는 띄어쓰기를 포함하면 안됩니다.우리는 이 디렉토리를 R_HOME 이라고 부를 것입니다.


3.1.2 소스파일 얻기

다음과 같은 파일들을 얻어야 할 필요가 있습니다:

다음의 추가적인 아이템들은 Rtools30.exe에 의해 보통 설치됩니다. 만약에 완전 수동으로 설치를 원한다면 다음이 요구됩니다.


3.1.3 코어 파일들을 빌드하기

환경 변수인 TMPDIR을 띄어쓰기없이 포워드 슬래시 (forward slash)를 사용하여 지정한 path를 사용하여 쓰기 가능한 디렉토리로 가리키도록 설정하십시요. (기본 설정은 /tmp인데, 윈도우즈에서는 유용하지 않을수도 있습니다.)

어쩌면 대소문자를 기리는 파일 시스템안에서 compile하는게 필요할수도 있습니다: 우리가 알아낸 바로는 samba가 장착된 파일 시스템 (모든 파일명을 소문자로 바꾸는 시스템) 에서는 작동되지 않습니다.

R_HOME/src/gnuwin32 명령어창을 열어주세요.

make all recommended vignettes

and sit back and wait while the basic compile takes place.

Notes:


3.1.4 Building the cairo devices

Cairographics에 기초한 장치들 (svg, cairo_pdf, cairo_ps 그리고 type = "cairo"버전의 png, jpeg, tiff 그리고 bmp)은 이들 장치들 중 하나가 처음으로 사용될 때 로드된 서로 다른 DLL winCairo.dll에서 시행됩니다. 이는 기본적으로 빌드되지 않고, make cairodevices에 의해 Rbitmap.dll 뒤에 빌드되어져야만 합니다.

To enable the building of these devices you need to install the static cairographics libraries built by Simon Urbanek at https://www.rforge.net/Cairo/files/cairo-current-win.tar.gz. Set the macro ‘CAIRO_HOME’ in MkRules.local. (Note that this tarball unpacks with a top-level directory src/: ‘CAIRO_HOME’ needs to include that directory in its path.)


3.1.5 인터페이스 제어장치(ICU) 사용하기

It is recommended to build R to support ICU (International Components for Unicode, http://site.icu-project.org/) for collation, as is commonly done on Unix-alikes.

Two settings are needed in MkRules.local,

# set to use ICU
# USE_ICU = YES
# path to parent of ICU headers
ICU_PATH = /path/to/ICU

The first should be uncommented and the second set to the top-level directory of a suitably packaged binary build of ICU, for example that at https://www.stats.ox.ac.uk/pub/Rtools/goodies/ICU_531.zip. Depending on the build, it may be necessary to edit the macro ICU_LIBS.

Unlike on a Unix-alike, it is normally necessary to call icuSetCollate to set a locale before ICU is actually used for collation, or set the environment variable R_ICU_LOCALE.


3.1.6 libcurl에 대한 지원

libcurl version 7.28.0 or later can be used to support curlGetHeaders and the "libcurl" methods of download.file and url.

A suitable distribution can be found via https://www.stats.ox.ac.uk/pub/Rtools/libs.html and its unpacked location should be specified in file MkRules.local.

For secure use of e.g. ‘https://’ URLs Windows users may need to specify the path to up-to-date CA root certificates: see ?download.file.


3.1.7 빌드 확인하기

다음을 실행함으로서 빌드를 테스트 할 수 있습니다.

make check

추천 패키지들은 다음을 통해 확인해 볼 수 있습니다.

make check-recommended

다음을 이용하여 더 철저한 R의 기능들을 검사할 수 있습니다.

make check-devel

다음은 check-develcheck-recommended를 모두 수행합니다.

make check-all

만약 테스트가 실패한다면, 체크된 디렉토리 안에 /Rout.fail 파일이 거의 항상 있을 것 입니다

(종종 tests/Examples 혹은 tests): 문제점을 정확하게 보기위하여 파일을 검토하십시오.

Parallel checking of package sources (part of make check-devel and make check-recommended) is possible: see the environment variable TEST_MC_CORES to the maximum number of processes to be run in parallel.


3.1.8 매뉴얼 빌드하기

The PDF manuals require texinfo 5.1 or later, and can be made by

make manuals

만약에 info 버전을 (레퍼런스 매뉴얼을 제외한 나머지) 생성하고자 한다면, 다음을 이용하세요.

cd ../../doc/manual
make -f Makefile.win info

(이러한 모든 것은 pdftex/pdflatex가 경로상에 설치되어있음을 가정합니다).

페이퍼 사이즈 및 글꼴과 관계된 옵션들을 조정하는 것은 유닉스와 같은 환경에서 Making the manuals을 참고하세요.

By default it is assumed that texinfo is not installed, and the manuals will not be built. The comments in file MkRules.dist describe settings to build them. (Copy that file to MkRules.local and edit it.) The texinfo 5.x package for use on Windows is available at https://www.stats.ox.ac.uk/pub/Rtools/: you will also need to install Perl10


3.1.9 Inno Setup 인스톨러를 빌드하기

You need to have the files for a complete R build, including bitmap and Tcl/Tk support and the manuals (which requires texinfo installed), as well as the recommended packages and Inno Setup (see The Inno Setup installer).

Once everything is set up

make distribution
make check-all

will make all the pieces and the installer and put them in the gnuwin32/cran subdirectory, then check the build. This works by building all the parts in the sequence:

rbuild (the executables, the FAQ docs etc.)
rpackages (the base packages)
htmldocs (the HTML documentation)
cairodevices (the cairo-based graphics devices)
recommended (the recommended packages)
vignettes (the vignettes in base packages:
	   only needed if building from an svn checkout)
manuals (the PDF manuals)
rinstaller (the install program)
crandir (the CRAN distribution directory, only for 64-bit builds)

전체 빌드가 필요하지 않을 경우에는 개별적으로 파트들이 만들어 질 수도 있지만, 초기 파드들은 나중 것들보다 먼저 빌드되어져야만 합니다. (Makefile은 이러한 의존성을 요구하지 않으나 몇몇의 빌드 타겟들은 모든 파일들이 최신임에도 불구하고 많은 연산을 필요로합니다).처음 네가지 타겟들은 만약 make만이 (혹은 make all) 실행되었다면 기본 빌드입니다.

Parallel make is not supported and likely to fail.

만약 여러분이 여분의 패키지들을 추가함으로 사용자 설치를 하고 싶다면, make rinstaller를 다음과 같은 것으로 대체하십시오.

make rinstaller EXTRA_PKGS='pkg1 pkg2 pkg3'

바이너리 배포와 함께 시작하는 인스톨러를 조정하기 위한 다른 방법은 표준 인스톨러로부터 R의 설치를 제일 먼저 만든 후에 패키지들을 추가하고 설치에 다른 커스터마이제이션을 만드는 것입니다.그러고 난 후 (어쩌면 MkRules.local를 통해 커스터마이즈된 MkRules를 이용하여 소스트리에 R을 만들고 난 뒤) src/gnuwin32/installer에서 다음을 실행하십시오.

make myR IMAGEDIR=rootdir

이는 rootdir이 사용자 설치의 루트로의 경로입니다 (띄어쓰기나 백슬래쉬등이 있다면 큰 따옴표 내에 써야 합니다).

위의 두 가지 방법들 모두 (3.3.0)-win.exe와 같은 표준이름과 함께 실행가능한 파일을 생성하기 때문에 커스터마이즈 되었다는 것을 나타내는 이름으로 변경하세요. 만약 커스터마이즈된 인스톨러를 배포하고 싶다면 라이센스 요구사항이 충족되는지 확인하시길 바랍니다. 인스톨러는 GPL-2에 의거하여 배포되고 완전한 소스들(R의 바이너리배포를 시작하더라도 소스를 포함해야하며, (외부 소프트웨어를 포함된) 포함된 어떠한 추가적인 패키지들의 소스들도 포함)을 제공하는 것이 요구된다고 명시할 것입니다.

스타트업 파라미터들을 위한 기본값들 또한 조정될 수 있습니다.

make myR IMAGEDIR=rootdir MDISDI=1

이는 기본값을 SDI 모드에서 R 설치가 실행되도록 하는 인스톨러를 생성할 것입니다. 지정될 수 있는 이름들과 값에 대해서는 src/gnuwin32/installer/Makefile를 참조하십시오

32/64 비트 인스톨러의 표준 CRAN 배포는 첫 번째로 32 비트 R을 빌드 함으로 만들어 집니다 (다음만이 필요합니다)

make 32-bit

그리고 나서 32 비트 빌드의 최상위 디렉토리에 MkRules.local 파일에 매크로 HOME32를 가진 64 비트 R을 빌드합니다. 그 후에 make rinstaller 단계는 아키텍쳐별로 다르게 이미지를 빌드하는 것 처럼 32 비트 빌드에서부터 파일들을 복사합니다


3.1.10 MSI 인스톨러 빌드하기

Microsoft Installer와 함께 사용하기위한 인스톨러를 빌드하는 것 또한 가능합니다. 이는 자동 설치를 필요로 하는 시스템 관리자를 위해 만들어졌으므로, 일반적 사용으로는 추천되지 않습니다.

It makes use of the Windows Installer XML (WiX) toolkit version 3.5 (or perhaps later, untested) available from http://wixtoolset.org/. Once WiX is installed, set the path to its home directory in MkRules.local.

비트맵과 Tcl/Tk 지원과 매뉴얼, 그리고 추천 패키지들을 포함한 완전한 R 빌드를 위한 파일들을 가지고 있어야 합니다. 사용자 지정 스타트업 옵션을 지정하는 옵션이 인스톨러에는 없기때문에, 설정이 필요한 경우에 etc/Rconsoleetc/Rprofile.site를 수정해야 합니다. 그러고 나서 아래를 사용하십시오.

cd installer
make msi

이는 (3.3.0)-win32.msi 와 같은 이름을 가진 파일을 생성할 것입니다. 더블-클릭이 가능하지만, 이를 필요로 하는 사람들은 무엇을 해야 할 지 알것입니다 (일반적으로 추가적인 옵션들과 함께 msiexec /i를 실행함).사용자가 msiexec 명령줄에서 부터 지정하고자 하는 속성들은 ‘ALLUSERS’, (c:\Program Files\R\R-devel와 같은) ‘INSTALLDIR’ 그리고 (시작 메뉴에 있는 R 폴더로의 경로인) ‘RMENU’, 그리고 (c:\Users\name\Documents\R 와 같은 것이 기본값인, R shortcut을 위한 시작 디렉토리) ‘STARTDIR’를 포함합니다.

MSI installer는 R 의 32 비트 빌드 ((3.3.0)-win32.msi)와 R의 64 비트 빌드 ((3.3.0)-win64.msi, 선택적으로 이름이 (3.3.0)-win.msi일 때, macro HOME32를 지정함으로써 32 비트 파일들을 포함합니다), 두 가지 모두에서 빌드될 수 있습니다. 주요 installer와 다르게, 64 비트 MSI installer는 64 비트 윈도우에서만 실행할 수 있습니다.

WiX 을 제안해 주시고 prototype installer를 빌드해주신 David del Campo (Dept of Statistics, University of Oxford)에 감사의 말씀을 전합니다.


3.1.11 64비트 윈도우즈 빌드

R의 64 비트 버전을 구축하기 위해서는 64 비트 toolchain이 필요합니다: 여기에서는 MinGW-w64 (http://sourceforge.net/projects/mingw-w64/) 프로젝트에 기초한 것들만 의논되었으나, Intel과 PGI와 같은 상업용 컴파일러들 역시 사용될 수 있습니다 (그리고 이들은 R의 재배포자들에 의해서 사용되고 있습니다).

MinGW-w64 에 대한 지원은 2008-10 기간 동안 R 소스에서 개발되었고 처음으로 R 2.11.0의 일부분으로 릴리즈 되었습니다. R 을 MinGW-w64 로 이식하는 결정적인 단계에서 Yu Gong의 도움과 MinGW-w64의 주 개발자인 Kai Tietz의 도움이 매우컸으며, 이에 대하여 매우 감사드립니다.

윈도우즈 64 비트는 현재 R과 패키지 구축 시스템들에 완전히 융화되었습니다.


3.2 설치 확인하기

윈도우즈 인스톨러는 R이 구축될 때 사용된 테스트 파일들의 세트를 포함하고 있습니다.

Rtools는 이런 테스트들을 실행하기위해 필요하지는 않지만, 만약 diff가 경로에 있다면 에러에 대하여 더욱 심도있는 분석이 주어지게 될 것입니다. (errorsAreFatal = FALSE 이면 아래가 필요하지 않습니다).

가급적이면 --vanilla와 함께 RguiRterm을 실행한 뒤, 다음을 수행하세요.

Sys.setenv(LC_COLLATE = "C", LANGUAGE = "en")
library("tools")
testInstalledBasic("both")
testInstalledPackages(scope = "base", errorsAreFatal = FALSE)
testInstalledPackages(scope = "recommended", errorsAreFatal = FALSE)

이들은 기본 테스트들을 실행하고 나서 기본 패키지와 추천 패키지들에 모든 테스트들을 실행합니다. 이 테스트들은 어디서든지 실행 될 수 있습니다: (R.home()에 의해 주어진) R home 디렉토리의 test 폴더에 그들의 결과를 쓰기 때문에, R을 설치할 때 사용한 계정에서 실행해야 할 수도 있습니다.

The results of example(md5sums) when testing tools will differ from the reference output as some files are installed with Windows’ CRLF line endings.


4 OS X에서 R 설치하기

The front page of a CRAN site has a link ‘Download R for OS X’. Click on that, then download the file R-(3.3.0).pkg and install it. This runs on OS X 10.9 and later (Mavericks, Yosemite …11).

Installers for R-patched and R-devel are usually available from https://r.research.att.com.

For some older versions of the OS you can in principle (it is little tested) install R from the sources.

It is important that if you use a binary installer package that your OS is fully updated: look at ‘Updates’ from the ‘App Store’ to be sure. (If using XQuartz, check that is current.)

To install, just double-click on the icon of the file you downloaded. At the ‘Installation Type’ stage, note the option to ‘Customize’. This currently shows three components. Everyone will need the ‘R Framework’ component: the ‘R GUI’ and ‘Tcl/Tk’ components are optional (the latter being needed to use package tcltk, and requires an X sub-system to be installed: see OS X.)

This is an Apple Installer package. If you encounter any problem during the installation, please check the Installer log by clicking on the “Window” menu and item “Installer Log”. The full output (select “Show All Log”) is useful for tracking down problems. Note the the installer is clever enough to try to upgrade the last-installed version of the application.

If you update your OS X version, you should re-install R: the installer tailors the installation to the current version of the OS.

For building R from source, see OS X.


4.1 OS X에서 R을 실행하기

There are two ways to run R on OS X from a CRAN binary distribution.

There is a GUI console normally installed with the R icon in /Applications which you can run by double-clicking (e.g. from Launchpad or Finder). (If you cannot find there it was possibly installed elsewhere so try searching for it in Spotlight.) This is usually referred to as R.APP to distinguish it from command-line R: its user manual is currently part of the OS X FAQ at https://cran.r-project.org/bin/macosx/RMacOSX-FAQ.html and can be viewed from R.APP’s ‘Help’ menu.

You can run command-line R from a Terminal12 like any other Unix-alike: see the next chapter of this manual. There are some small differences which may surprise users of R on other platforms, notably the default location of the personal library directory (under ~/Library/R, e.g. ~/Library/R/3.3/library), and that warnings, messages and other output to stderr are highlighted in bold.

It has been reported that running R.APP under Yosemite may fail if no preferences are stored, so if it fails when launched for the very first time, try it again (the first attempt will store some preferences).

Users of R.APP need to be aware of the ‘App Nap’ feature (https://developer.apple.com/library/mac/releasenotes/MacOSX/WhatsNewInOSX/Articles/MacOSX10_9.html) which can cause R tasks to appear to run very slowly when not producing output in the console. Here are three ways to avoid it:

Using the X11 device or the X11-based versions of View() and edit() for data frames and matrices (the latter are the default for command-line R but not R.APP) requires an X sub-system to be installed: see OS X. (As do the tcltk package and some third-party packages.)


4.2 OS X에서 제거하기

R for OS X consists of two parts: the GUI (R.APP) and the R framework. The un-installation is as simple as removing those folders (e.g. by dragging them into the Trash). The typical installation will install the GUI into the /Applications/R.app folder and the R framework into the /Library/Frameworks/R.framework folder. The links to R and Rscript in /usr/bin (or /usr/local/bin from El Capitan) should also be removed.13

If you want to get rid of R more completely using a Terminal, simply run (prepend sudo if needed):

rm -rf /Library/Frameworks/R.framework /Applications/R.app \
   /usr/bin/R /usr/bin/Rscript

The installation consisted of three Apple packages: org.r-project.R.x86_64.fw.pkg, org.r-project.R.x86_64.GUI.pkg and org.r-project.x86_64.tcltk.x11 (not all of which need be installed). You can use pkgutil --forget if you want the Apple Installer to forget about the package without deleting its files (useful for the R framework when installing multiple R versions in parallel), or after you have deleted the files.

Uninstalling the Tcl/Tk component (which is installed under /usr/local) is not simple. You can list the files it installed in a Terminal by

pkgutil --files org.r-project.x86_64.tcltk.x11

These are paths relative to /, the root of the file system.


4.3 Multiple versions

The installer will remove any previous version of the R framework which it finds installed. This can be avoided by using pkgutil --forget (see the previous section). However, note that different versions are installed under /Library/Frameworks/R.framework/Versions as 3.2, 3.3 and so on, so it is not possible to have different ‘3.x.y’ versions installed for the same ‘x’.

A version of R can be run directly from the command-line as e.g.

/Library/Frameworks/R.framework/Versions/3.3/Resources/bin/R

However, R.APP will always run the ‘current’ version, that is the last installed version. A small utility, Rswitch.app (available at https://r.research.att.com/#other), can be used to change the ‘current’ version. This is of limited use as R.APP is compiled against a particular version of R and will likely crash if switched to an earlier version. This may allow you to install a development version of R (de-selecting R.APP) and then switch back to the release version.


5 Running R

어떻게 R을 시작하고 어떤 명령어 라인 옵션들이 사용가능한지는 Invoking R in An Introduction to R 에 설명되어 있습니다.

You should ensure that the shell has set adequate resource limits: R expects a stack size of at least 8MB and to be able to open at least 256 file descriptors. (Any modern OS should have default limits at least as large as these, but apparently NetBSD may not. Use the shell command ulimit (sh/bash) or limit (csh/tcsh) to check.)

R은 여러가지 환경변수들을 사용하는데, 이들의 대다수의 기본값들이 R_HOME/etc/Renviron 파일내에 설정되어 있습니다 (Windows에서는 기본적으로 아무것도 설정되지 않으므로 그러한 파일은 없습니다).이것들은 configure를 할때 설정되며, 일반적으로 R_PAPERSIZE는 제외하고는 이들의 값을 변경할 수는 없습니다.(see Setting paper size). 페이퍼 사이즈는 만약 ‘LC_PAPER’ 로케일 카테고리에 지정된 값이 있고 R_PAPERSIZE가 지정되어 있지 않다면 그 값을 불러옵니다.이것은 일반적으로 현대 유닉스와 같은 환경에서 ‘a4’와 ‘letter’으로부터 올바른 선택을 하도록 해줍니다.(그러나 R_PAPERSIZE를 설정함으로서 항상 변경이 가능합니다).

다양한 환경변수들은 R이 세션마다 사용하는 임시 디렉토리를 어디에 생성하는지 결정하도록 설정할 수 있습니다. 환경변수 TMPDIR, TMP, TEMP가 찾아지고 가장 먼저 설정되고 쓰기권한이 부여된 곳에서 사용이 됩니다. 만약 그렇지 않다면 가장 마지막 선택은 유닉스와 같은 환경에서는 /tmp가 이용되며 윈도우즈에서는 R_USER의 값이 됩니다. R_USER on Windows. The path should be an absolute path not containing spaces (and it is best to avoid non-alphanumeric characters such as +).

일부 유닉스와 같은 시스템에서는 cron에 의해서 실행되는 tmpwatch와 같이 /tmp로부터 정기적으로 파일들과 디렉토리들을 삭제하도록 설정되어 있습니다. 그러한 시스템에서 오랜 작업이 걸리는 것을 실행하기 전에 TMPDIR를 이용하여 다른 디렉토리를 설정하도록 하세요.

TMPDIR은 패키지 설치시에 configure 스크립트를 실행하는데 이용됩니다. 만약 /tmp가 마운트되었다면 TMPDIR은 실행권한이 주어져 있는 디렉토리를 지정하는 것이 필요합니다.


6 Add-on packages

정확한 용어를 사용하는것이 도움이 됩니다. 팩키지library()라는 함수를 사용하여 library에서 로드됩니다. 따라서 library란 설치된 팩키지들이 저장되어있는 디렉토리 입니다; 주된 library는 R_HOME/library 입니다, 그러나 다른 곳도 사용할수 있습니다. 예를들어 환경변수를 R_LIBS으로 설정하던지 R함수인 .libPaths()를 사용하면 됩니다. setting the environment variable R_LIBS or using the R function .libPaths().


6.1 기본(default) 패키지

The set of packages loaded on startup is by default

> getOption("defaultPackages")
[1] "datasets"  "utils"     "grDevices" "graphics"  "stats"     "methods"

(물론 base도 포함합니다) 그리고 이것은 startup 코드에있는 옵션을 설정해서 바꿀수도있습니다 (예 ~/.Rprofile 안에서). 원래 설정은 환경변수인 R_DEFAULT_PACKAGES의 값에 맞춰져있습니다. 이는 (컴마로 구분된 리스트인데) 환경변수 R_DEFAULT_PACKAGES=NULL으로 설정하는것은 base 패키지만 로드될 수 있게 합니다.

기본패키지들의 설정을 바꾸는 것은 보통 스크립팅을 할때 빠르게 할수있도록 세트의 수를 줄이기위해 사용됩니다: 특히 methods를 사용하지않으면 시작할때 시간을 두배까지 줄여 줄 것입니다 (그리고 이것은 Rscript을 통하여 이루어집니다).그러나, 이것은 R을 커스터마이즈 하는데 사용됩니다. 예 수업용으로 쓸때.


6.2 라이브러리 관리하기

R 패키지들은 라이브러리 안에 설치되는데, 이것은 각 패키들을 위한 서브 디렉토리를 포함한 파일시스탬내의 디렉토리입니다.

R은 R_HOME/library이라는 하나의 라이브러리가 따라오는데, 이는 기본 패키지와 추천 패키지들을 포함한 ‘.Library’ 이라는 R 객체의 값입니다 14. 사이트들과 사용자들 모두는 R 세션에서 다른 것들을 생성하거나 그들을 활용할 (혹은 활용하지 않거나) 수 있습니다. 가장 낮은 레벨인 ‘.libPaths()’는 라이브러리의 컬렉션으로나 현재 컬렉션을 리포트 하기위한 경로를 더하도록 사용될 수도 있습니다.

R은 자동으로 site-specific 라이브러리인 R_HOME/site-library가 존재한다면 이를 활용할 것입니다 (이것은 a vanilla R 설치내에 존재하는 것이 아닙니다). 이 위치는 R_HOME/etc/Rprofile.site에 ‘.Library.site’를 설정함으로써 무시할 수 있고, 아니면 (추천하지는 않습니다) 환경값 R_LIBS_SITE을 설정함으로써도 무시할 수 있습니다. ‘.Library’와 같이, 사이트 라이브러리들은 항상 ‘.libPaths()’에 의해 포함되어집니다. environment variable R_LIBS_SITE. Like ‘.Library’, the site libraries are always included by ‘.libPaths()’.

사용자들은 하나 이상의 라이브러리들을 가질 수 있고, 보통 환경값 R_LIBS_USER에 의해 지정됩니다. (무엇인지 보기 위해서는 R 세션의 ‘Sys.getenv("R_LIBS_USER")’ 를 사용하십시오). 이는 기본 값이 있지만, 상응하는 디렉토리가 실제로 존재할 때만 사용됩니다(기본적으로는 존재하지 않습니다).

R_LIBS_USERR_LIBS_SITE 두 가지 모두 colon들로 분리되어진 (윈도우즈에서는 semicolon들) 여러개의 라이브러리 경로들을 지정할 수 있습니다.


6.3 패키지 설치하기

패키지들은 소스형태 또는 컴파일드된 바이너리 형태로 배포 될 수도 있습니다. C/C++/Fortran 코드를 포함하는 소스 패키지들을 설치하는 것은 컴파일러 또는 연관된 도구들이 설치가 되어 있어야 합니다. Binary 패키지들은 플랫폼 종속이고 일반적으로 특별한 도구들의 설치가 필요하지 않지만, 자세한 사항은 여러분의 플랫폼에 관한 문서를 참고하십시오.

만약 하나 이상의 라이브러리가 존재할 때, 그 라이브러리에 어떤 패키지에 설치되는지를 함축적으로나 명시적으로 지정해 야할 수도 있습니다.

반드시 환경값 TMPDIR이 unset (그리고 ’/tmp’이 존재하여 그 곳에 쓰여지고 실행될 수 있도록)이거나 유효한 임시 디렉토리로 향하도록 하십시오.

대부분의 사용자들에게는 만약 인터넷 사용이 가능하고 CRAN 패키지를 설치 하고자 하는 의도라면 ‘install.packages(pkgname)’나 그의 GUI에 상응하는 것을 부르는 것으로 충분합니다. 대부분의 시스템들에서 ‘install.packages()’는 패키지들이 list box에서 선택되도록 허용할 것입니다.

To install packages from source on a Unix-alike use in a terminal

R CMD INSTALL -l /path/to/library pkg1 pkg2

일반 R 세션의 첫 번째 라이브러리가 사용되었을 경우에는 (.libPaths()[1]에 의해 보여집니다) ‘-l /path/to/library’ 부분이 생략될수 있습니다.

여러가지의 옵션들이 사용가능합니다: 현재 목록을 보기위해서는R CMD INSTALL -–help를 사용하십시오.

그렇지 않으면, 패키지들은 R내에서 다운로드되고 설치될 수 있습니다. 첫 번째로, 옵션 CRANchooseCRANmirror()을 사용하여 가장 가까운 CRAN mirror로 설정하십시오. 그리고 나서 다음을 사용하여 pkg1pkg2 패키지 들을 다운로드하고 설치하십시오.

> install.packages(c("pkg1", "pkg2"))

위의 패키지들의 필수 dependency들 또한 fetch될 것입니다. (인자 lib로) 라이브러리가 지정되있지 않은 이상 라이브러리 검색 경로이 첫 번째 라이브러리가 사용됩니다: 만약 쓸 수 없다면, R은 사용자에게 (interactive 세션에서) 기본 사용자 라이브러리를 생성할 지와, 그 곳에 패키지들을 설치하는 것이 허용되는지를 물을 것 입니다.만약 여러분이 (어떤 식으로든) 미리 설치되지 않은 패키지와 그에 종속하는 모든것들을 fetch하기를 원한다면 다음의 예제를 사용하십시오.

If you want to fetch a package and all those it depends on (in any way) that are not already installed, use e.g.

> install.packages("Rcmdr", dependencies = TRUE)

install.packages는 인자 reposNULL로 설정함으로써 로컬 ’.tar.gz로 부터source 패키지를 설치할 수 있습니다: 이는 주어진 이름이 하나의 ’.tar.gz 파일일 경우에 자동으로 선택될 것입니다.

install.packages를 사용하여, 인자 repos로 character vector 처럼 지정된, 몇몇의 저장소들을 볼 수 있습니다: 이들은 CRAN mirror,Bioconductor, Omegahat, R-forge, 로컬 archive들, 로컬 파일들 등을 포함 합니다. setRepositories() 함수는 R 설치가 감지하는 저장소들 중에 선택 을 할 수 있습니다.

어리숙한 사용자들은 패키지의 설치와 함께 그의 기능을 사용하기위해서 library 를 사용해야 한다는 사실을 가끔 잊습니다.


6.3.1 Windows

What install.packages does by default is different on Unix-alikes (except OS X) and Windows. On Unix-alikes it consults the list of available source packages on CRAN (or other repository/ies), downloads the latest version of the package sources, and installs them (via R CMD INSTALL). On Windows it looks (by default) first at the list of binary versions of packages available for your version of R and downloads the latest versions (if any). If no binary version is available or the source version is newer, it will install the source versions of packages without compiled C/C++/Fortran code, and offer to do so for those with, if make is available (and this can be tuned by option "install.packages.compile.from.source").

윈도우즈에서 install.packages는 인자 reposNULL. Rgui.exe로 설정함으로 써 로컬 ’zip’파일에서부터 binary 패키지도 설치할 수 있습니다. 이는 install.packages,update.packages 그리고 library로의 GUI 인터페이스를 가진 메뉴 Packages를 가지고 있습니다.

R의 윈도우즈 binary 패키지들은 둘 중 하나 혹은 두 개 모두의 architecture들을 포함하고 있는 하나의 binary로 요즘 배포되고 있습니다.

A few of the binary packages need other software to be installed on your system: see for example https://CRAN.R-project.org/bin/windows/contrib/3.2/@ReadMe. Packages using Gtk+ (Cairo, RGtk2, cairoDevice and those that depend on them) need the bin directory of a bundled distribution of Gtk2 from http://www.gtk.org/download/win32.php or http://www.gtk.org/download/win64.php in the path: it should work to have both 32- and 64-bit Gtk+ bin directories in the path on a 64-bit version of R.

R CMD INSTALL works in Windows to install source packages. No additional tools are needed if the package does not contain compiled code, and install.packages(type="source") will work for such packages (and for those with compiled code if the tools (see The Windows toolset) are in the path). We have seen occasional permission problems after unpacking source packages on some systems: these have been circumvented by setting the environment variable R_INSTALL_TAR to ‘tar.exe’.

If you have only a source package that is known to work with current R and just want a binary Windows build of it, you could make use of the building service offered at http://win-builder.r-project.org/.

거의 대부분의 패키지들에서, 윈도우즈의 64비트 버전에서 R의 32/64 비트 설치를 실행한다면, R CMD INSTALL는 패키지의 32 비트와 64비트 빌드 두 가지 모두를 시도할 것입니다. 다른 architecture가 성공적으로 설치가 되 었건 되지 않았건, R을 돌리는 architecture의 설치가 성공한다면, 이는 성공이라고 리포트를 할 것입니다.예외 사항은, 비어있지 않은 ’configure.win’ 스크립트를 가진 패키지 혹은’src/Makefile.win’를 활용하는 패키지들입니다. 만약 ’configure.win’이 두 가지 모두의 architecture들에 알맞은 무언가를 한다면 --force-biarch 옵션을사용하십시오: 그렇지 않으면 각각의 32-비트와 64-비트 설치를 통합하기위하여 source 타르볼에 R CMD INSTALL --merge-multiarch가 적용될 수 있습니다. (이는 타르볼에만 적용될 수 있고, 두 가지 모두의 설치가 성공할 경우에만 성공할 것입니다.)

만약 compile된 코드가 없는 패키지를 가지고 있고 윈도우에 알맞은 도움말이 없다면, 다른 OS에서의 설치를 중단하고 윈도우즈에서 zip 파일을 설치하십시오. 하지만, 이런 패키지는 추가의 도구 없이 윈도우즈의 source들에서 설치될 수 있습니다.

There is provision to make use of a system-wide library of installed external software by setting the make variable LOCAL_SOFT, to give an equivalent of /usr/local on a Unix-alike. This can be set in src/gnuwin/MkRules.local when R is built from sources (see the comments in src/gnuwin/MkRules.dist), or in file15 etc/i386/Makeconf or etc/x64/Makeconf for an installed version of R. The version used by CRAN can be installed as described in Building from source.


6.3.2 OS X

On OS X install.packages works as it does on other Unix-alike systems, but there are additional types starting with mac.binary (available for the CRAN distribution but not when compiling from source: mac.binary.mavericks for a ‘Mavericks’ build with "default" a synonym for the appropriate variant) which can be passed to install.packages in order to download and install binary packages from a suitable repository. These OS X binary package files have the extension ‘.tgz’. The R.APP GUI provides menus for installation of either binary or source packages, from CRAN or local files.

On R builds using binary packages, the default is type both: this looks first at the list of binary packages available for your version of R and installs the latest versions (if any). If no binary version is available or the source version is newer, it will install the source versions of packages without compiled C/C++/Fortran code and offer to do so for those with, if make is available.

Note that most binary packages including compiled code are tied to a particular series (e.g. R 3.2.x or 3.3.x) of R.

Installing source packages which do not contain compiled code should work with no additional tools. For others you will need the ‘Command Line Tools’ for Xcode and compilers which match those used to build R: see OS X.

Package rJava and those which depend on it need a Java runtime installed and several packages need X11 installed, including those using Tk. See OS X and Java (OS X).

Tcl/Tk extensions BWidget and Tktable are part of the Tcl/Tk contained in the R installer. These are required by a number of CRAN and Bioconductor packages.

A few of the binary packages need other software to be installed on your system. In particular packages using Gtk+ (RGtk2, cairoDevice and those that depend on them) need the GTK framework installed from https://r.research.att.com/libs/: the appropriate version at the time of writing was https://r.research.att.com/libs/GTK_2.24.17-X11.pkg

The default compilers specified in /Library/Frameworks/R.framework/Resources/etc/Makeconf depend on the version of OS X under which R was installed, and are appropriate to the latest version of the command-line tools for that version of OS X. The settings can be changed, either by editing that file or in a file such as ~/.R/Makevars (see the next section). Entries which may need to be changed include ‘CC’, ‘CXX’, ‘FC’, ‘F77’, ‘FLIBS’ and the corresponding flags, and perhaps ‘CXXCPP’, ‘DYLIB_LD’, ‘MAIN_LD’, ‘SHLIB_CXXLD’, ‘SHLIB_FCLD’ and ‘SHLIB_LD’.

So for example you could select clang for both C and C++ with extensive checking by having in ~/.R/Makevars

CC=clang
CXX=clang++
CFLAGS=-mtune=native -g -O2 -Wall -pedantic -Wconversion
CXXFLAGS=-mtune=native -g -O2 -Wall -pedantic -Wconversion

and for a version of gfortran-4.2 we needed

FLIBS=-lgfortran

6.3.3 패키지 컴파일을 조정하기

R 시스템과 패키지 특정 편집 flag들은 개인 파일인 ’HOME/.R/Makevars-R_PLATFORM’ (하지만 윈도우즈에서는 ’HOME/.R/Makevars.win’ 혹은 ’HOME/.R/Makevars.win64)’에서 알맞은 Make 값들 을 설정함으로써 무시되거나 더해질 수 있습니다. 혹은 이가 존재하지 않는 다면 ‘R_PLATFORM’이 R이 구축된 곳의 플랫폼인 경우 HOME/.R/Makevars이 R variable R.versionplatform 구성에서 사용가능합니다.

예를 들어, Gnu compiler 컬렉센인 GCC의 도구들을 위한 -Wall –pedantic와 같은 패키지 개발자들에게 compile을 할 때 합리적인 양의 진단 메세지 (“경고”)를 받을 수 있도록 하기위하여 이 방법을 사용하도록 권해집니다.

이 방법은 다음의 예와 같이 특정한 패키지의 optimization 레벨을 바꾸는 것이 필요할 때도 사용된다는 것을 유의하십히오.

## for C code
CFLAGS=-g -O -mtune=native
## for C++ code
CXXFLAGS=-g -O -mtune=native
## for Fortran code
FFLAGS=-g -O -mtune=native
## for Fortran 9x code
FCFLAGS=-g -O -mtune=native

(적절하다면 sub-architecture-specific 디렉토리의) ’R_HOME/etc’에 있는 ’Makevars.site’ 파일의 사이트 전체에 대한 항목도 있습니다. 이는 ’Makeconf’ 바로 다음에 읽혀집니다.


6.3.4 Multiple sub-architectures

패키지의 source들에서부터 패키지를 설치할 때, sub-architecture들을 사용하는 설치에 대해 추가로 고려해 볼 것들이 몇 가지 있습니다. 이들은 윈도우즈에서 보통 사용되고 OS X에서도 사용되었었지만, 이론상으로는 다른플랫폼에서도 사용할 수 있습니다.

Source 패키지가 여러개의 sub-architecture들을 제공하는 R의 빌드에 의하여 설치 되었을 때, 일반적인 설피 과정은 모든 sub-architecture들에 패키지를 설치하지만, 현재 sub-architecture에서 로드될 수 있는 것들만 테스트합니다. 예외 사항들은 다음과 같습니다.

유닉스 계열

Configure’ 스크립트가 있거나 ’src/Makefile’ 파일이 있는 곳.

Windows

비어있지 않은 ’configure.win’ script나 ’src/Makefile.win’이 있는 곳 (패키지가 architecture-independent ’configure.win’을 가지고 있거나--force-biarch가 그를 주장하기위해 사용되었다고 알려져 있는 곳의 몇몇 의 예외사항이 있습니다).

위의 경우들에는 현재의 architecture만이 설치됩니다. 추가의 sub-architecture들은 다음에 의해서 설치될 수 있습니다.

R CMD INSTALL --libs-only pkg

추가의 sub-architecture을 선택하기위해 R로의 경로나 R --arch을 사용합니다. 윈도우즈에서, source 타르볼로 시작하는, 두 개의 architecture들을 구축하고 통합하기위한 R CMD INSTALL --merge-multiarch도 있습니다.OS X에서, 여러개의 sub-architecture들은 R 3.0.0: ‘x86_64’ (현재 기본),‘i386’ 그리고 Lion과Tiger ‘ppc’와 ‘ppc64’에 앞서 일반적으로 사용되었습니다.


6.3.5 Byte-compilation

The base and recommended packages are byte-compiled by default. Other packages can be byte-compiled on installation by using R CMD INSTALL with option --byte-compile or by install.packages(type = "source", INSTALL_opts = "--byte-compile").

모든 기여 패키지들이 바이트 컴파일드 일 때 정확하게 작동하는 것은 아닙니다 (예를 들어 이는 namespace들의 sealing을 방해합니다). 대부분의 패키지들에서 (특히 compile된 코드의 사용을 대규모로 사용하는) 천천히 빨라집니다.. 패키지가 자주 사용되지 않는 이상, 바이트 편집에서의 시간을 보내는 것은 실행하면서 단축한 시간을 초과할 수도 있습니다: 또한 바이트 편집은 패키지가 설치된 사이즈에 상당한 무리를 줄 수 있습니다.

바이트 편집은 각각의 패키지를 ’DESCRIPTION’ 파일 안의 ‘ByteCompile’ 필드를 이용하여, 조정할 수 있습니다.


6.4 패키지 업데이트 하기

명령어 update.packages()는 여러분의 시스템이 최신식인지를 확실하게 하기위한 가장 간단한 방법입니다. 인자 repos를 전의 섹션에서 처럼 설정하십시오. update.packages()는 사용가능한 패키지와 그들의 현재 버전들의 목록을 다운로드하고, 이를 설치된 것들과 비교하고 fetch를 제안하며 저장소들에 가장 최근 버전들을 가진 것들을 모두 설치합니다.

패키지를 최신식으로 보존하기위한 다른 인터페이스는 설치된 패키지들와 여러개의 저장소에서 이용가능한 패키지들의 정보를 가지고 있는 object를 return하는 packageStatus()에 의해 제공됩니다. Printsummery 방식들은설치되고 사용가능한 패키지들을 개괄적으로 보여주고, upgrade 방식은 fetch와 오래된 패키지들의 최신 버전들의 설치를 제공합니다.

하나의 가끔 유용한 추가의 정보 조각은, packageStatus()가 반환하는 것은 "ok", "upgrade" 혹은 "unavailable"와 같은 패키지의 상태라는 것입니다 (현재 선택된 저장소 안에서). 예를들어

> inst <- packageStatus()$inst
> inst[inst$Status != "ok", c("Package", "Version", "Status")]
                  Package Version      Status
Biobase           Biobase   2.8.0 unavailable
RCurl               RCurl   1.4-2     upgrade
Rgraphviz       Rgraphviz  1.26.0 unavailable
rgdal               rgdal  0.6-27     upgrade

6.5 패키지 제거하기

패키지 삭제에는 여러가지 방법이 있습니다.. 명령 프롬프트 에서 다음의 명령어를 이용해 지울 수 있습니다.

R CMD REMOVE -l /path/to/library pkg1 pkg2

현재 진행중인 R 프로세스의 패키지는 다음 명령어로 삭제 할 수 있습니다.

> remove.packages(c("pkg1", "pkg2"),
                  lib = file.path("path", "to", "library"))

마지막으로, 설치된 대부분의 패키지는 라이브러리안의 패키지 디렉토리에서 지울 수 있습니다.


6.6 패키지 저장소(repository) 설정하기

Utilities such as install.packages can be pointed at any CRAN-style repository, and R users may want to set up their own. The ‘base’ of a repository is a URL such as http://www.omegahat.org/R/: this must be an URL scheme that download.packages supports (which also includes ‘ftp://’ and ‘file://’ and on most systems ‘https://’). Under that base URL there should be directory trees for one or more of the following types of package distributions:

(Areas "mac.binary.leopard" and "mac.binary" are no longer in use.)

각각의 터미널 디렉토리는 ’PACKAGES’ 파일도 포함해야만 합니다. 이는 빈 줄들에 의해 나누어진 패키지들의 ’DESCRIPTION’ 파일들의 연속일 수 있지만,아주 약간의 필드만이 필요합니다. 그런 파일을 설정하는 가장 간단한방법은 tools 패키지에서 write_PACKAGES 함수를 쓰는 것이고, 이에대한 도움말은 어떤 필드들이 필요한지 설명합니다. 추가적으로 ’PACKAGES’의gzip-압축된 버전인 ’PACKAGES.gz’ 파일도 있을 수 있습니다. 왜냐하면, ’PACKAGES’보다 우선적으로 다운로드 될 것이고, 이는 큰 저장소들에 포함되어야만 합니다. (만약 여러분이 존재하지 않는 파일들을 바르게 보고하지 않는 잘못 구성된 서버를 가지고 있다면 PACKAGES.gz가 필요할 것입니다.)

setRepositories()에 의해 제공되는 리스트로 당신의 저장소를 추가하기 위해서는, 그 함수에 대한 도움말 파일을 참조하십시오.

불완전한 저장소들은 저장소처럼 설정되는 것을 통하는 것보다 contriburl 인자를 통해 지정되는 것이 더 낫습니다.

하나의 저장소는 서브디렉토리들 안의 패키지들이 ’PACKAGES ’파일들에 있는 설명들이 다음과 같은 형태의 줄을 포함해야만 할 때, 서브디렉토리들을 포함할 수 있습니다.

Path: path/to/subdirectory

다시 한 번 말하지만 write_PACKAGES 가 이를 설정하는 가장 간단한 방법입니다.


6.7 설치된 소스패키지를 확인하기

서브아키텍처들을 사용하는 플랫폼에는 특히 , 설치된 패키지에 R CMD check 실행하는 것이 편할 수도 있습니다. 디렉토리 ’pkgname’(혹은 타르볼 파일 이름)에서의 소스 패키지와 함께, 이를 어떻게 하는지의 outline은다음과 같습니다.

R CMD INSTALL -l libdir pkg > pkg.log 2>&1
R CMD check -l libdir --install=check:pkg.log pkg

서브아키텍처들이 사용되고있는 곳에서, R CMD check 줄은 아래에 의해서 추가적인 아키텍처들과 함께 반복될 수 있습니다.

R --arch arch CMD check -l libdir --extra-arch --install=check:pkg.log pkg

여기에서 --extra-arch는 설치된 코드에 의존하는 체크들과 source들을 분석하지 않는 체크들만을 선택합니다. (만약 여러개의 서브아키텍처들이오직 다른 설정들이 필요하기 때문에 실패하는 것이라면, --no-multiarchINSTALL 줄에 추가되어야 할지도 모릅니다.) (Mac) OS X와 다른 유닉스 계열들에서 실행하기위한 아키텍처는 –arch에 의해 선택됩니다: 이는 ’R_HOME/bin/R.exe’로 윈도우즈에서도 사용될 수 있지만, 원하는 아키텍처의 Rcmd.exe로의 경로를 선택하는 것이 더 흔합니다.

그래서 윈도우즈에서 설치를 하려면, 다른 플랫폼에서 테스트 된 타르볼에 서의 배포를 위한 패키지 와 소스 패키지를 검사하십시오. 여러분은 다음을 사용할 수 있습니다.

.../bin/i386/Rcmd INSTALL -l libdir tarball --build > pkg.log 2>&1
.../bin/i386/Rcmd check -l libdir --extra-arch --install=check:pkg.log pkg
.../bin/x64/Rcmd check -l libdir --extra-arch --install=check:pkg.log pkg

여러분은 환경변수와 경로를 위한 다른 설정으로된 다른 쉘에서 두 번째 와 세 번째 줄을 실행하고 싶어할 지도 모릅니다 (외부의 소프트웨어를 찾기 위해서, 특히 Gtk+을 위한).

R CMD INSTALLi386 설치를 할 수 있고 다음에 의한 하나의 명령으로 x64 DLL를 추가할 수 있습니다.

R CMD INSTALL --merge-multiarch -l libdir tarball

그리고 –build가 설치를 압축 하기위해서 추가될 수 있습니다.


7 Internationalization and Localization

Internationalization(국제화)는 인간이 사용하는 많은 언어를 지원할 수 있도록 하는 프로세싱을 의미하며, localization(지역화)란 특정국가와 언어에 적용하는 것을 의미합니다.

현재 제공되는 R 빌드들은 운영체제들이 다룰 수 있는 모든 문자형 셋들을 지원하고 있습니다. 이것은 locale(로케일)을 통하여 해석되어 보여지게 되는데, 이는 충분히 복잡하여 하나의 독립적인 섹션으로 다루어 질 정도의 주제입니다.또한, R은 오른쪽에서 왼쪽으로 쓰는 언어와 양방향 출력을 지원하는 기능을 내장하고 있지 않지만, 이러한 것들은 운영체제가 제공하는 서비스에 의존합니다.예를들면, 영어와 히브루 문자들이 함께 존재하는 UTF-8형식의 문자형 벡터들이 어떻게 출력되는가는 운영체제 별로 달라지게 됩니다 (그리고 로케일별로 달라질 수 있습니다).

국제화의 또 다른 측면은 메시지들의 번역을 지원하는 것입니다. 이것은 대부분의 모든 R 빌드에서 이용할 수 있게 되어 있습니다.


7.1 로케일(locales)

locale(로케일)은 사용자의 지역적인 환경에 대한 설명인데, 이는 선호하는 언어, 문자들의 인코딩, 사용되는 화폐단위와 표기 등이 포함됩니다.로케일과 관련된 부분들은 R함수 Sys.getlocaleSys.localeconv에 의하여 접근되어집니다.

로케일을 명명하는 방식은 운영체제별로 다릅니다. 이에 대한 일반적인 작동방식은 동일하지만 실제적인 구현에 대한 내용은 그렇지 않습니다. 로케일은 다음과 같은 것들을 지정할 필요가 있습니다.

R은 기본적으로 번역자를 위하여 첫번째 사항과 세번째 사항에 중점을 두고 있습니다. 문자셋은 언어로부터 추론할 수도 있습니다. 이는 어떤 운영체제들이 언어별로 오로지 하나의 문자셋을 제공하고 있기 때문입니다. 그리고 대부분의 운영체들은 대부분의 언어들에 대해서 오로지 하나의 문자집합을 가지고 있습니다.


7.1.1 유닉스와 같은 환경에서의 로케일

현대의 리눅스는 ‘en_GB’, ‘en_GB.UTF-8’, ‘aa_ER.UTF-8@saaho’, ‘de_AT.iso885915@euro’와 같은 형식을 가지고 있는XPG16 로케일 지정을 사용합니다.(더 자세한 내용은 man loaclelocale -a을 살펴보세요). 대부분의 유닉스와 유사한 환경에서 비슷한 스킴이 사용됩니다: 일부 (리눅스를 포함)는 ‘.UTF-8’ 보다 ‘.utf-8’을 사용하기도 합니다.

Note that whereas UTF-8 locales are nowadays almost universally used, locales such as ‘en_GB’ use 8-bit encodings for backwards compatibility.


7.1.2 윈도우즈에서의 로케일

Windows also uses locales, but specified in a rather less concise way. Most users will encounter locales only via drop-down menus, but more information and lists can be found at https://msdn.microsoft.com/en-us/library/hzz3tw78(v=vs.80) (or if Microsoft moves it yet again, search for ‘Windows language country strings’).

언어별로 오로지 하나의 인코딩만을 제공합니다.

윈도우즈의 로케일명을 사용할때는 다소 주의가 필요합니다. 예를들면 chinese는 중국어 번체를 의미하지 많은 중국인들이 사용하는 간체를 의미하지 않습니다.


7.1.3 OS X에서의 로케일

OS X supports locales in its own particular way, but the R GUI tries to make this easier for users. See https://developer.apple.com/documentation/MacOSX/Conceptual/BPInternational/ for how users can set their locales. As with Windows, end users will generally only see lists of languages/territories. Users of R in a terminal may need to set the locale to something like ‘en_GB.UTF-8’ if it defaults to ‘C’ (as it sometimes does when logging in remotely and for batch jobs: note whether Terminal sets the LANG environment variable is an (advanced) preference, but does so by default).

내부적으로 OS X는 리눅스와 유사한 형식을 이용합니다.이는 XPG가 아닌 ICU 로케일 ID (http://userguide.icu-project.org/locale)에 기반을 두는데, Sys.setlocale()과 같은 유틸리티가 일반적으로 XPG 형식을 수용합니다.그래서 de_AT.ISG8859-155와 같은 로케일을 보여주게 됩니다: 다른 유닉스와 비슷한 환경과 다른 점은 UTF-8이 가정되는 문자셋이 지정되지 않다는 것입니다.


7.2 Localization of messages

메시지에 대하여 우선적으로 선택되는 언어는 기본적으로 로케일로부터 정해지게 됩니다. 이것은 먼저 환경변수 LANGUAGE에 의해서 변경될 수 있으며17, 이후에 LC_ALL, LC_MESSAGES, LANG이라는 환경변수에 의하여서도 변경될 수 있습니다. (마지막 세가지가 일반적으로 로케일을 설정하는데 사용되지만, 꼭 필요한 것은 아닙니다. 첫번째 것은 오로지 메시지의 언어를 선택하는데 사용됩니다). 코드는 열심히 로케일을 언어에 매칭하려고 하지만 일부 시스템 (특히 윈도우즈)는 환경변수 LC_ALL에 필요한 로케일이름들이 XPG 랭귀지명과 완전히 일치하지 않습니다. 따라서, LANGUAGE는 지정되어야 할 필요가 있습니다.(하나의 예로 윈도우즈에서 ‘LC_ALL=es’는 로케일을 에스토냐로 하고 언어는 스패니쉬로 설정합니다).

보통은 R이 실행중일때 Sys.setlocale("LC_MESSAGES", "new_locale")을 이용하거나, 만약 변경하고자 하는 언어가 현재의 문자셋이 제공된다면 LANGUAGE와 같은 환경변수를 이용하여 변경할 수 있습니다 18. 그러나, 이는 운영체제별로 다르며, 업그레이드시 중단되기도 한다고 알려져 있습니다.

메시지는 도메인들로 나뉘어지며, 각 도메인들에서 일부 또는 모든 메시지들에 대한 번역이 가능합니다. R은 다음과 같은 도메인을 이용합니다.

이렇게 도메인을 나누는 것은 R을 확장가능하도록 해줍니다: 패키지가 로드될때, 메시지 번역 카탈로그들도 함께 로드됩니다.

R은 번역의 지원없이 빌드될 수 있으나, 기본적으로는 지원하도록 되어 있습니다.

R-level and C-level domains are subtly different, for example in the way strings are canonicalized before being passed for translation.

번역은 현재 가능한 정확하게 지정된 언어에 따라서 도메인에 의하여 찾아지게 됩니다.예를들면, 오스트리안 (‘de_AT’) 번역 카탈로그는 오스트리안 사용자들을 위하여 일반 독일어 (‘de’)의 사용보다 우선합니다.그런데, 만약 특정한 번역 카탈로그가 존재하지만 번역을 포함하고 있지 않다면 덜 정교한 번역이 보여집니다.예를들면, R은 Americanisms를 English19로 보여주는 카탈로그 ‘en_GB’를 가지고 있습니다.두가지 추가적인 예가 있습니다.스페인에서 사용되는 스패니쉬인 ‘es’이라는 카탈로그가 있는데, 이들은 기본적으로 Spanish-speaking Latin American 국가에서 사용됩니다. 그리고 브라질 로케일에서 사요되는 ‘pt_BR’은 포르투칼어를 지정하는 로케일과는 다릅니다.

번역의 언어가 올바르지만 잘못된 문자셋은 때에 따라서 재인코딩과정을 거칩니다. LANGUAGE 변수만이 콜론으로 된 구분될 수 있는 리스트일 수 있습니다. 예를들면, ‘se:de’이와 같이 언어선호도를 표시하는 것입니다. 특별한 것은 ‘en@quot’인데, 이는 UTF-8 로케일에서 미국식 에러 메시지에서 이용되는 작은 따옴표 두개의 사용이 한 쪽 방향의 유니코드식 큰 따옴표로 표시되게 해주는 것입니다.

만약 적합한 번역 카탈로그를 찾을 수 없거나 특정 메시지가 어떤 적합한 카탈로그에서 번역되어 있지 않다면 이는 영어20.가 사용되게 됩니다.

See https://developer.r-project.org/Translations30.html for how to prepare and install translation catalogues.


8 32와 64 비트간의 선택

Almost all current CPUs have both 32- and 64-bit sets of instructions. Most OSes running on such CPUs offer the choice of building a 32-bit or a 64-bit version of R (and details are given below under specific OSes). For most a 32-bit version is the default, but for some (e.g., ‘x86_64’ Linux and OS X >= 10.6) 64-bit is.

모든 현재 R 버전들은 32 비트 integer들과 ISO/IEC, 60559(IEEE), doule-precision reals을 사용하고, 그러므로 인해 동일한 정확성과 제한된 숫자의 양을 산출합니다. double-precision real들을 numerical quantities의 크기에 같은 제한이 있 그 밖에 크게 다른점은 포인터들의 크기입니다.

64 비트 구축은 장점과 단점 두 가지 모두를 가지고 있습니다:

그래서, 속도를 위해서라면 32-비트 구축을 쓸 수도 있지만, 큰 데이터 셋 들 (아마도 큰 파일들도) 다루기 위해서는 64-비트 구축을 쓰기를 원할 것 입니다. 종종 같은 장소에 두 가지 모두를 구축하고 설치할 수도 있습니다: See Sub-architectures 를 참조하세요. (이는OS X와 윈도우지의 이항분포들에서 행해졌습니다.)

R의 64-비트 구축에서도 (특히 FORTRAN 코드의) stem이 32-비트 정수들의 사용에서부터 나온 R object들의 크기에대한 제한이 있습니다 (help("Memory-limits")를 참조하세요). 예를 들어, 하나의 array의 크기는 2^{31} – 1로 제한됩니다.


9 The standalone Rmath library

배포를 지원하는 routine들과 R의 특정한 함수21들 그리고 몇몇의 다른것들은 C header 파일 ’Rmath.h’ 안에서 표명됩니다. 이것 들은 다른 어플리케이션과 의 연결을 위해서 독립 라이브러리로 컴파일될 수 있습니다. (R이 구축될 때의, 이것들은 따로 떨어져 있는 라이브러리가 아니고, 독립 버전 가지의 방법으로 차이가 있다는 것을 유의하십시오.)

makefiles와 필요한 다른 소스들은 디렉토리 ’src/nmath/standalone’에 있습니다. 그러므로 다음의 설명들은 (소스들로부터 떨여져 있다면 유닉스 계열의 구축 디렉토리 tree안에 있는) 현재의 working 디렉토리를 가정합니다.

Rmath.h contains ‘R_VERSION_STRING’, which is a character string containing the current R version, for example "3.3.0".

다음의 함수와 macro의 특별 버전들을 통해 NaN, Inf와 –Inf의 R의 처리에대한 전체 access권한이 있습니다.

    ISNAN, R_FINITE, R_log, R_pow and R_pow_di

그리고 (외적) 상수들로드 R_PosInf, R_NegInfNA_REAL 가 있습니다.

특히 NA_INTEGER 혹은 double들에 대한 NANaN의 구별과 같은 R의 missing 값들에 대한 개념에 대한 지원이 없습니다.

난수 routine들을 사용을 하기 위해 약간 신경 쓸 필요가 있습니다. 여러분은 일정한 난수 생성기를 공급할 필요가 있을 것 입니다.

    double unif_rand(void)

뿐만 아니라 공급된 것을 사용할 수 도 있습니다. (공유된 라이브러리나 DLL과 함께 entry point를 가진 Marsaglia-multicarry를 사용 해야만 합니다.)

    set_seed(unsigned int, unsigned int)

to set its seeds).

일반적인 난수 생성기를 바꾸기위한 기능들이 상수 N01_kind를 통하여 이용가능 합니다. 이는 다음의 열거 종류들에서부터 값을 얻습니다.

typedef enum {
    BUGGY_KINDERMAN_RAMAGE,
    AHRENS_DIETER,
    BOX_MULLER,
    USER_NORM,
    INVERSION,
    KINDERMAN_RAMAGE
} N01type;

(그리고 ‘USER_NORM’ 은 사용 가능하지 않습니다).


9.1 유닉스 계열

만약 R이 디렉토리 tree안에 미리 만들어지지 않았다면, 메인 빌드 설명서에서 설명된 것 처럼 configure이 실행되어야만 합니다. 그리고 나서 (에서)

Then (in src/nmath/standalone)

make

는 src/nmath/standalone 경로 안에서 독립 라이브러리 ’libRmath.a 와 ’libRmath.so (Mac OS X에서는 ’libRmath.dylib )를 만들 것 입니다:‘make static’과 ‘make shared’는 그들 중 하나만을 생성할 것입니다.

To use the routines in your own C or C++ programs, include

#define MATHLIB_STANDALONE
#include <Rmath.h>

그리고 ‘-lRmath’ (당신의OS에서 필요하다면 ‘-lm’도)에 맞대어 연결하십시오. 예제 파일 ’test.c’은 유용한 것을 하지는 않지만, (make test를 통해)프로세스를 검사하도록 제공됩니다. libRmath.so’를 포함한 디렉토리를 LD_LIBRARY_PATH 환경값으로 더하지 않는 이상, 아마도 이를 실행하지 못할 것이라는 것을 유의하십시오.

The targets

make install
make uninstall

위의 타겟들은 ’header Rmath.h’와 공유된 것들 그리고 (만약 빌드되었다면) static 라이브러리들을 설치(혹은 삭제)할 것입니다. 메인 빌드에서 설명된 것 처럼, 더불어 더 정확한 컨드롤이 가능한 prefix=DESTDIR 두 가지 모두가 지원됩니다.

make install’은 다음의 예에 의해 사용되어지는 pkg-config를 위한 파일 을 설치합니다.

$(CC) `pkg-config --cflags libRmath` -c test.c
$(CC) `pkg-config --libs libRmath` test.o -o test

몇몇의 시스템들에서, ‘make install-strip’는 분해된 공유 라이브러리를 설치 할 수도 있습니다.


9.2 Windows

(유닉스 계열의 쉘에서) R을 만들기 위해서는 거의 모든 도구들을 설정up22 하고 그리고 나서 실행해야 합니다.

(cd ../../gnuwin32; make MkRules)
(cd ../../include; make -f Makefile.win config.h Rconfig.h Rmath.h)
make -f Makefile.win

cmd.exe’를 위해서는 다음을 사용하십시오.

cd ../../include
make -f Makefile.win config.h Rconfig.h Rmath.h
cd ../nmath/standalone
make -f Makefile.win

이는 static 라이브러리 ’libRmath.a’ 와 DLL ’Rmath.dll’를 생성합니다. 만약 import 라이브러리 ’libRmath.dll.a’ (꼭 해야하는 것은 아닙니다)를 원한다면, 다음을 사용하세요.

make -f Makefile.win shared implib

MinGW을 사용하는 당신의 C나 C++에 있는 routine들을 사용하고자 한다면, 다음을 포함하십시오.

#define MATHLIB_STANDALONE
#include <Rmath.h>

그리고 ‘-lRmath’에 대응하게 연결하십히오. 이는 ’libRmath.dll.a’, ’libRmath.a’ 그리고 ’Rmath.dll의 순서대로 처음 찾아진 것을 사용할 것입니다. 그래서 그 결과는 어떤 파일들이 나타나느냐에 달려있습니다.

-Wl,-Bstatic -lRmath -Wl,dynamic
-Wl,-Bdynamic -lRmath

혹은 explicit 파일들을 연결하거나 (’Makefile.win’에서의 ‘test’ 타켓에서 처럼: 이는 dynamic하게 연결된 ;test.exe’와 statical하게 연결된 ’test-static.exe’의 두 개의 실행가능 한 것들을 만듭니다. )

직접적으로나 import 라이브러리를 통하여 다른 컴파일러들을 사용하여 ’Rmath.dll’를 연결하는 것도 가능합니다: 만약 위에서 처럼 MinGW import 라이브러리를 만든다면, Visual C++와 같은 다른 시스템들에서 (수정이후에 가능) import 라이브러리를 생성하기위해 사용될 수 있는 ’Rmath.def’ 파일을 생성할 것입니다.

If you make use of dynamic linking you should use

#define MATHLIB_STANDALONE
#define RMATH_DLL
#include <Rmath.h>

만약 dynamic 연결을 이용하려면, NA_REAL과 같은 상수들이 정확하게 연결되었는지를 확실히 하기위하여 다음을 사용해야만 합니다.(자동-import는 아마도 MinGW와 같이 실행할 것이지만, 확실하게 하는 것이 더 좋습니다. VC++, Borland와 비슷한 컴파일러에서도 실행할 것입니다.)


Appendix A Essential and useful other programs under a Unix-alike

이 appendix는 유닉스 계열의 플랫폼들에서 R을 구축하기 위해서 필요할 설명들과,R 안에서 configure를 통해 검색할 수 있는 프로그램들의 자세한 설명을 줄 것입니다.

Remember that some package management systems (such as RPM and Debian/Ubuntu’s) make a distinction between the user version of a package and the development version. The latter usually has the same name but with the extension ‘-devel’ or ‘-dev’: you need both versions installed.


A.1 필수적인 프로그램과 라이브러리

You need a means of compiling C and FORTRAN 90 (see Using FORTRAN). Your C compiler should be ISO/IEC 6005923, POSIX 1003.1 and C99-compliant.24 R tries to choose suitable flags for the C compilers it knows about, but you may have to set CC or CFLAGS suitably. For many versions of gcc with glibc this means including -std=gnu9925. If the compiler is detected as gcc 4.x, -std=gnu99 will be appended to CC unless it conflicts with a setting of CFLAGS. (Note that options essential to run the compiler even for linking, such as those to set the architecture, should be specified as part of CC rather than in CFLAGS.)

스크린에서 그래프들을 보는 것을 원하지 않지 않는 이상 (아니면 Mac을 사용), 헤더들과 클라이언트 라이브러리들을 포함하는 ‘X11’을 설치할 필요가 있습니다. 최근의 Fedora 배포에서, 이는 (적어도) ‘libX11’,‘libX11-devel’, ‘libXt’ and ‘libXt-devel’ RPM들을 의미합니다. Debian에 서는 메타 패키지인 ‘xorg-dev’를 추천합니다. 만약 이들을 정말 원하지 않 는다면, --with-x=no를 사용하여, X11없이 R을 명확하게 설정 해야할 것입니다.

명령줄 변경(그리고 command completion)은 GNU readline 라이브러리에 의존합니다: 버전 4.2 혹은 그 후의 버전들은 모든 feature들이 활성화 되 는 것을 필요로 합니다. 그렇지 않으면 --with-readline=no (혹은 비슷한 것)로 구성해야 할 것입니다.

A suitably comprehensive iconv function is essential. The R usage requires iconv to be able to translate between "latin1" and "UTF-8", to recognize "" (as the current encoding) and "ASCII", and to translate to and from the Unicode wide-character formats "UCS-[24][BL]E" — this is true by default for glibc26 but not of most commercial Unixes. However, you can make use of GNU libiconv (as used on OS X: see https://www.gnu.org/software/libiconv/).

OS는 wide-character types에 대해 충분한 지원27 을 가지는 것이 필요합니다: 이는 configuration에서 체크됩니다.

Installations of zlib (version 1.2.5 or later), libbz2 (version 1.0.6 or later: called bzip2-libs/bzip2-devel or libbz2-1.0/libbz2-dev by some Linux distributions), liblzma28 version 5.0.3 or later, PCRE (version 8.10 or later, preferably 8.32 or later29) and libcurl (version 7.28.0 or later) are required. Information on libcurl is found from the curl-config script: if that is missing or needs to be overridden30 there are macros to do so described in file config.site.

A tar program is needed to unpack the sources and packages (including the recommended packages). A version31 that can automagically detect compressed archives is preferred for use with untar(): the configure script looks for gtar and gnutar before tar – use environment variable TAR to override this.

도구들 grepsed의 알맞은 버전들이 필요합니다: 문제는 보통 오래된AT&T와 BSD variants들에 있습니다. configure는 알맞은 버전들을 찾으려고 노력할 것입니다 (몇몇의 상업용 유닉스들에서 사용되는 /usr/xpg4/bin의 안을 찾아보는 것을 포함).

You will not be able to build most of the manuals unless you have texi2any version 5.1 or later installed, and if not most of the HTML manuals will be linked to a version on CRAN. To make PDF versions of the manuals you will also need file texinfo.tex installed (which is part of the GNU texinfo distribution but is often made part of the TeX package in re-distributions) as well as texi2dvi.32 Further, the versions of texi2dvi and texinfo.tex need to be compatible: we have seen problems with older TeX distributions.

If you want to build from the R Subversion repository then texi2any is highly recommended as it is used to create files in the tarball but not under Subversion.

PDF 문서 (’doc/NEWS.pdf’를 포함)와 vignette들의 구축은 pdftexpdflatex를 필요로 합니다. (UTF-8 지원을 위한) LaTeX 버전 2005/12/01 혹은 그 후의 버전들을 요합니다. (R reference 매뉴얼을 포함한) PDF 패키지 매뉴얼을 구축하는 것과 vignette들은 LaTeX 패키지 hyperref의 버전들에 예민하여서, 사용되는 TeX 배포가 최신 버전으로 보존되기를 추천합니다.(url.stylistings.sty를 포함한) 많은 LaTeX 패키지들이 필요하고 hyperrefinconsolata와 같은 다른 것들이 바람직합니다 (그것들이 없이는, R의 기본값을 바꾸어야만 할 것입니다: see Making the manuals.를 참조하세요).

필수 프로그램은 configure이 실행되고 있을 때 PATH안에 있어야만 합니다: 이는 전체 경로를 capture할 것입니다.


A.2 Useful libraries and programs

번역된 메세지를 사용하는 능력들은 gettext의 사용을 가능케 하고 대게 GNU gettext를 필요로 합니다: 새로운 번역들에는 이들이 실행되는 것이 필요하지만, 그렇지 않으면 알맞은 gettext가 찾아지지 않는다는 가정하에 R소스들에 포함되어있는 버전들이 사용될 것입니다.

The ‘modern’ version of the X11(), jpeg(), png() and tiff() graphics devices uses the cairo and (optionally) Pango libraries. Cairo version 1.2.0 or later is required. Pango needs to be at least version 1.10, and 1.12 is the earliest version we have tested. (For Fedora users we believe the pango-devel RPM and its dependencies suffice.) R checks for pkg-config, and uses that to check first that the ‘pangocairo’ package is installed (and if not, ‘cairo’) and if additional flags are needed for the ‘cairo-xlib’ package, then if suitable code can be compiled. These tests will fail if pkg-config is not installed33, and are likely to fail if cairo was built statically (unusual). Most systems with Gtk+ 2.8 or later installed will have suitable libraries

For the best font experience with these devices you need suitable fonts installed: Linux users will want the urw-fonts package. On platforms which have it available, the msttcorefonts package34 provides TrueType versions of Monotype fonts such as Arial and Times New Roman. Another useful set of fonts is the ‘liberation’ TrueType fonts available at https://fedorahosted.org/liberation-fonts/,35 which cover the Latin, Greek and Cyrillic alphabets plus a fair range of signs. These share metrics with Arial, Times New Roman and Courier New, and contain fonts rather similar to the first two (https://en.wikipedia.org/wiki/Liberation_fonts). Then there is the ‘Free UCS Outline Fonts’ project (https://www.gnu.org/software/freefont/) which are OpenType/TrueType fonts based on the URW fonts but with extended Unicode coverage. See the R help on X11 on selecting such fonts.

비트맵된 그래픽 장치들jpeg(), png()tiff() 는 알맞은 헤더들과 라이브러리의 설치를 필요로 합니다: 순서대로, jpeg (버전 6b 이나 그 후 버전들, 혹은 libjpeg-turbo) 혹은 libpng(버전 1.2.7 이나 그 후 버전들,1.4.x 와 1.5.x 포함) 그리고 zliblibtiff (모든 최근 버전 –3.9.[4567] 와 4.0.[23] 가 테스트 되었습니다)입니다. 그들은 X11 이나 cairo 둘 중 하나의 지원 또한 필요합니다 (위를 참조하세요). 대부분의 시스템 설치에서, TIFF 라이브러리들은 JPEG 라이브러리들이 존재하고 아마도 명백하게 링크 되어있는 것을 요함으로, --without-jpeglib 는tiff()장치 또한 disable할 수도 있습니다. tiff()장치는 libtiff의 기초 구축만을 요합니다 (JPEG의 지원 조차도 필요하지 않습니다). 최근 버전들은 존재되어 질 필요가 있을 수도 있는 lzma, jbig 그리고 jpeg12와 같은libtiff로 링크되어질 몇몇의 다른라이브러리들도 허용합니다.???

Option --with-system-tre is also available: it needs a recent version of TRE. (The current sources are in the git repository at https://github.com/laurikari/tre/, but at the time of writing the resulting build will not pass its checks.).

Library liblzma from xz-utils version 5.0.3 or later (including 5.2.x) will be used if installed: the version in the R sources can be selected instead by configuring with --without-system-xz. Systems differ in what they call the package including this: e.g. on Fedora the library is in ‘xz-libs’ and the headers in ‘xz-devel’.

An implementation of XDR is required, and the R sources contain one which is likely to suffice (although a system version may have higher performance). XDR is part of RPC and historically has been part of libc on a Unix-alike. However some builds of glibc hide it with the intention that the TI-RPC library be used instead, in which case libtirpc (and its development version) needs to be installed, and its headers need to be on the C include path or in /usr/include/tirpc.

Use of the X11 clipboard selection requires the Xmu headers and libraries. These are normally part of an X11 installation (e.g. the Debian meta-package ‘xorg-dev’), but some distributions have split this into smaller parts, so for example recent versions of Fedora require the ‘libXmu’ and ‘libXmu-devel’ RPMs.

몇몇의 시스템들은 (특히 OS X와 적어도 몇몇의 FreeBSD 시스템들)multibyte locale들에서의 collation에 대한 불충분한 지원을 합니다. ICU(International Components for Unicode, http://site.icu-project.org/)에서부터 지원되는 OS의 collation을 바꾸는 것이 가능하고, 이는 collation의 모든 시스템 상의 훨씬 더 정확한 컨드롤을 제공합니다. ICU는 (적어도) 대부분의 리눅스 배포들, Solaris, FreeBSD 그리고 AIX에서, 보통 libicu 이 나 icu4c처럼 소스들과 바이너리 distribution들 처럼 사용이 가능합니다. (OS X >= 10.4 에서 포함)이는 사용이 가능한 곳에서 디폴트로 쓰일 것입니다: 매우 오래된 혹은 고장난 ICU 버전이 찾아진다면, 이는 --without-ICU에 의해 억제될 수 있습니다.

bitmapdev2bitmap 장치들 그리고 또한 embedFonts()도 ghostscript (http://www.cs.wisc.edu/~ghost)를 사용합니다. 이는 명령이 실행되고 있을 때 여러분의 경로에 있거나, 그의 전체 경로가 그 때에 환경값 R_GSCMD에 의해 지정되었을 때 중 하나여야만 합니다.


A.2.1 Tcl/Tk

The tcltk package needs Tcl/Tk >= 8.4 installed: the sources are available at https://www.tcl.tk/. To specify the locations of the Tcl/Tk files you may need the configuration options

--with-tcltk

Tcl/Tk를 사용하거나, 그의 라이브러리 디렉토리를 지정합니다

--with-tcl-config=TCL_CONFIG

> tclConfig.sh 의 위치를 지정합니다

--with-tk-config=TK_CONFIG

tkConfig.sh 의 위치를 지정합니다

혹은 순서대로 Tcl과 Tk 라이브러리들에 마주한 linking과 ’tcl.h’와 ’tk.h’ 헤더들을 찾기 위해 필요한 flag들을 지정하기위해서는 configure 값들인TCLTK_LIBSTCLTK_CPPFLAGS를 사용하십시오. 만약 Tcl/Tk의 32-비트와64-비트 버전 두 가지가 모두 설치되어있다면, 혼란을 방지하기 위해서 올바른 config 파일들로의 경로를 지정하는 것이 필요할수 있습니다.8.5.12 와 8.6.0까지의 Tcl/Tk 버전들이 테스트 되었습니다 (대부분의8.4.x의 버전들도 포함하지만, 최근에 테스트 된 것이 아닙니다).

Versions of Tcl/Tk up to 8.5.12 and 8.6.0 have been tested (including most versions of 8.4.x, but not recently).


A.2.2 Java support

The build process looks for Java support on the host system, and if it finds it sets some settings which are useful for Java-using packages. JAVA_HOME can be set to point to a specific JRE/JDK.

이들 중 주된 것은 파일 ’R_HOME/etc/ldpaths (혹은 sub-architecture 특정버전)안의 R_JAVA_LD_LIBRARY_PATH 에 저장된 Java 라이브러리들과 JVM으로 의 몇몇의 라이브러리 경로를 설정하는 것입니다. x86_64’ 리눅스를 위한 전형적인 설정은 다음과 같습니다.

JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.25.x86_64/jre
R_JAVA_LD_LIBRARY_PATH=${JAVA_HOME}/lib/amd64/server

이는 안타깝게도 JRE/JDK의 정확한 버전의 설치에 의존함으로, 만약 Jave 설치가 업데이트 되었다면 이도 업데이트가 필요할 수 있습니다. 이는 R CMD javareconf를 실행함으로써 될 수 있습니다. 스크립트는 configure 스크립드와 비슷한 방법으로 Java detection을 재실행 하고 ’Makeconf’와’R_HOME’/etc/ldpaths 둘 다의 설정들을 업데이트 합니다. 자세한 사항은 R CMD javareconf –help를 참조하세요. 다른 방법으로 덜 특정한 JAVA_HOME의 버전은 설정에서 제공될 수 있습니다: 위의 예제에서 이는 다음과 같을 것 입니다.

이 설정들을 무시하는 다른 대안으로는 R_JAVA_LD_LIBRARY_PATH (e.g. in ~/.Renviron 에서)를 설정하거나, 시스템으로의 Java runtime 라이브러리 경로들을 지정하는 ’/etc/ld.so.conf를 사용하는 것 입니다. 다른 설정들은 ’etc/Makeconf’ (혹은 sub-architecture-특정 버전)에 레코드 됩니다. 다음의 예를 살펴보십시오.

R_JAVA_LD_LIBRARY_PATH=/usr/lib/jvm/java-1.7.0/jre/lib/amd64/server

It may be possible to avoid this by specifying an invariant link as the path. For example, on that system either of

JAVA_HOME=/usr/lib/jvm/java-1.7.0
JAVA_HOME=/usr/lib/jvm/java-1.7.0/jre

worked.


A.2.3 Other compiled languages

Some add-on packages need a C++ compiler. This is specified by the configure variables CXX, CXXFLAGS and similar. configure will normally find a suitable compiler. However, in most cases this will be a C++98 compiler, and as from R 3.1.0 it is possible to specify an alternative compiler for use with C++11 by the configure variables CXX1X, CXX1XSTD, CXX1XFLAGS and similar. Again, configure will normally find a suitable value for CXX1XSTD if the compiler given by CXX is capable of compiling C++11 code, but it is possible that a completely different compiler will be needed (it is for OS X < 10.9 and Solaris, for example).

Other packages need full Fortran 90 (or later) support. For source files with extension .f90 or .f95, the compiler defined by the macro FC is used by R CMD INSTALL. This is found when R is configured and is often the same as F77: note that it is detected by the name of the command without a test that it can actually compile Fortran 90 code. Set the configure variable FC to override this if necessary: variables FCFLAGS, FCPICFLAGS, FCLIBS, SHLIB_FCLD and SHLIB_FCLDFLAGS might also need to be set.

See file config.site in the R source for more details about these variables.


A.3 Linear algebra


A.3.1 BLAS

R에서의 선형 대수학 루틴들은 강화된 BLAS (Basic Linear Algebra Subprograms, http://www.netlib.org/blas/faq.html) 루틴들을 사용할 수 있습니다. 하지만, 이들은 configure time에 명시적으로 요구되어있어야만 합니다: R은 잘 테스트되어지고 대부분의 R의 사용에 알맞은 내부의 BLAS를 제공합니다.

여러분은 설정 옵션 --with-blas의 값을 통해 특정한 BLAS 라이브러리를 지정할 수 있고 (기본 값) --without-blas에 의해 외부 BLAS 라이브러리를 사용하지 않게할 수 있습니다. 만약 --with-blas가 = 없이 주어졌다면, 그의 값은 예를 들어 ’config.site에서 설정된 환경값 BLAS_LIBS에서부터 취해진 것입니다. 만약 값이 명확하게 linker 명령이 아니라면(dash로 시작하거나 라이브러리로의 경로를 주는), ‘-1’로 prefix됩니다.그러므로

--with-blas="foo"

는 (link time과 run time 둘 다에서 찾아져야만 하는) 외부의 BLAS를 찾기 위한 ‘-lfoo’에 대응하여 연결하려는 설명입니다.

설정코드 는 외부 BLAS가 완성되었는지와 (이는 double precision과double complex routine들, ㅡ그리고 LSAME도 포함해야만 합니다), 사용가능하게 나타나는지를 체크합니다. 하지만, 외부 BLAS는 공유된 object에서부터 사용 가능해야만하고 (그래서 position-independent 코드를 포함해야만 합니다) 체크되지 않아야 합니다.

몇몇의 강화된 BLAS들은 compiler-system-specific (Solaris에서는 sunperf, IBM의 libessl, OS X상의 Accelerate)입니다. 이들을 위한 알맞은 주문은 보통 알맞은 플랫폼에 값이 없는 --with-blas를 통해 찾아 집니다.

몇몇의 외부 BLAS들은 multi-thread되어있습니다. 한 가지 문제는 (SIGPROF신호를 사용하는) R profiling이 문제를 일으킬 수 있다는 것이고, 여러분이 multi-thread된 BLAS를 사용한다면 profiling을 disable하기를 원할지도 모릅니다. Multi-thread된 BLAS의 사용은 비슷한 single-thread된 BLAS를 사용하는 것 보다 (보통 굉장히) 더 많은 CPU 타임이 걸리고 훨씬 더 많은 경과시간이 걸리는 결과를 가져올 수 있다는 것을 유의하세요.

응하고 컴파일 되고 --enable-BLAS-shlib가 사용되지 않았다면, 모든 BLAS 를 사용하는 패키지들도 그래야만 한다는 것을 유의하십시오. 그래서 만약 R이 강화된 BLAS를 사용하기위해 다시 구축된다면 quantreg와 같은 패키지들이 다시 설치되어야만 할 것입니다.

R은 외부 BLASISO/IEC  60559 compliance에 의지합니다. 이는 만약 예제코드가 0을 가진 항이 항상 0이고 산출되지 않아도 된다고 짐작한다면 고장났을 수도 있습니다 - x*0NaN이 될 수도 있는 반면. 이는 test suite에서 체크됩니다.

External BLAS implementations often make less use of extended-precision floating-point registers and will almost certainly re-order computations. This can result in less accuracy than using the internal BLAS, and may result in different solutions, e.g. different signs in SVD and eigendecompositions.

The URIs for several of these BLAS are subject to frequent gratuitous changes, so you will need to search for their current locations.


A.3.1.1 ATLAS

ATLAS (http://math-atlas.sourceforge.net/) 는 대폭의 유닉스 계열에서 실행되는 “조율된” BLAS입니다. 안타깝게오, 이는 보통 R 패키지에서 사용되는 것 처럼 공유된 object와 함께 사용될 수 없는 몇몇의 플랫폼의static 라이브러리처럼 구축됩니다. 미리 만들어진 ATLAS 버전들을 사용할때에는 조심을 하십시오 (‘ix86’ 플랫폼들에서는 되는 듯 하나, ‘x86_64’들에서는 항상 되지 않습니다).만약 라이브러리들이 라이브러리 경로에 있다면, ATLAS를 지정하는 일반적인 방법은 다음을 통한 것일 것입니다.

The usual way to specify ATLAS will be via

--with-blas="-lf77blas -latlas"

그렇지 않으면 다음에 의합니다.

--with-blas="-L/path/to/ATLAS/libs -lf77blas -latlas"

예를 들어, ‘x86_64’ Fedora 는 다음이 필요합니다.

--with-blas="-L/usr/lib64/atlas -lf77blas -latlas"

여러개의 CPU core들을 가진 시스템들을 위해서는, 다음을 지정함으로써 ATLAS의 multi-thread된 버전을 사용하는 것이 가능합니다.

--with-blas="-lptf77blas -lpthread -latlas"

Position-independent 코드를 가진 ATLAS를 어떻게 구축하는지에 대해서는 그의 파일 ’INSTALL.txt’를 참조하세요 (적어도 3.8.0 이후 버전): 이 파일은 어떻게 ATLAS를 공유된 라이브러리처럼 구축하는지도 설명합니다.


A.3.1.2 ACML

For ‘x86_64’ processors36 under Linux there is the AMD Core Math Library (ACML). For the gcc version we could use

--with-blas="-lacml"

다른 컴파일러들에 대해서는 ACML 문서를 참조하세요. ACML의 multithread 된 Linux 버전이 gfortran의 최근 버전에서 사용가능합니다. 이를 사용하기 위해서는 다음과 같은것이 필요할 것입니다 (그리고 디렉토리가 ld.so cache에 있도록 정리해야할 수도 있습니다).

--with-blas="-L/opt/acml5.1.0/gfortran64_mp/lib -lacml_mp"

(and you may need to arrange for the directory to be in ld.so cache).

ACML을 사용하기위한 다른 방법 (그리고 더 나은 방법들)을 위해서는 see Shared BLAS를 참조하세요.

가장 근래에 테스트된 버전은 (5.1.0) NAs의 처리에서 ’reg-BLAS.R’ 테스트를 실패하였습니다.


A.3.1.3 Goto and OpenBLAS

Kazushige Goto 박사는 여러 프로세서들과 OS들에서 사용가능한 또 다른 조율된 BLAS를 썻습니다. 현재 버전은 GotoBLAS2로 알려져 있습니다. 이것이 구축되고 설치되면, 다음을 이용해 R을 configure함으로써 사용될 수 있습니다.

--with-blas="-lgoto2"

를 사용하기위한 다른 방법 (그리고 더 나은 방법들)을 위해서는 see Shared BLAS를 참조하세요.

OpenBLAS (http://www.openblas.net/) is a descendant project with support for some later CPUs (e.g. Intel Sandy Bridge). Once installed it can be used by something like

--with-blas="-lopenblas"

or as a shared BLAS.


A.3.1.4 Intel MKL

리눅스에서의 인텔 프로세서들37에대해서는, 인텔의 Math Kernel 라이브러리(http://www.intel.com/software/products/mkl/)가 존재합니다. MKL로의 연결을 시도하기 전, 라이브러리와 함께 설치된 MKL 사용자 설명서를 읽어 보기를 강력하게 추천합니다. Mac OS X와 윈도우즈를 위한MKL 버전도 있지만, 이 플랫폼들에서 R을 위해 사용된 기본 컴파일러들과는 작동하지 않았습니다.

MKL 인터페이스는 여러 번 바뀌었었고, 또 바뀔지도 모릅니다: 다음의 유의사항들은 엄밀히 버전 10.3에 대한 것 입니다.

MKL의 버전 10은 두 개의 linking 모델들을 지원합니다: (아래를 참조하세요) 버전 9과 backward 호환이 가능한 기본 모델과 순수하게 layer된 모델입니다. Layer된 모델은 사용자에서 네 개의 다른 라이브러리 레이어에서의세밀한 컨트롤을 줍니다: 인터페이스, threading, 계산, run-time 라이브러리 서포트. 이런 레이어된 모델들을 이용한 MKL로의 연결들에 대한 몇몇의예제들이 아래에 주어져 있습니다. (이 예제들은 ‘x86_64’에서의 GCC컴파일러들에 대한 예제들 입니다.) 인텔 Fortran 컴파일러가 GNU Fortran컴파일러 에서부터 다른 register들에 복잡한 값을 돌려주기 때문에 인터페이스 레이어의 선택이 ‘x86_64’에서 중요합니다.

그러므로 여러분은 여러분의 컴파일러(mkl_intel* 혹은 mkl_gf*)에 맞는 인터페이스 레이어를 사용해야만 합니다.

R은 다음과 같은 것에 의해 MKL의 연속 버전으로 연결된 수도 있습니다.

MKL_LIB_PATH=/opt/intel/mkl/10.311.339/lib/intel64/
export LD_LIBRARY_PATH=$MKL_LIB_PATH
MKL="-L${MKL_LIB_PATH} -lmkl_gf_lp64 -lmkl_sequential -lmkl_core"
./configure --with-blas="$MKL" --with-lapack

어떤 버전들은 –lmkl_core앞에 –lmkl_lapack이 필요할 수도 있습니다. 라이브러리들의 순서는 중요합니다. 생략될 수도 있지만, MKL이 LAPACK의 조율된 카피와 BLAS (see LAPACK을 참조하세요)를 포함하기 때문에, --with-lapack옵션이 사용됩니다.

다음을 사용하여 값 MKL을 정의하는 줄을 바꿈으로써 (인텔의 Zhang Zhang 에 의하면) Thread된 MKL이 사용될 수도 있습니다 (Intel OMP).

MKL="-L${MKL_LIB_PATH} -lmkl_gf_lp64 -lmkl_intel_thread \
     -lmkl_core -liomp5 -lpthread"

혹은 (GNU OMP)

MKL="-L${MKL_LIB_PATH} -lmkl_gf_lp64 -lmkl_gnu_thread \
     -lmkl_core -fopenmp -lpthread"

thread들의 기본 숫자는 OpenMP 소프트웨어에 의해 선택될 것이지만, OMP_NUM_THREADSMKL_NUUM_THREADS를 설정함으로써 조정될 수 있고, 최근 버전들에서는 기계만의 사용으로써도 합리적인 값을 생산할 수 있다는 것으로 보여집니다.

다음과 같은 것을 사용하여 Static thread된 MKL이 사용될 수도 있습니다

MKL="   -L${MKL_LIB_PATH}                               \
        -Wl,--start-group                               \
                ${MKL_LIB_PATH}/libmkl_gf_lp64.a        \
                ${MKL_LIB_PATH}/libmkl_gnu_thread.a     \
                ${MKL_LIB_PATH}/libmkl_core.a           \
        -Wl,--end-group                                 \
        -lgomp -ldl -lpthread"

(Ei-ji Nakamad에게 감사를 드립니다).MKL 문서는 알맞은 주문들을 제안해 줄 ‘link line advisor’를 포함합니다:

http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor/에서 온라인 버전이 사용가능했습니다.


A.3.1.5 Shared BLAS

BLAS 라이브러리는 많은 애드온 패키지들과 R자체에서도 사용될 것입니다.이는 대부분의 static 라이브러리가 R executable과 각 각의 BLAS를 사용하는 패키지들로 컴파일 될 것 이므로, 공유된/dynamic BLAS 라이브러리를 쓰는것이 더 낫다는 것을 의미합니다.

R은 R_HOME/lib에 저장된 dynamic 라이브러리인 libRblasBLAS를컴파일 하는 옵션과 R 자체와 모든 애드온 패키지들을 라이브러리에 대응해 서 연결하는 것을 제공합니다.

이는 외부 BLAS가 지정되고 찾아지지 않은 이상, AIX를 제외한 모든 플랫폼에서 기본값입니다: 전자에서, 이는 옵션 --enable-BLAS-shlib를 지정함으로써 사용될 수 있고, 이는 --disable-BLAS-shlib를 통해서 언제든지disable될 수 있습니다.이는 장점과 단점 두 가지 모두를 가지고 있습니다.

This has both advantages and disadvantages.

Another option to change the BLAS in use is to symlink a dynamic BLAS library (such as ACML or Goto’s) to R_HOME/lib/libRblas.so. For example, just

mv R_HOME/lib/libRblas.so R_HOME/lib/libRblas.so.keep
ln -s /opt/acml5.1.0/gfortran64_mp/lib/libacml_mp.so R_HOME/lib/libRblas.so

이는 사용되고있는 BLAS를 multithread된 ACML로 바꿀 것 입니다. 비슷한 링크는 (적합한 ’lib’ 디렉토리가 run-time 라이브러리 경로나 ld.so cache에있다는 가정 하에) Goto BLAS의 최근 버전과 아마도 MKL의 최근 버전들에서 돌아갈 것입니다.


A.3.2 LAPACK

Provision이, 원래 LAPACK(Solaris에서의 sunperf, OS X에서의 Accelerate,‘ix86’/‘x86_64’ 리눅스에서의 ACML과 MKL과 같은)의 카피를 포함한 BLAS에 대응하기위한, 외부 LAPACK 라이브러리의 사용을 위해 만들어 졌습니다. 적어도 LAPACK 버전 3.2가 필요합니다.

하지만, 그럴싸한 성능 향상은 작다고 (혹은 네거티브)라고 생각되고, 기본값은 알맞은 LAPACK 라이브러리의 검색을 하지 않는 것이고, 이는 확실히 추천되지 않습니다. 여러분은 특정한 LAPACK 라이브러리를 지정하거나 설정 옵션 --with-lapack에 의한 포괄적인 라이브러리를 찾을 수 있습니다. 최대한으로 빠른 선형 대수학을 검색하는 사이트는 LAPACK의 ATLAS-optimized subset을 사용하여 LAPACK 라이브러리를 구축하기를 원할 수도 있습니다 이를 하기 위해서는 LAPACK의 ATLAS subset이 libcblas에 의존하지 때문에 다음을 지정하세요.

--with-lapack="-L/path/to/ATLAS/libs -llapack -lcblas"

--with-lapack에 대한 값은 환경값 LAPACK_LIBS를 통해 설정될 수 있지만, 이는(기본값이 no인것과 같이) --with-lapack이 지정되고 BLAS 라이브러리가 LAPACK을 포함하지 않았을 떄만 사용될 것입니다.

ACML이 전체 LAPACK을 포함하고 있기 때문에, 만약 BLAS처럼 선택되었다면, 이는 -- with-lapack을 통해 LAPACK처럼 사용될 수 있습니다.

만약 --with-lapack을 사용한다면, LAPACK 소스들(혹은 소스들에 대해 공고 된 오류수정들)에 있는 잠재적인 버그 문제들을 유의하십시오. 특히, DGEEVDGESDD에 있는 버그들은 다음과 같은 오류 메시지를 초래합니다.

DGEBRD gave error code -10

다른 잠재적은 문제들은 몇년동안 리눅스 배포에서 몇번이나 목격된, 라이브러리의 불완전한 버전들입니다.

--with-lapack의 사용이 ‘확실하게 권장되지 않는다는 것’을 제발 명심하십시오: 이는 몇 개의 플랫폼들에서 필요하고 몇몇의 사용자들이 보고된 성능 향상을 실험하기 위해서만 제공되었습니다. 필요하지 않게 사용된 곳에서의 보고된 문제들은 R 헬퍼들을 자극할 뿐입니다.

외부 BLAS 섹션의 ISO/IEC 60559 compliance 에 대한 커멘트도 유의하세요: 이들은 외부 LAPACK에도 동등하게 적용되며, 예로 인텔 MKL 문서가 다음과 같이 이릅니다.

LAPACK 루틴들은 input matrice들이 INF 혹은 NaN 값들과 같은 IEEE 754 특별 값들을 포함하지 않는다고 가정합니다. 이러한 특별 값들의 사용은LAPACK이 예상하지 않은 결과를 돌려주거나 불안정하게되는 것의 원인이 될수도 있습니다.

We rely on limited support in LAPACK for matrices with 2^{31} or more elements: it is quite possible that an external LAPACK will not have that support.

If you have a pure FORTRAN 77 compiler which cannot compile LAPACK it may be possible to use CLAPACK from http://www.netlib.org/clapack/ by something like

-with-lapack="-lclapack -lf2c"

provided these were built with position-independent code and the calling conventions for double complex function return values match those in the BLAS used, so it may be simpler to use CLAPACK built to use CBLAS and

-with-lapack="-lclapack -lcblas -lf2c"

A.3.3 Caveats

모든 라이브러리들과 같이, 여러분은 라이브러리들과 R이 상응하는 컴파일러들과 flag들과 컴파일 되었는지를 확실하게 할 필요가 있습니다. 예를들어, 이는 native 컴파일러들을 사용하는 Sun Sparc에서 sunperf가 사용되기 위해서 flag –dalign가 필요하다는 뜻입니다.

On some systems it has been necessary that an external BLAS/LAPACK was built with the same FORTRAN compiler used to build R.


Appendix B Configuration on a Unix-alike


B.1 Configuration options

configure 은 많은 옵션들을 가지고 있습니다. 다음의 실행은 리스트를 줄 것입니다.

./configure --help

아마도 다른 곳에서는 커버되지 않는 가장 중요한 것은 다음일 것입니다 ( 기본값들은 괄호안에 있습니다).

--with-x

X Window System을 사용합니다 [yes]

X 를 포함한 파일들은 DIR에 있습니다

X 라이브러리 파일들은 DIR에 있습니다

--x-libraries=DIR

X library files are in DIR

--with-readline

(만약 가능하다면) readline 라이브러리를 사용합니다 [yes]

--enable-R-profiling

Rprof() 에 대한 지원을 위한 컴파일을 시도합니다 [yes]

--enable-memory-profiling

Rprofmem()tracemem()에 대한 지원을 위한 컴파일을 시도합니다 [no]

--enable-R-shlib

공유된/dynamic 라이브러리처럼 R을 구축합니다 [no]

--enable-BLAS-shlib

공유된/dynamic 라이브러리처럼 BLAS를 구축합니다 [yes, AIX에서는 제외]

네거티브들에 대해서는 --without-foo 혹은 --disable—foo를 사용할 수 있습니다.

만약 프로파일 된 실행가능한 R을 구축한다면 --disable-R-profiling을 사용하고 싶어 할수도 있습니다 ((e.g. with ‘-pg)’.

Flag --enable-R-shlib 는 make 프로세스가 보통 ’libR.so’라고 불리우는 dynamic (공유된) 라이브러리처럼 R을 구축하는 것을 초래하고, 실행 가능한 메인 R인 ’R.bin’을 라이브러리에 대응하여 연결합니다. 이는 만약 (시스템 라이브러리들을 포함한) 모든 코드가 dynamic 라이브러리로 컴파일 될 수 있을 때만 되고, 성능 저하가 있을 수 있습니다. 그러므로 여러분은 아마도 R을 내장하는 어플리케이션을 사용할 경우에만 사용하기를 원할것 입니다. --enable-R-shlib와 연결된 R 시스템 상에 설치된 패키지들의 C 코드는 dynamic 라이브러리에 맞대어 연결되어 있고, 그래서 그런 패키지들은 기본적인 방법으로 구축된 R 시스템들에서부터는 사용될 수 없다는 것을 유의하십시오. 또한, 패키지들이 R에 대응하여 연결되어있으므로, 어떤 OS들 상에서도 dynamic 라이브러리들에 대응하여 연결되어 있고 R 자체도 대응하여연결되어 있으므로, 이는 심볼이 혼란해지도록 이끌어질 수 있습니다.

For maximally effective use of valgrind, R should be compiled with valgrind instrumentation. The configure option is --with-valgrind-instrumentation=level, where level is 0, 1 or 2. (Level 0 is the default and does not add anything.) The system headers for valgrind can be requested by option --with-system-valgrind-headers: they will be used if present (on Linux they may be in a separate package such as valgrind-devel). Note though that there is no guarantee that the code in R will be compatible with very old38 or future valgrind headers.

만약 R을 다른 옵션들로 re-configure해야한다면, 그 전에 make clean 혹은 make distclean을 실행해야 할 수도 있습니다.

The configure script has other generic options added by autoconf and which are not supported for R: in particular building for one architecture on a different host is not possible.


B.2 국제화 지원

메세지의 번역은 configure옵션 --disable-nls에 의하여 disable되지 않는 이상 GNU gettext를 통하여 지원됩니다. Configure 리포트는 만약 서포트가 컴파일 되었고, 실행되는 ‘추가의 능력들’ 중 하나처럼 NLS를 보여줄 것입니다. (c locale을 제외한) English local 은 다음을 R의 시작의 greeting 에서 포함 할 것입니다.

  Natural language support but running in an English locale

in the greeting on starting R.


B.3 Configuration variables

만약 여러분이 특정한 configure값들을 기본값이 아닌 다른 어떤 것으로 설정하는 것이 필요하거나 이를 원한다면, (설정하고 싶어하는값 들의 많은 것들을 기록하는: 다른 것들은 파일 etc/Renviron.in에서 볼 수 있습니다)파일 config.site이나 다음 줄의 명령줄을 바꿈으로 이를 할 수 있습니다.

./configure VAR=value

만약 소스들이 아닌 디렉토레에서 구축을 한다면, 소스에 config.site의 카피들과 빌드 디렉토리들이 있을 수 있고, 둘 다 (순서대로) 읽혀 질 것입니다. 추가로, 만약 파일 ~/.R/config (혹은 이의 실패인 ~/.Rconfig)이 있다면, 이는 소스의 config.site 파일들과 빌드 디렉토리들 중간에서 읽혀질 것입니다.

이전 단락에서 언급된 모든 것들 이전에 읽혀지는 config.site 파일들을 위한 일반적인 autoconf 메케니즘이 있습니다. 이는 환경값 CONFIG_SITE에의해 지정된 파일을 첫 번째로 보고, 만약 그렇지 않다면 R이 설정될 장소에 /usr/local/share/config.site/usr/local/etc/config.site와 같은 파일들에 설정됩니다 (/usr/local에 의한 예시).

이 값들은 매우 소중합니다. 이는 그들이 환경으로 출력되지 않아도 되고, 명령줄에서 지정되지 않았더라도 캐치 에서 보관되며, 두 개의 configure run들의 일관성을 체크하고, 캐치가 사용되지 않았더라도 명령줄 인자들처럼 통과 된 것 처럼 자동 재구성 동안 보관되는 것을 의미합니다.

이 모든 값들의 리스트에 대해서는 configure --help의 variable output 섹션을 참조하세요.

만약 configure값들을 고쳐야 한다는 것을 찾아내면, 어떤 설정들은 파일 config.cache 안에 캐치되었을 지도 모른다는 것을 주목할 만한 가치가 있고, 재구성 전에 파일을 (만약 존재한다면) 없애는 것이 좋습니다. 기본값 으로 캐칭이 꺼져있다는 것을 유의하세요: 캐칭을 허용하려면 명령줄 옵션 --config-cache (혹은 -C)를 사용하십시오.


B.3.1 Setting paper size

기본 값이 ‘letter’가 아닌 ‘A4’로 되어있는 페이퍼 사이즈를 바꾸는 일반 적인 값은 R_PAPERSIZE 입니다. (‘A4’, ‘letter’, ‘legal’ 그리고 ‘executive’ 값들이 유효합니다.)

이는 기본값을 설정하기 위해 R을 설정할 때와 기본값을 무시하기위해 R을 실행할 때 모두 사용됩니다. 이는 PDF 매뉴얼을 만들 때 페이퍼 사이즈를 설정하기 위해서도 사용됩니다.

설정 기본값은 만약 R_PAPERSIZE가 unset되어있으면 거의 대부분 ‘A4’ 일 것입니다. (만약 (Debian 리눅스) 프로그램 paperconf가 발견되거나 환경값 PAPERSIZE가 설정된다면, 이들은 기본값을 생성하기 위하여 사용됩니다.)


B.3.2 브라우저 설정하기

또 다른 소중한 값은 기본값이 HTML 브라우저인, 사용자의 경로 혹은 지정 된 전체 경로 안에 있는 executable의 값을 취행야만 하는 R_BROWSER입니다. PDF 파일들의 이에대한 대응은 R_PDFVIEWER입니다.

Its counterpart for PDF files is R_PDFVIEWER.


B.3.3 컴파일 플래그

만약 시스템이 아닌 디렉토리들에 예를들어 GNU readline을 위한 라이브러리들이나 헤더 파일들을 가지고 있다면, 이들의 위치를 명시하기위하여 순서대로 값 LDFLAG (라이브러리에서는 linker로 전달되기위해여 ‘-L’ flag 들을 사용)와 CPPFLAGS (헤더 파일들을 위해서, C/C++ 프로세서 들로 전달되기 위하여 ‘-I’ flag들을 사용)를 사용하세요. 이들은 대부분의 흔한 경우들을 잡기 위하여 ‘-L/usr/local/lib’ (LDFLAGS, 대부분의 64 비트 리눅스 OS들에서 ‘-L/usr/local/lib64’)와 ‘-I/usr/local/include’ (CPPFLAGS)가 디폴트 입니다. 만약 라이브러리들이 아직 찾아지지 않았다면, 아마도 여러분의 comlier/linker이 –L–l flag들의 재 배열을 지원하지 않을지도 모릅니다. (이는 native cc를 가진HP_UX에서 문제가 된다고 리포트 되었었습니다). 이런 경우에는, 다른컴파일러 (혹은 재 배열을 하는 front end shell script)를 사용하세요.

These flags can also be used to build a faster-running version of R. On most platforms using gcc, having ‘-O3’ in CFLAGS and FFLAGS produces worthwhile performance gains with gcc and gfortran, but may result in a less reliable build (both segfaults and incorrect numeric computations have been seen). On systems using the GNU linker (especially those using R as a shared library), it is likely that including ‘-Wl,-O1’ in LDFLAGS is worthwhile, and ‘'-Bdirect,--hash-style=both,-Wl,-O1'’ is recommended at https://lwn.net/Articles/192624/. Tuning compilation to a specific CPU family (e.g. ‘-mtune=native’ for gcc) can give worthwhile performance gains, especially on older architectures such as ‘ix86’.


B.3.4 Making manuals

매뉴얼을 만드는 기본 설정들은 R_RD4PDFR_PAPERSIZE에 의해 컨트롤 됩니다.


B.4 Setting the shell

기본값으로, R과 같은 shell script들은 ‘#!/bin/sh’ 스크립트들 (혹은congifure에 의해 선택된 SHELL을 사용) 일 것입니다. 이는 거의 항상 만족스럽지만, 몇몇의 시스템들 /bin/sh는 Bourne shell이나 clone이 아니고configure 값 R_SHELL을 알맞은 값으로 (shell로의 전체 경로,예, /usr/local/bin/bash) 설정함으로써 쓰이려는 shell이 바뀔 수도 있습니다.


B.5 Using make

R을 컴파일 하기위해서, Solaris에서 Sun make와 native FreeBSD make가 돌아가지만, 여러분은 아마도 GNU make를 사용하는 것이 가장 쉽다고 느낄 것입니다. Native make는 SGI Irix 6.5와 (Tru64로 알려져 있는)Alpha/OSF 1 에서 실패한다고 리포트 되었었습니다.

따로 떨어진 디렉터리를 빌드하기 위해서는, 예를들어 GNU make 혹은Solaris 7 이후의 Sun make와 같은 VPATH 값을 사용하는 make가 필요합니다.

dmake has also been used. e.g, on Solaris 10.

예를 들어 Solaris 10과 같은 곳에서, dmake도 사용되어지고 있습니다. 만약 make를 다른 이름으로 쓰고싶다면, 예를 들어 여러분의 GNUmake가 ‘gmake’로 불려진다면, 예를 들어 다음과 같이 configure time에 값 make를 설정해야 합니다.

./configure MAKE=gmake

B.6 Using FORTRAN

R을 컴파일하기 위해서 여러분은 FORTRAN 컴파일러가 필요합니다. 기본값은 (순서대로)f95, fort, xlf95, ifort, ifc, efc, pgf95, lf95, gfortran, ftn, g95, f90, xlf90, pghpf, pgf90, epcf90,g77, f77, xlf, frt, pgf77, cf77, fort77, fl32, af77,)39, 를 찾고, 찾아진 첫 번째 것을 사용합니다; 만약 아무것도 찾아지지 않았다면, R은 컴파일 될 수 없습니다. 하지만 만약 CC가 gcc라면, 맞는 FORTRAN 컴파일러 (gcc 3는 g77 그리고 gcc4gfortran)가 사용이 가능하다면 이가 사용됩니다.

검색 mechanism은 FORTRAN 77 컴파일러를 실행하는 명령어를 명시하는 설정 값 F77을 사용하여 바뀔 수 있습니다. 만약 여러분의 FORTRAN 컴파일러가 기본 위치가 아닌 곳에 있다면, 설정을 실행하기 전에 환경값 PATH에 그에 맞춰 설정되거나 혹은 그의 전체 경로를 명시하기 위한 configureF77을 사용합니다.

If your FORTRAN libraries are in slightly peculiar places, you should 만약 FORTRAN 라이브러리들이 조금 이상한 장소에 있다면, 모든 라이브러리 들이 이 경로에 있는지를 확실히 하기위하여 LD_LIBRARY_PATH나 여러분의 시스템의 비슷한 곳을 살펴 보세요.

오로지 identifier들을 소문자로 바꾸는FORTRAN 컴파일러들만 지원된다는 것을 유의하십니오.

FORTRAN integer이 C int pointer와 같은지와 Fortran double precision이 C double pointer와 같은지를 활실히 하기위하여 필요한 모든 compilation flag들 (만약 있다면)을 설정해야만 합니다. 이는 configuration 프로세스 동안 체크됩니다.

몇몇의 FORTRAN 코드는 Fortran 90의 확장인 COMPLEX*16 값들을 활용합니다. 이는 configure 시간40에 확인되지만, FORTRAN 77 compliance를 주장하는 compiler flag들은 피해야할 수도 있습니다.

R 소스들 안의 LAPACK 버전을 컴파일하는 것도 몇몇의 Fortran 90 확장판 들에서 필요할 수도 있지만, 만약 외부 LAPACK이 사용되었다면 필요하지않 습니다.

스크립트를 통해 FORTRAN-to-C 컨버터(http://www.netlib.org/f2c)인 f2c를사용하는 것이 가능할 수도 있습니다. (예제 스크립트는 scripts/f77_f2c에 주어져 있습니다: 이는 환경값들 F2C, F2CLIBS, CC, 그리고 CPP를 설정함으로써 customize될 수 있습니다.) the environment variables F2C, F2CLIBS, CC and 여러분은 FORTRAN 타입 integer이 C 타입 int로 번역되었는지를 확실히해야 할 것입니다. 일반적으로 f2c.h는 32비트 플랫폼에서는 작동하지만 64 비트 플랫폼에서는 작동하지 않을 ‘typedef long int integer;’를 포함합니다. 만약 여러분의 컴파일러가 gcc가 아니라 , FPICFLAGS를 알맞게 설정해야 할 것입니다. FPICFLAGS appropriately. Also, the included LAPACK sources contain constructs that f2c is unlikely to be able to process, so you would need to use an external LAPACK library (such as CLAPACK from http://www.netlib.org/clapack/).


B.7 Compile and load flags

flag들의 넓은 범위는 파일 config.site에 설정되거나 명령줄에 설정값 들처럼 설정될 수 있습니다. 우리는 이미 다음을 언급했습니다.

CPPFLAGS

검색 디렉토리의 헤더 파일 (-I)과 C와 C++ 프로세서들과 컴파일러들을 위한 다른 모든 기타 옵션들

LDFLAGS

경로(-L), stripping (-s) 그리고 링커를 위한 다른 모든 기타 옵션들 그리고 다른 것들은 다음을 포함합니다.

and others include

CFLAGS

디버깅과 최적화 flag들, C

MAIN_CFLAGS

ditto, 주요 프로그램의 구축을 위함

SHLIB_CFLAGS

공유된 객체를을 위함

FFLAGS

디버깅과 최적화 flag들, FORTRAN

SAFE_FFLAGS

정확한 floating point behaviour이 필요한 소스 파일들을 위한 ditto

MAIN_FFLAGS

ditto, 주요 프로그램의 구축을 위함

SHLIB_FFLAGS

공유된 객체를을 위함

MAIN_LDFLAGS

주요 링크를 위한 추가적인 flag들

SHLIB_LDFLAGS

공유된 객체들의 연결을 위한 추가적인 flag들

LIBnn

최초의 라이브러리 디렉토리, lib 혹은 lib64

CPICFLAGS

C 코드를 공유된 객체로 바뀌도록 컴파일 하기위한 스페셜 flag들

FPICFLAGS

Fortran 코드를 공유된 객체로 바뀌도록 컴파일 하기위한 스페셜 flag들

CXXPICFLAGS

C++ 코드를 공유된 객체로 바뀌도록 컴파일 하기위한 스페셜 flag들

FCPICFLAGS

Fortran95 코드를 공유된 객체로 바뀌도록 컴파일 하는 스페셜 flag들

DEFS

R 자체에 C 코드를 컴파일 할 때 사용되도록 정의함

LDFLAGS 안의 –L/lib/path처럼 명시된 라이브러리 경로는 같이 수집되고 LD_LIBRARY_PATH로 prepend되기때문에 (혹은 여러분의 시스템 상의 동일한 것), -R 이나 –rpath flag들이 필요가 없어야 합니다.

CPICFLASG와 같은 값들은 configure에 의해 가능한 곳에 정의됩니다. 몇몇 의 시스템들은 예를 들어 ‘-fpic’과 ‘-fPIC’과 같은 두 가지 타입의 PIC flag들을 허용하고, 만약 이들이 다르다면 공유된 객체안의 제한된 갯수의 심볼들만을 우선적으로 허용합니다. 공유된 라이브러리처럼 R이 약 6200 개의 심볼 들을 가지고 있기 때문에, 만약 의심된다면 더 큰 버전을 사용하십시오.

R의 Profiling 버전을 컴파일 하기위해서는, 예를들어 ‘-pg’가 위치 독립적인 코드와 함께 사용되지 못하는 플랫폼상에서 ‘MAIN_CFLAGS=-pg’, ‘MAIN_FFLAGS=-pg’, ‘MAIN_LDFLAGS=-pg’를 사용하고 싶어할 수도 있습니다.

주의: 사용할 라이브러리와 호환가능한 방법으로 CFLAGSFFLAGS를 설정하는 것이 필요할 수도 있습니다: 한 가지 가능한 문제는 doubles의 조정이고, 또 하나는 구조가 전달되는 방식입니다.

몇몇의 플랫폼들에서, configure은 R_XTRA_CFLAG (등등)에서의 CFLAGS, CPPFLAGS, FFLAGS, CXXFLAGS 그리고 LIBS들을 위한 추가의 flag들을 선택할 것입니다. 이들은 예를들어 IEC 60559 compliance를 강요하기위한 것 처럼항상 요구된 옵션들을 위한 것 입니다.


B.8 Maintainer mode

There are several files that are part of the R sources but can be re-generated from their own sources by configuring with option --enable-maintainer-mode and then running make in the build directory. This requires other tools to be installed, discussed in the rest of this section.

File configure is created from configure.ac and the files under m4 by autoconf and aclocal. There is a formal version requirement on autoconf of 2.62 or later, but it is unlikely that anything other than the most recent versions have been thoroughly tested.

File src/include/config.h is created by autoheader.

Grammar files *.y are converted to C sources by an implementation of yacc, usually bison -y: these are found in src/main and src/library/tools/src. It is known that earlier versions of bison generate code which reads (and in some cases writes) outside array bounds: bison 2.6.1 was found to be satisfactory.

The ultimate sources for package compiler are in its noweb directory. To re-create the sources from src/library/compiler/noweb/compiler.nw, the command notangle is required. This is likely to need to be installed from the sources at https://www.cs.tufts.edu/~nr/noweb/ (and can also be found on CTAN). The package sources are only re-created even in maintainer mode if src/library/compiler/noweb/compiler.nw has been updated.

It is likely that in future creating configure will need the GNU ‘autoconf archive’ installed. This can be found at https://www.gnu.org/software/autoconf-archive/ and as a package (usually called autoconf-archive) in most packaged distributions, for example Debian, Fedora, OpenCSW, Homebrew and MacPorts.


Appendix C Platform notes

이 섹션은 다른 유닉스 계열 플랫폼들에서 R의 구축에 대한 몇몇의 주의사항을 제공합니다. 이 주의사랑들은 특정한 컴파일러들의 세트나 지원 라이브러리들을 가진 각각의 케이스을 한 개 혹은 두 개의 시스템들에서 실행하여 테스트하는 것에 기초한 것들입니다. R의 구축의 성공은 알맞은 설치와 지원 소프트웨어의 성능에 달려있습니다; 여러분의 결과들은 다른 버전의 컴파일러와 지원 라이브러리들을 가지고 있다면 다를 수도 있습니다.

이 매뉴얼의 이전 버전들은 (R 2.10.0 이전 버전들) 최근 리포트가 없는 HP-UX, IRIX, 그리고 Alpha/OSF1과 같은 플랫폼들에서의 주의사항들을 포함합니다.

특정한 플랫폼들을 선택하기위한 C 매크로 들은 추적하기 까다로울 수도 있습니다 (웹에는 꽤 많은 양의 잘못된 정보들이 있습니다).http://sourceforge.net/p/predef/wiki/Home/에서의 Wiki (현재)가 유용할수 있습니다. R 소스들은 현재 다음을 사용합니다.

AIX: _AIX
Cygwin: __CYGWIN__
FreeBSD: __FreeBSD__
HP-UX: __hpux__, __hpux
IRIX: sgi, __sgi
Linux: __linux__
OS X: __APPLE__
NetBSD: __NetBSD__
OpenBSD: __OpenBSD__
Solaris: __sun, sun
Windows: _WIN32, _WIN64

C.1 X11과 관련된 문제

X11()’ 그래픽 장치는 plotting을 할 때, 유닉스 계열에서 자동으로 시작되는 것입니다. 이름이 나타내ㄷ듯이, 이는 (로컬 혹은 remote) X 서버에 디스플레이되고 X 서버에의해 제공된 서비드들에 의존합니다.

X11()’ 장치의 ‘현대’ 버전은 ‘cairo’ 그래픽에 기초하고 (대부분의implementation들에서) 폰트를 선택하고나 만들기 위하여 ‘fontconfig’를 사용합니다. 이는 서버에서 행해지고, 선택의 문제가 있을 수도 있지만, 이 섹션의 나머지 부분에서 언급되는 ‘X11()’에 대한 문제들보다는 잘 처리될 수 있습니다.

X11이 디자인 되었을 때, 요즘에는 대략 100dpi 이상인 것에 비해, 대부분의 디스플레이들은 대략 75dpi였습니다. 41 이름들과 세부사항들은 시스템에따라 다르지만, 대부분 Fedora에서의 다음과 같은 것들을 가지고 있을 것 입니다.

xorg-x11-fonts-75dpi
xorg-x11-fonts-100dpi
xorg-x11-fonts-ISO8859-2-75dpi
xorg-x11-fonts-Type1
xorg-x11-fonts-cyrillic

그리고 X11 폰트 경로에 ‘-100dpi’ 버전들이 설치되어있는지를 확실히 해야할 필요가 있습니다 (xset –q를 통하여 체크하세요). ‘X11()’장치는 pixel size가 아닌 pointsize를 설정하려고 노력합니다: (굉장히 자주 노트북 스크린이 축소된 데스크탑 스크린처럼 나타나도록 가상 dpi로 설정됨에도 불구하고) 노트북 사용자들은 기본 값인 12가 너무 크다고 느낄 수도 있습니다.

더 복잡한 문제들이 Western-European locale들이 아닌 곳에서 일어날 수도 있기떄문에, 만약 여러분이 이들을 사용하고 있다면, 가장 먼저 확인해야할 것은 C locale에서 실행되고있는 것들입니다. 대부분의 문제는 폰트나 (종종 ASCII 문자들의 쌍 처럼) 상형문자들이 알맞지 않게 만들어지는 것을찾는 것을 실패하는 것 입니다. X11은 폰트 사양을 물어보는 것에 의해 실행되고 그가 생각하기에 근접한 매치를 줍니다. (plotmath에의해 사용되는 심볼들로부터의 distinct 처럼) 텍스트에서, 사양은 다음에 보여지는 것으로 기본값이 되어있는 옵션 "X11fonts"의 첫 번째 객체입니다.

"-adobe-helvetica-%s-%s-*-*-%d-*-*-*-*-*-*-*"

만약 여러분이 예를들어 동부 유럽의 ISO 8859-2나 러시아의 KOI8-R과 같은 single-byte 인코딩을 사용한다면, 여러분의 인코딩 안의 폰트의 알맞은 패밀리를 찾기위해서 xlsfonts를 사용하세요 (리스팅의 마지만 field). 만약 아무것도 찾지 못한다면, 대부분 위의 리스팅에서 보여진 것 처럼 ‘xorg-x11-fonts-ISO8859-2-75dpi’와 ‘xorg-x11-fonts-cyrillic’과 같은 추가의 폰트 패키지들을 설치해야할 필요가 있는 것 입니다.

Multi-byte 인코딩들은 더욱 더 복잡합니다 (가장 흔하게 UTF-8).‘iso10646-1’에 몇가지 폰트들이 있는데, Unicode 인코딩, 이들은 사용 가능한 상형문자들의 subset만을 포함합니다 (그리고 종종 터미널들에 사용되도록 디자인된 고정된 너비). 이런 locale들에는 다른 인코딩들에서 인코드 된 폰트들로 이루어진 fontsets가 사용됩니다. 만약 여러분이 사용하고있는 locale이 (일반적으로 /usr/share/X11/locale) ‘XLC_LOCALE’ 디렉토리에 entry를 두고있다면, 여러분은 아마도 그 곳에 명시되어있는 인코딩에서의 폰트들을 가지고 있는 알맞은 폰트 사양을 고르기만하면 됩니다. 그렇지 않다면, 여러분은 X11에 알맞은 locale entry를 구해야만 할 수도 있습니다. 이는 예를들어 같은 기꼐에서 ‘ja_JP.UTF-8’에서 실행 될 때, 일본 글씨가 디스플레이 되지만 ‘en_GB.UTF-8’을 실행할 때는 디스플레이 되지 않을 수도 있다는 뜻입니다 (몇몇의 시스템들에서 많은 UTF-8 X11 locale들이 예를들어 ISO 8859-1 (Western European), JISX0208 (Kanji), KSC5601(Korean), GB2312 (Chinese Han) and JISX0201 (Kana)와 같은 문자 세트들을 커버하는 ‘en_US.UTF-8’으로 불리어짐에도 불구하고).

몇몇의 시스템들에서, 상형 문자의 넓은 범위를 커버하는 scalable 폰트들이 사용가능합니다. 이 중 하나의 소스는 TrueType/OpenType 폰트들이고,이들은 높은 커버리지를 제공할 수 있습니다. 다른 것은 Type 1 폰트들 입니다: Type 1 폰트들의 URW 세트는 Cyrillic을 포함하는 기본 X11 비트맵들 보다 유니코드 상형문자의 더 넓은 커버리지를 가진 Helvetica와 같은 기본 typeface들은 제공합니다. 이들은 일반적으로 기본 설치의 일부분이 아니고, 이들을 사용하기 위해서 X 서버가 configure되어야 할 수도 있습니다.이들은 예를들어 다음과 같이 X11 fonts 디렉토리나 다른 곳에 있을 수도 있습니다.

/usr/share/fonts/default/Type1
/usr/share/fonts/ja/TrueType

C.2 리눅스(linux)

리눅스는 R을 위한 주요 개발 플랫폼이어서, 소스에서부터의 compilation은 보통 기본 컴파일러 들이 있어 간단합니다.

RPM과 deb와 같은) 몇몇의 패키지 관리 시스템들이 패키지의 사용자 버전과 개발자 버전을 구분짓는다는 것을 기억하십시오. 후자는 보통 같은 이름을 가지지만, extension ‘-devel’ 혹은 ‘-dev’가 있습니다: 두 가지 모두의 버전가 설치되어있어야만 합니다. 그러므로 예상되는 특성이 발경되는지를 보기위해서는 configure output을 꼭 체크하세요: 만약 예를 들어 ‘readline’이 없어졌다면, 개발자 패키지를 더하십시오. (대부분의 시스템 상에서, 여러분은 ‘readline’ 패키지(들)의 종속들이어야만하는 ‘ncurses’와 이의 개발자 패키지 또한 필요할 것입니다. )

  Interfaces supported:      X11, tcltk
  External libraries:        readline, zlib, bzlib, lzma, PCRE, curl
  Additional capabilities:   PNG, JPEG, TIFF, NLS, cairo, ICU

R이 바이너리 distribution에서부터 설치되었을 떼, FORTRAN compiler과 같은 없어진 구성요소들에 대한 문제가 가끔있습니다. ‘R-help’ archive들을 찾아보는 것이 대개 무엇이 필요한지를 알려줄 것입니다.

ix86’ Linux가 공유된 라이브러리에서 PIC 코드가 아닌 것을 받아들이는 것 처럼 보이지만, 이는 다른 플랫폼들, 특히 ‘x86_64’와 같은 64 비트 CPU 들에서는 반드시 이렇지는 않습니다. 그러므로 연결되어 있을 수도 있는 위치-독립적 코드가 (Tcl/Tk 라이브러리들, libpng, libjpegzlib과 같은) 어떤 static라이브러리에서 사용되었는지를 확실하게하기위하여 BLAS 라이브러리들과 R을 공유된 라이브러리처럼 빌드할 때 주의가 필요할 수 있습니다. 다행스럽게도 이들은 보통 ATLAS BLAS 라이브러리들의 예외인 공유된 라이브러리들처럼 빌드됩니다.

CFLAGS 등을 위해 선택된 기본 최적화 설정들은 보수적입니다. 이는 -mtune의 사용이 최근 CPU들(특히 ’ix86’) 상에서 현저한 성능 향상을 초래할 가능성이 있습니다: 한 가지 가능성은 R이 설치되어있는 기계에서의 최상의 성응을 위해서 -mtune=native를 더하는 것 입니다: 만약 compilation이 사이트 전체의 설치를 위한 것이라면, 이는 -mtume=core2와 같은 것의 사용이 여전히 바람직 할 수 있습니다. 이는 최적화 레벨을 -O3까지 높이는 것 또한 가능합니다: 하지만 컴파일러 들의 많은 버전들에서 이는 적어도 하나의 CRAN 패키지에서 문제의 원인이 되었습니다.64-비트와 32-비트 둘 다의 지원을 가진 플랫폼들은,

For platforms with both 64- and 32-bit support, it is likely that

LDFLAGS="-L/usr/local/lib64 -L/usr/local/lib"

is appropriate since most (but not all) software installs its 64-bit libraries in /usr/local/lib64. To build a 32-bit version of R on ‘x86_64’ with Fedora 21 we used

CC="gcc -m32"
CXX="g++ -m32"
F77="gfortran -m32"
FC=${F77}
OBJC=${CC}
LDFLAGS="-L/usr/local/lib"
LIBnn=lib

LIBnn’의 사용을 유의하십시오: ‘x86_64’ Fedora는 그의 64-비트 소프트웨어를 /usr/lib64에 그리고 32-비트 소프트웨어를 /usr/lib에 설치합니다. Linking은 적합하지 않은 바이너리를 스킵할 것이지만, 예를들어 32-비트 Tcl/Tk configure 스크립들은 /usr/lib안에 있습니다. pkg-config 경로를 설정하는 것이 필요할 수도 있습니다. 예를들어,

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig

로 리눅스의 64-비트 버전들은 2Gb 이상의 파일들을위한 지원으로 빌드되고, 32-비트 버전들은 -disable-largefile이 지정되지 않은 이상 가능할 것입니다.

로 리눅스의 64-비트 버전들은 2Gb 이상의 파일들을위한 지원으로 빌드되고, 32-비트 버전들은 -disable-largefile이 지정되지 않은 이상 가능할 것입니다. Gcc  4.1.1을 가진 (‘powerpc64’라고도 알려져있는) ‘ppc64’에 R의 64-비트 버전을 빌드하기위해 Ei-ji Nakama는 다음을 사용합니다.

CC="gcc -m64"
CXX="gxx -m64"
F77="gfortran -m64"
FC="gfortran -m64"
CFLAGS="-mminimal-toc -fno-optimize-sibling-calls -g -O2"
FFLAGS="-mminimal-toc -fno-optimize-sibling-calls -g -O2"

추가의 flag들은 libmath.a에 반하여 연결된 문재들을 해결하고 R이 공유된 라이브러리처럼 연결할 때 필요합니다.


C.2.1 Clang

R은 gfortran과 함께 CC=clang CXX=clang++에의해 적용된Clang front-ends에 기초하여, 리눅스 ‘ix86’과 ‘x86_64’ C와 C++ compiler들(http://clang.llvm.org, 버전 2.9와 3.0)과 함께 빌드되어졌습니다. 이들은 해당하는 GCC compiler들로의 매우 비슷한 옵션들을 가집니다.

This has to be used in conjunction with a Fortran compiler: the configure code will remove -lgcc from FLIBS, which is needed for some versions of gfortran.

The current default for clang++ is to use the C++ runtime from the installed g++. Using the runtime from the libc++ project (http://libcxx.llvm.org/) has also been tested: for some R packages only the variant using libcxxabi was successful.

Most builds of clang have no OpenMP support. For builds of version 3.7 or later which do, you will probably need to add

SHLIB_OPENMP_CFLAGS=-fopenmp=libomp
SHLIB_OPENMP_CXXFLAGS=-fopenmp=libomp

in config.site.


C.2.2 Intel compilers

Intel compilers have been used under ‘ix86’ and ‘x86_64’ Linux. Brian Ripley used version 9.0 of the compilers for ‘x86_64’ on Fedora Core 5 with

CC=icc
CFLAGS="-g -O3 -wd188 -ip -mp"
F77=ifort
FLAGS="-g -O3 -mp"
CXX=icpc
CXXFLAGS="-g -O3 -mp"
FC=ifort
FCFLAGS="-g -O3 -mp"
ICC_LIBS=/opt/compilers/intel/cce/9.1.039/lib
IFC_LIBS=/opt/compilers/intel/fce/9.1.033/lib
LDFLAGS="-L$ICC_LIBS -L$IFC_LIBS -L/usr/local/lib64"
SHLIB_CXXLD=icpc

Configure은 C99-compliane를위해 CC로 ‘-c99’을 더할 것 입니다. 이는 icc10 이후 것들의 경고를 일으키기떄문에, 그 곳에 CC=”icc-std=c99”을 사용하십시오. Flag -wd188은 열거형인 ‘Rboolean’에대한 많은 경고들을 억제할 것입니다. Intel C compiler가 ‘__GNUC__’을 gcc의 완전한 모방 없이 설정하기때문에,CPPFLAGS=-no-gcc를 더하는 것을 제안합니다.

알맞은 IEC  60559 산수를 관리하기위해서, 여러분은 필시 컴파일러 버전에 따라서 –mp (위에서 보여짐)이나 –fp-model precise –fp-model source들과 같은 CFLAGS, FFLAGS, 그리고 CXXFLAGS들에 flag들을 더할 필요가 있을 것 입니다.

Others have reported success with versions 10.x and 11.x.


C.2.3 Oracle Solaris Studio compilers

Brian Ripley tested the Sun Studio 12 compilers, since renamed to Oracle Solaris Studio. On ‘x86_64’ Linux with

CC=suncc
CFLAGS="-xO5 -xc99 -xlibmil -nofstore"
CPICFLAGS=-Kpic
F77=sunf95
FFLAGS="-O5 -libmil -nofstore"
FPICFLAGS=-Kpic
CXX="sunCC -library=stlport4"
CXXFLAGS="-xO5 -xlibmil -nofstore -features=tmplrefstatic"
CXXPICFLAGS=-Kpic
FC=sunf95
FCFLAGS=$FFLAGS
FCPICFLAGS=-Kpic
LDFLAGS=-L/opt/sunstudio12.1/rtlibs/amd64
SHLIB_LDFLAGS=-shared
SHLIB_CXXLDFLAGS=-G
SHLIB_FCLDFLAGS=-G
SAFE_FFLAGS="-O5 -libmil"

-m64 could be added, but was the default. Do not use -fast: see the warnings under Solaris. (The C++ options are also explained under Solaris.)

Others have found on at least some versions of ‘ix86’ Linux that the configure flag --disable-largefile was needed (since glob.h on that platform presumed gcc was being used).


C.3 OS X

The instructions here are for ‘x86_64’ builds on 10.9 (Mavericks) or later. In principle42 R can be built for 10.4 to 10.8 and for PowerPC or 32-bit Intel Macs but these has not been tested recently.

You can build R using Apple’s ‘Command Line Tools’ and suitable compilers. You will also need readline (or to configure with --without-readline), and a Fortran compiler. Those and other binary components are available from https://r.research.att.com/libs: you are likely to need pcre and xz (recent OS X provides libs but not headers for these).

You may also need to install an X sub-system (or you will need to configure using option --without-x): see https://xquartz.macosforge.org/. (Note that XQuartz will likely need to be re-installed after an OS upgrade.)

To use the quartz() graphics device you need to configure with --with-aqua (which is the default): quartz() then becomes the default device when running R at the console and X11 would only be used for the command-line-R data editor/viewer and one version of Tcl/Tk. (This needs an Objective-C compiler43 which can compile the source code of quartz().)

Use --without-aqua if you want a standard Unix-alike build: apart from disabling quartz() and the ability to use the build with R.APP, it also changes the default location of the personal library (see ?.libPaths()). Also use --disable-R-framework to install in the standard layout.

Various compilers can be used. The current CRAN ‘Mavericks’ distribution of R is built using

CC=clang
CXX=clang++
F77=gfortran-4.8
FC=$F77
OBJC=clang
CFLAGS=-Wall -mtune=core2 -g -O2
CXXFLAGS=-Wall -mtune=core2 -g -O2'
OBJCFLAGS=-Wall -mtune=core2 -g -O2
F77FLAGS=-Wall -g -O2
FCFLAGS=$F77FLAGS

with clang and clang++ from Xcode, and the Fortran compiler from https://r.research.att.com/libs/gfortran-4.8.2-darwin13.tar.bz2.44 Apple’s builds of clang currently have little or no OpenMP support.

Other builds of gfortran are available: see https://gcc.gnu.org/wiki/GFortranBinaries. To use one of these with a binary distribution of R you will probably need to specify the name or path in a personal or site Makevars file (see ‘Customizing package compilation’).

Pre-compiled versions of many of the Useful libraries and programs are available from https://r.research.att.com/libs/. You will most likely want at least jpeg, libpng and readline (and perhaps tiff). pkg-config is not provided by Apple and useful for many packages: it will also be used if present when configuring the X11() device.

Support for cairo (without Pango) can be enabled in two ways: both need pkg-config available. XQuartz ships cairo and its version will be selected if its pkg-config files are first on the configuration path: for example by setting

export PKG_CONFIG_PATH=/opt/X11/lib/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig

Otherwise the binary libraries at https://r.research.att.com/libs/ can be used: cairo, fontconfig, freetype and pixman are needed.

The Accelerate library can be used via the configuration options

--with-blas="-framework Accelerate" --with-lapack

to provide potentially higher-performance versions of the BLAS and LAPACK routines.45

Looking at the top of /Library/Frameworks/R.framework/Resources/etc/Makeconf will show the compilers and configuration options used for the CRAN binary package for R: at the time of writing

--enable-memory-profiling

was used.

Configure option --with-internal-tzcode is the default on OS X, as a 64-bit time_t is available but the system implementation of time zones does not work correctly for times before 1902 or after 2037.

The TeX implementation used by the developers is MacTeX (https://www.tug.org/mactex/): the full installation is about 4GB, but a smaller version is available at https://www.tug.org/mactex/morepackages.html: you will need to add some packages, e.g. for the 2015 version we needed to add cm-super, helvetic, inconsolata and texinfo which brought this to about 410MB (or package texinfo and the collections collection-fontsrecommended, collection-fontsextra and collection-latexextra which will take this up to about 1GB). ‘TeX Live Utility’ (available via the MacTeX front page) provides a graphical means to manage TeX packages.

One OS X quirk is that the default path has /usr/local/bin after /usr/bin, contrary to common practice on Unix-alikes. This means that if you install tools from the sources they will by default be installed under /usr/local and not supersede the system versions.


C.3.1 Mavericks and Yosemite

For these versions Apple makes available compilers based on clang, and C++ headers and runtime are from LLVM’s ‘libc++’ project, as part of the ‘Command Line Tools’ (sometimes called ‘Command Line Developer Tools’).

These tools can be (re-)installed by xcode-select --install. (If you have a fresh installation, running e.g. make in a terminal will offer the installation of the command-line tools, or perhaps use the versions from Xcode. However, after an OS update, you are advised to re-install them.)

To use the compilers from the command-line tools with the recommended Fortran compiler, have in config.site something like

CC=clang
CXX=clang++
F77=gfortran-4.8
FC=$F77
OBJC=clang

(CC=gcc and CXX=g++ are slightly different front-ends to the same compilers.)

To build the graphics devices depending on cairographics, the XQuartz path for pkg-config files needs to be known to pkg-config when configure is run: this usually means adding it to the PKG_CONFIG_PATH environment variable, e.g.

export PKG_CONFIG_PATH= \
  /opt/X11/lib/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig

or putting

PKG_CONFIG_PATH=/opt/X11/lib/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig

in config.site.

For some pre-compiled software, for example the GTK framework, /opt/X11/include may need to be added to the include paths.

If you upgrade your OS you should re-install any of XQuartz, the ‘Command Line Tools’ and Java which you have installed. (Upgrading may partially remove previous versions which can be confusing.)

There are some problems with the recommended gfortran builds under Yosemite. They give warnings and gfortran-4.8 is reported to be unable to link packages containing Fortran 9x code. (The solution is to use a compiler built under Yosemite.)


C.3.2 El Capitan

[This is provisional information as El Capitan is not yet released.]

There are likely to be problems from the restriction that only Apple is allowed to install software under /usr: this affects inter alia MacTeX and XQuartz. For MacTeX it is necessary to include /Library/TeX/texbin in your path rather the /usr/texbin (and at the time of writing this only worked for MacTeX 2015 and not BasicTeX 2015).

configure may need to be told to look for X11 in XQuartz’s main location of /opt/X11, e.g. by

--x-includes=/opt/X11/include --x-libraries=/opt/X11/lib

See also the information on ‘Mavericks and Yosemite’.


C.3.3 Tcl/Tk headers and libraries

If you plan to use the tcltk package for R, you need to install a distribution of Tcl/Tk. There are two alternatives. If you use R.APP you will want to use X11-based Tcl/Tk (as used on other Unix-alikes), which is installed as part of the CRAN binary for R. This may need

-with-tcltk=/usr/local/lib

또는

--with-tcl-config=/usr/local/lib/tclConfig.sh 
--with-tk-config=/usr/local/lib/tkConfig.sh

Note that this requires a fully-updated XQuartz installation.

There is also a native (‘Aqua’) version of Tcl/Tk which produces widgets in the native OS X style: this will not work with R.APP because of conflicts over the OS X menu, but for those only using command-line R this provides a much more intuitive interface to Tk for experienced Mac users. Most versions of OS X come with Aqua Tcl/Tk libraries, but these are not current (nor recent) versions of Tcl/Tk (8.5.9 in Mavericks). It is better to install Tcl/Tk 8.6.x from the sources or a binary distribution from https://www.activestate.com/activetcl/downloads. Configure R with

--with-tcl-config=/Library/Frameworks/Tcl.framework/tclConfig.sh 
--with-tk-config=/Library/Frameworks/Tk.framework/tkConfig.sh

(for the versions bundled with OS X, use paths starting with /System/Library).

If you need to find out which version of Tk in use at run time, use

library(tcltk)
tclvalue(.Tcl("tk windowingsystem"))  # "x11" or "aqua"

C.3.4 Java

The situation with Java support on OS X is messy.

OS X no longer comes with an installed JRE, and an OS X upgrade removes one if already installed: it is intended to be installed at first use. Check if a JRE is installed by running java -version in a Terminal window: if Java is not installed this should prompt you to install it.

You may want/need to install the latest Java from Oracle (currently Java 8 from http://www.oracle.com/technetwork/java/javase/downloads/index.html).

You may need to install what Apple calls ‘legacy Java’46 to suppress pop-up messages, at least under Yosemite, even if you have a current version installed.

To see what compatible versions of Java are currently installed, run /usr/libexec/java_home -V -a x86_64. If needed, set the environment variable JAVA_HOME to choose between these, both when R is built from the sources and when R CMD javareconf is run.

Configuring and building R both looks for a JRE and for support for compiling JNI programs (used by packages rJava and JavaGD); the latter requires a JDK (Java SDK) and not just a JRE.

The build process tries to fathom out what JRE/JDK to use, but it may need some help, e.g. by setting JAVA_HOME. An Apple JRE can be specified explicitly by something like

JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home
JAVA_CPPFLAGS="-I/System/Library/Frameworks/JavaVM.framework/Headers"
JAVA_LD_LIBRARY_PATH=
JAVA_LIBS="-framework JavaVM"

The Oracle JDK can be specified explicitly by something like

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home
JAVA_CPPFLAGS="-I/${JAVA_HOME}/include -I/${JAVA_HOME}/include/darwin"
JAVA_LD_LIBRARY_PATH="${JAVA_HOME}/jre/lib/server"
JAVA_LIBS="-L/${JAVA_HOME}/jre/lib/server -ljvm" 

in config.site. The Apple developer versions of the JDK installed somewhere like

JAVA_HOME=/Library/Java/JavaVirtualMachines/1.6.0_43-b01-447.jdk/Contents/Home

Note that it is necessary to set the environment variable NOAWT to 1 to install many of the Java-using packages.


C.3.5 Frameworks

The CRAN build of R is installed as a framework, which is selected by the default option

./configure --enable-R-framework

(This is intended to be used with an Apple toolchain: other compilers may not support frameworks correctly.)

It is only needed if you want to build R for use with the R.APP console, and implies --enable-R-shlib to build R as a dynamic library. This option configures R to be built and installed as a framework called R.framework. The default installation path for R.framework is /Library/Frameworks but this can be changed at configure time by specifying the flag --enable-R-framework[=DIR] or at install time as

make prefix=/where/you/want/R.framework/to/go install

Note that installation as a framework is non-standard (especially to a non-standard location) and utilities may not support it (e.g. the pkg-config file libR.pc will be put somewhere unknown to pkg-config).


C.3.6 Building R.app

Note that building the R.APP GUI console is a separate project, using Xcode. Before compiling R.APP make sure the current version of R is installed in /Library/Frameworks/R.framework and working at the command-line (this can be a binary install).

The current sources can be checked out by

svn co https://svn.r-project.org/R-packages/trunk/Mac-GUI

This can be built by loading the R.xcodeproj project (select the R target and a suitable configuration), or from the command-line by e.g.

xcodebuild -target R -configuration Release

See also the INSTALL file in the checkout or directly at https://svn.r-project.org/R-packages/trunk/Mac-GUI/INSTALL.

R.APP does not need to be installed in any specific way. Building R.APP results in the R.APP bundle which appears as one R icon. This application bundle can be run anywhere and it is customary to place it in the /Applications folder.


C.4 솔라리스(solaris)

R has been built successfully on Solaris 10 (both Sparc and ‘x86’) using the (zero cost) Oracle Solaris Studio compilers: there has been some success with gcc 4/gfortran. (Recent Sun machines are AMD Opterons or Intel Xeons (‘amd64’) rather than ‘x86’, but 32-bit ‘x86’ executables are the default.)

There have been few reports on Solaris 11, with no known extra issues. Solaris 9 and earlier are now so old that it is unlikely that R is still used with them, and they will not be considered here.

The Solaris versions of several of the tools needed to build R (e.g. make, ar and ld) are in /usr/ccs/bin, so if using those tools ensure this is in your path. A version of the preferred GNU tar is (if installed) in /usr/sfw/bin. It may be necessary to avoid the tools in /usr/ucb: POSIX-compliant versions of some tools can be found in /usr/xpg4/bin and /usr/xpg6/bin.

A large selection of Open Source software can be installed from https://www.opencsw.org, by default installed under /opt/csw. Solaris 10 ships with bzlib version 1.0.6 (sufficient for the default --with-system-bzlib) but zlib version 1.2.3 (too old for --with-system-zlib): OpenCSW has 1.2.8.

You will need GNU libiconv and readline: the Solaris version of iconv is not sufficiently powerful.

The native make suffices to build R but a small number of packages require GNU make (some without good reason and without declaring it as ‘SystemRequirements’ in the DESCRIPTION file).

Some people have reported that the Solaris libintl needs to be avoided, for example by using --disable-nls or --with-included-gettext or using libintl from OpenCSW. (On the other hand, there have been many successful installs which automatically detected libintl from OpenCSW or selected the included gettext.)

The support for the C99 long double type on Sparc hardware uses quad-precision arithmetic, and this is usually slow because it is done by software emulation. On such systems the configure option --disable-long-double can be used for faster but less accurate computations.

The Solaris time-zone conversion services seem to be unreliable pre-1916 in Europe (when daylight-savings time was first introduced): most often reporting in the non-existent DST variant. Using configure option --with-internal-tzcode is recommended, and required if you find time-zone abbreviations being given odd values (as has been seen on 64-bit builds without it).

When using the Oracle compilers47 do not specify -fast, as this disables IEEE arithmetic and make check will fail.

It has been reported that some Solaris installations need

INTERNET_LIBS="-lsocket -lnsl"

on the configure command line or in file config.site; however, there have been many successful installs without this.

A little juggling of paths was needed to ensure GNU libiconv (in /usr/local) was used rather than the Solaris iconv:

CC="cc -xc99"
CFLAGS="-O -xlibmieee"
F77=f95
FFLAGS=-O
CXX="CC -library=stlport4"
CXXFLAGS=-O
FC=f95
FCFLAGS=$FFLAGS
FCLIBS="-lfai -lfsu"
R_LD_LIBRARY_PATH="/usr/local/lib:/opt/csw/gcc4/lib:/opt/csw/lib"

For a 64-bit target add -m64 to the compiler macros and use something like LDFLAGS=-L/usr/local/lib/sparcv9 or LDFLAGS=-L/usr/local/lib/amd64 as appropriate. It will also be necessary to point pkg-config at the 64-bit directories, e.g. one of

PKG_CONFIG_PATH=/opt/csw/lib/amd64/pkgconfig:/usr/lib/amd64/pkgconfig
PKG_CONFIG_PATH=/opt/csw/lib/sparcv9/pkgconfig:/usr/lib/sparcv9/pkgconfig

and to specify a 64-bit Java VM by e.g.

JAVA_CPPFLAGS="-I${JAVA_HOME}/../include -I${JAVA_HOME}/../include/solaris"
JAVA_LD_LIBRARY_PATH=${JAVA_HOME}/lib/amd64/server
JAVA_LIBS="-L${JAVA_HOME}/lib/amd64/server \
  -R${JAVA_HOME}/lib/amd64/server -ljvm"

With Solaris Studio 12.[23] on Sparc, FCLIBS needs to be

FCLIBS="-lfai -lfai2 -lfsu"

(and possibly other Fortran libraries, but this suffices for the packages currently on CRAN).

Currently ‘amd64’ and ‘sparcv9’ builds work out-of-the-box with Sun Studio 12u1 but not Solaris Studio 12.2 and 12.3: libRblas.so and lapack.so are generated with code that causes relocation errors (which is being linked in from the Fortran libraries). This means that building 64-bit R as a shared library may be impossible with Solaris Studio >= 12.2. For a standard build the trick seems to be to manually set FLIBS to avoid the troublesome libraries. For example, on ‘amd64’ set in config.site something like

FLIBS_IN_SO="-R/opt/solarisstudio12.3/lib/amd64
  /opt/solarisstudio12.3/lib/amd64/libfui.so
  /opt/solarisstudio12.3/lib/amd64/libfsu.so"

For 64-bit Sparc, set in config.site something like

FLIBS="-R/opt/solarisstudio12.3/prod/lib/sparc/64
 -lifai -lsunimath -lfai -lfai2 -lfsumai -lfprodai -lfminlai -lfmaxlai
 -lfminvai -lfmaxvai -lfui -lsunmath -lmtsk
 /opt/solarisstudio12.3/prod/lib/sparc/64/libfsu.so.1"

By default the Solaris Studio compilers do not by default conform to the C99 standard (appendix F 8.9) on the return values of functions such as log: use -xlibmieee to ensure this.

You can target specific Sparc architectures for (slightly) higher performance: -xtarget=native (in CFLAGS etc) tunes the compilation to the current machine.

Using -xlibmil in CFLAGS and -xlibmil in FFLAGS allows more system mathematical functions to be inlined.

On ‘x86’ you will get marginally higher performance via

CFLAGS="-xO5 -xc99 -xlibmieee -xlibmil -nofstore -xtarget=native"
FFLAGS="-O5 -libmil -nofstore -xtarget=native"
CXXFLAGS="-xO5 -xlibmil -nofstore -xtarget=native"
SAFE_FFLAGS="-libmil -fstore -xtarget=native"

but the use of -nofstore can be less numerically stable, and some packages (notably mgcv on ‘x86’) failed to compile at higher optimization levels with version 12.3.

The Solaris Studio compilers provide several implementations of the C++98 standard which select both the set of headers and a C++ runtime library. These are selected by the -library flag, which as it is needed for both compiling and linking is best specified as part of the compiler. The examples above use ‘stlport4’, currently the most modern of the options: the default (but still needed to be specified as it is needed for linking) is ‘Cstd’: see http://www.oracle.com/technetwork/server-storage/solaris/cmp-stlport-libcstd-142559.html. Note though that most external Solaris C++ libraries will have been built with ‘Cstd’ and so an R package using such libraries also needs to be. Occasionally the option -library=stlport4,Crun has been needed.

Several CRAN packages using C++ need the more liberal interpretation given by adding

CXXFLAGS="-features=tmplrefstatic"

The performance library sunperf is available for use with the Solaris Studio compilers. If selected as a BLAS, it must also be selected as LAPACK via (for Solaris Studio 12.2 and later)

./configure --with-blas='-library=sunperf' --with-lapack

This has often given test failures in the past, in several different places. At the time of writing it fails in tests/reg-BLAS.R, and on some builds, including for ‘amd64’, it fails in example(eigen).

Parsing very complex R expressions needs a lot of stack space when the Oracle compilers are used: several packages require the stack increased to at least 20MB.


C.4.1 Using gcc

If using gcc, ensure that the compiler was compiled for the version of Solaris in use. (This can be ascertained from gcc -v.) gcc makes modified versions of some header files, and several reports of problems were due to using gcc compiled on one version of Solaris on a later version.

The notes here are for gcc set up to use the Solaris linker: it can also be set up to use GNU ld, but that has not been tested.

Compilation for a 32-bit Sparc target with gcc 4.9.2 needed

CPPFLAGS=-I/opt/csw/include
LDFLAGS="-L/opt/csw/gcc4/lib -L/opt/csw/lib"

and for a 64-bit Sparc target

CC="gcc -m64"
F77="gfortran -m64"
CXX="g++ -m64"
FC=$F77
CPPFLAGS=-I/opt/csw/include
LDFLAGS="-L/opt/csw/gcc4/lib/sparcv9 -L/opt/csw/lib/sparcv9"

Note that paths such as /opt/csw/gcc4/lib/sparcv9 may need to be in the LD_LIBRARY_PATH during configuration.

The compilation can be tuned to a particular cpu: the CRAN check system uses -mtune=niagara2.

Compilation for an ‘x86’ target with gcc 4.9.2 needed

CC="/opt/csw/gcc4/bin/gcc -m32"
CPPFLAGS="-I/opt/csw/include -I/usr/local/include"
F77="/opt/csw/gcc4/bin/gfortran -m32"
CXX="/opt/csw/gcc4/bin/g++ -m32"
FC="/opt/csw/gcc4/bin/gfortran -m32"
LDFLAGS="-L/opt/csw/gcc4/lib -L/opt/csw/lib -L/usr/local/lib"

(-L/opt/csw/lib is needed since TeXLive was built using 32-bit gcc, and we need /opt/csw/lib in R_LD_LIBRARY_PATH.)

For an ‘amd64’ target with gcc 4.9.2 we used

CC="/opt/csw/gcc4/bin/gcc -m64"
CPPFLAGS="-I/opt/csw/include -I/usr/local/include"
F77="/opt/csw/gcc4/bin/gfortran -m64"
FPICFLAGS=-fPIC
CXX="/opt/csw/gcc4/bin/g++ -m64"
FC=$F77
FCPICFLAGS=$FPICFLAGS
LDFLAGS="-L/opt/csw/gcc4/lib/amd64 -L/opt/csw/lib/amd64"

C.5 AIX

We no longer support AIX prior to 4.2, and configure will throw an error on such systems.

Ei-ji Nakama was able to build under AIX 5.2 on ‘powerpc’ with GCC 4.0.3 in several configurations. 32-bit versions could be configured with --without-iconv as well as --enable-R-shlib. For 64-bit versions he used

OBJECT_MODE=64
CC="gcc -maix64"
CXX="g++ -maix64"
F77="gfortran -maix64"
FC="gfortran -maix64"

and was also able to build with the IBM xlc and Hitachi f90 compilers by

OBJECT_MODE=64
CC="xlc -q64"
CXX="g++ -maix64"
F77="f90 -cpu=pwr4 -hf77 -parallel=0 -i,L -O3 -64"
FC="f90 -cpu=pwr4 -hf77 -parallel=0 -i,L -O3 -64"
FLIBS="-L/opt/ofort90/lib -lhf90vecmath -lhf90math -lf90"

Some systems have f95 as an IBM compiler that does not by default accept FORTRAN 77. It needs the flag -qfixed=72, or to be invoked as xlf_r.

The AIX native iconv does not support encodings ‘latin1’ nor ‘""’ and so cannot be used. (As far as we know GNU libiconv could be installed.)

Fan Long reported success on AIX 5.3 using

OBJECT_MODE=64
LIBICONV=/where/libiconv/installed
CC="xlc_r -q64" 
CFLAGS="-O -qstrict"
CXX="xlC_r -q64"
CXXFLAGS="-O -qstrict"
F77="xlf_r -q64"
AR="ar -X64"
CPPFLAGS="-I$LIBICONV/include -I/usr/lpp/X11/include/X11"
LDFLAGS="-L$LIBICONV/lib -L/usr/lib -L/usr/X11R6/lib"

On one AIX 6.x system it was necessary to use R_SHELL to set the default shell to be Bash rather than Zsh.

Kurt Hornik and Stefan Theussl at WU (Wirtschaftsuniversität Wien) successfully built R on a ‘powerpc’ (8-CPU Power6 system) running AIX 6.1, configuring with or without --enable-R-shlib (Ei-ji Nakama’s support is gratefully acknowledged).

It helps to describe the WU build environment first. A small part of the software needed to build R and/or install packages is available directly from the AIX Installation DVDs, e.g., Java 6 and X11. Additional open source software (OSS) is packaged for AIX in .rpm files and available from both IBM’s “AIX Toolbox for Linux Applications” (http://www-03.ibm.com/systems/power/software/aix/linux/) and http://www.oss4aix.org/download/. The latter website typically offers more recent versions of the available OSS. All tools needed and libraries downloaded from these repositories (e.g., GCC, Make, libreadline, etc.) are typically installed to /opt/freeware, hence corresponding executables are found in /opt/freeware/bin which thus needs to be in PATH for using these tools. As on other Unix systems one needs GNU libiconv as the AIX version of iconv is not sufficiently powerful. Additionally, for proper Unicode compatibility one should install the corresponding package from the ICU project (http://www.icu-project.org/download/), which offers pre-compiled binaries for various platforms which in case of AIX can be installed via unpacking the tarball to the root file system. For full LaTeX support one can install the TeX Live DVD distribution (https://www.tug.org/texlive/): it is recommended to update the distribution using the tlmgr update manager. For 64-bit R builds supporting Tcl/Tk this needs to installed from the sources as available pre-compiled binaries supply only 32-bit shared objects.

The recent WU testing was done using compilers from both the GNU Compiler Collection (version 4.2.4) which is available from one of the above OSS repositories, and the IBM C/C++ (XL C/C++ 10.01) as well as FORTRAN (XL Fortran 12.01) compilers (http://www14.software.ibm.com/webapp/download/byproduct.jsp#X).

To compile for a 64-bit ‘powerpc’ (Power6 CPU) target one can use

CC ="gcc -maix64 -pthread"
CXX="g++ -maix64 -pthread"
FC="gfortran -maix64 -pthread"
F77="gfortran -maix64 -pthread"
CFLAGS="-O2 -g -mcpu=power6"
FFLAGS="-O2 -g -mcpu=power6"
FCFLAGS="-O2 -g -mcpu=power6"

for the GCC and

CC=xlc
CXX=xlc++
FC=xlf
F77=xlf
CFLAGS="-qarch=auto -qcache=auto -qtune=auto -O3 -qstrict -ma"
FFLAGS="-qarch=auto -qcache=auto -qtune=auto -O3 -qstrict"
FCFLAGS="-qarch=auto -qcache=auto -qtune=auto -O3 -qstrict"
CXXFLAGS="-qarch=auto -qcache=auto -qtune=auto -O3 -qstrict"

for the IBM XL compilers. For the latter, it is important to note that the decision for generating 32-bit or 64-bit code is done by setting the OBJECT_MODE environment variable appropriately (recommended) or using an additional compiler flag (-q32 or -q64). By default the IBM XL compilers produce 32 bit code. Thus, to build R with 64-bit support one needs to either export OBJECT_MODE=64 in the environment or, alternatively, use the -q64 compiler options.

It is strongly recommended to install Bash and use it as the configure shell, e.g., via setting CONFIG_SHELL=/usr/bin/bash in the environment, and to use GNU Make (e.g., via (MAKE=/opt/freeware/bin/make).

Further installation instructions to set up a proper R development environment can be found in the “R on AIX” project on R-Forge (https://R-Forge.R-project.org/projects/aix/).


C.6 FreeBSD

There have been no reports for R 3.0.0 or later, except for an configuration failure of R 3.2.0 on FreeBSD 10 (addressed in R 3.2.2).


C.7 Cygwin

The Cygwin emulation layer on Windows can be treated as a Unix-alike OS. This is unsupported, but experiments have been conducted and a few workarounds added. Cygwin has not been tested for R 3.0.0 or later.

The 64-bit version is completely unsupported. The 32-bit version has never worked well enough to pass R’s make check.

R requires C99 complex type support, which is available as from Cygwin 1.7.8 (March 2011). However, the (then) implementation of cacos gave incorrect results, so we undefine HAVE_CACOS in src/main/complex.c on that platform. It has been reported that some C99 long double mathematical functions are missing, so configuring with --disable-long-double was required.

Only building as a shared library can possibly work,48 so use e.g.

./configure --disable-nls --enable-R-shlib FLIBS=-lgfortran
make

Enabling NLS does work if required, although adding --with-included-gettext is preferable. You will see many warnings about the use of auto-import. Setting ‘FLIBS’ explicitly seems needed currently as the auto-detection gives an incorrect value.

You will need the tetex-extra Cygwin package to build NEWS.pdf and the vignettes.

Note that this gives you a command-line application using readline for command editing. The ‘X11’ graphics device will work if a suitable X server is running, and the standard Unix-alike ways of installing source packages work. There was a bug in the /usr/lib/tkConfig.sh script in the version we looked at, which needs to have

TK_LIB_SPEC='-ltk84'

The overhead of using shell scripts makes this noticeably slower than a native build of R on Windows.

Even when R could be built, not all the tests passed: there were incorrect results from wide-character regular expressions code and from sourcing CR-delimited files.

Do not use Cygwin’s BLAS library: it is known to give incorrect results.


C.8 New platforms

There are a number of sources of problems when installing R on a new hardware/OS platform. These include

Floating Point Arithmetic: R requires arithmetic compliant with IEC 60559, also known as IEEE 754. This mandates the use of plus and minus infinity and NaN (not a number) as well as specific details of rounding. Although almost all current FPUs can support this, selecting such support can be a pain. The problem is that there is no agreement on how to set the signalling behaviour; Sun/Sparc, SGI/IRIX and ‘ix86’ Linux require no special action, FreeBSD requires a call to (the macro) fpsetmask(0) and OSF1 required that computation be done with a -ieee_with_inexact flag etc. On a new platform you must find out the magic recipe and add some code to make it work. This can often be done via the file config.site which resides in the top level directory.

Beware of using high levels of optimization, at least initially. On many compilers these reduce the degree of compliance to the IEEE model. For example, using -fast on the Solaris Studio compilers has caused R’s NaN to be set incorrectly, and gcc’s -ffast-math and clang’s -Ofast have given incorrect results.

Shared Objects: There seems to be very little agreement across platforms on what needs to be done to build shared objects. there are many different combinations of flags for the compilers and loaders. GNU libtool cannot be used (yet), as it currently does not fully support FORTRAN: one would need a shell wrapper for this). The technique we use is to first interrogate the X window system about what it does (using xmkmf), and then override this in situations where we know better (for tools from the GNU Compiler Collection and/or platforms we know about). This typically works, but you may have to manually override the results. Scanning the manual entries for cc and ld usually reveals the correct incantation. Once you know the recipe you can modify the file config.site (following the instructions therein) so that the build will use these options.

It seems that gcc 3.4.x and later on ‘ix86’ Linux defeat attempts by the LAPACK code to avoid computations entirely in extended-precision registers, so file src/modules/lapack/dlamc.f may need to be compiled without optimization. Set the configure variable SAFE_FFLAGS to the flags to be used for this file. If configure detects GNU FORTRAN it adds flag -ffloat-store to FFLAGS. (Other settings are needed when using icc on ‘ix86’ Linux, for example. Using -mpc64 is preferable on more recent GCC compilers.)

If you do manage to get R running on a new platform please let us know about it so we can modify the configuration procedures to include that platform.

If you are having trouble getting R to work on your platform please feel free to use the ‘R-devel’ mailing list to ask questions. We have had a fair amount of practice at porting R to new platforms ...


Appendix D The Windows toolset

If you want to build R or add-on packages from source in Windows, you will need to collect, install and test an extensive set of tools. See https://CRAN.R-project.org/bin/windows/Rtools/ for the current locations and other updates to these instructions. (Most Windows users will not need to build add-on packages from source; see Add-on packages for details.)

We have found that the build process for R is quite sensitive to the choice of tools: please follow our instructions exactly, even to the choice of particular versions of the tools.49 The build process for add-on packages is somewhat more forgiving, but we recommend using the exact toolset at first, and only substituting other tools once you are familiar with the process.

This appendix contains a lot of prescriptive comments. They are here as a result of bitter experience. Please do not report problems to the R mailing lists unless you have followed all the prescriptions.

We have collected most of the necessary tools (unfortunately not all, due to license or size limitations) into an executable installer named50 Rtools31.exe, available from https://CRAN.R-project.org/bin/windows/Rtools/. You should download and run it, choosing the default “Package authoring installation” to build add-on packages, or the “full installation” if you intend to build R.

You will need the following items to build R and packages. See the subsections below for detailed descriptions.

For installing simple source packages containing data or R source but no compiled code, none of these are needed.

A complete build of R including PDF manuals, and producing the installer will also need the following:

It is important to set your PATH properly. The installer Rtools*.exe optionally sets the path to components that it installs.

Your PATH may include . first, then the bin directories of the tools, the compiler toolchain and LaTeX. Do not use filepaths containing spaces: you can always use the short forms (found by dir /x at the Windows command line). Network shares (with paths starting \\) are not supported.

For example for a 32-bit build, all on one line,

PATH=c:\Rtools\bin;c:\Rtools\gcc-4.6.3\bin;c:\MiKTeX\miktex\bin;
     c:\R\R-3.2\bin\i386;c:\windows;c:\windows\system32

It is essential that the directory containing the command line tools comes first or second in the path: there are typically like-named tools51 in other directories, and they will not work. The ordering of the other directories is less important, but if in doubt, use the order above.

Our toolset contains copies of Cygwin DLLs that may conflict with other ones on your system if both are in the path at once. The normal recommendation is to delete the older ones; however, at one time we found our tools did not work with a newer version of the Cygwin DLLs, so it may be safest not to have any other version of the Cygwin DLLs in your path.


D.1 LaTeX

The ‘MiKTeX’ (http://www.miktex.org/) distribution of LaTeX includes a suitable port of pdftex. This can be set up to install extra packages ‘on the fly’, which is the simplest way to use it (and the default). The ‘basic’ version of ‘MiKTeX’ almost suffices: when last tested packages

epsf fancyvrb inconsolata listings mptopdf natbib url

needed to be added (on the fly or via the ‘MiKTeX’ Package Manager) to install R. In any case ensure that the inconsolata package is installed—you can check with the ‘MiKTeX’ Package Manager.

The Rtools*.exe installer does not include any version of LaTeX.

It is also possible to use the TeXLive distribution from https://www.tug.org/texlive/.

Please read Making the manuals about how to make fullrefman.pdf and set the environment variable R_RD4PDF suitably; ensure you have the required fonts installed or that ‘MiKTeX’ is set up to install LaTeX packages on first use.


D.2 The Inno Setup installer

To make the installer package ((3.3.0)-win.exe) we currently require the Unicode version of Inno Setup 5.3.7 or later from http://jrsoftware.org/. This is not included in Rtools*.exe.

Copy file src/gnuwin32/MkRules.dist to src/gnuwin32/MkRules.local and edit it to set ISDIR to the location where Inno Setup was installed.


D.3 The command line tools

This item is installed by the Rtools*.exe installer.

If you choose to install these yourself, you will need suitable versions of at least basename, cat, cmp, comm, cp, cut, date, diff, du, echo, expr, gzip, ls, make, makeinfo, mkdir, mv, rm, rsync, sed, sh, sort, tar, texindex, touch and uniq; we use those from the Cygwin distribution (https://www.cygwin.com/) or compiled from the sources. You will also need zip and unzip from the Info-ZIP project (http://www.info-zip.org/). All of these tools are in Rtools*.exe.

Beware: ‘Native’ ports of make are not suitable (including those called ‘MinGW make’ at the MinGW SourceForge site and mingw32-make in some MinGW-w64 distributions). There were also problems with other versions of the Cygwin tools and DLLs. To avoid frustration, please use our tool set, and make sure it is at the front of your path (including before the Windows system directories). If you are using a Windows shell, type PATH at the prompt to find out.

You may need to set the environment variable CYGWIN to a value including ‘nodosfilewarning’ to suppress messages about Windows-style paths.


D.4 The MinGW-w64 toolchain

Technically you need more than just a compiler so the set of tools is referred to as a ‘toolchain’.

The preferred toolchain is part of Rtools31.exe: this uses a beta version of gcc 4.6.3 and version 2.0.1 of the MinGW-w64 project’s runtime.

This toolchain uses multilib: that is there is a single front-end such as gcc.exe for each of the compilers and 32-bit (the default) and 64-bit compilation are selected by the flags52 -m32 and -m64 respectively. The tools are all 32-bit Windows executables and should be able to run on any current version of Windows—however you do need a 64-bit version of Windows to build 64-bit R as the build process runs R.

To select a 32-bit or 64-bit build of R, set the options in MkRules.local appropriately (following the comments in the file).

Some external software libraries will need to be re-compiled under the new toolchain: especially those providing a C++ interface. Many of those used by CRAN packages are available from https://www.stats.ox.ac.uk/pub/Rtools/multilib/. Users developing packages with Rcpp need to ensure that they use a version built with exactly the same toolchain as their package: the recommendation is to build Rcpp from its sources yourself.

There is support for OpenMP and pthreads in this toolchain. As the performance of OpenMP on Windows is poor for small tasks, it is not used for R itself.


D.5 Useful additional programs

The process of making the installer will make use of qpdf to compact some of the package vignettes, if it is available. Windows binaries of qpdf are available from http://sourceforge.net/projects/qpdf/files/. Set the path to the qpdf installation in file MkRules.local.

Developers of packages will find some of the ‘goodies’ at https://www.stats.ox.ac.uk/pub/Rtools/goodies useful.

There is a version of the file command that identifies the type of files, and is used by Rcmd check if available. The binary distribution is included in Rtools31.exe.

The file xzutils.zip contains the program xz which can be used to (de)compress files with that form of compression.


Function and variable index

Jump to:   C   I   M   R   U  
Index Entry  Section

C
configure: 간단한 컴파일하기(compilation)
configure: 간단한 컴파일하기(compilation)
configure: Installation
configure: Installation
configure: Configuration variables
configure: Using make

I
install.packages: 패키지 설치하기

M
make: Using make

R
remove.packages: 패키지 제거하기
R_HOME: 간단한 컴파일하기(compilation)

U
update.packages: 패키지 업데이트 하기

Jump to:   C   I   M   R   U  

개념 인덱스(concept index)

Jump to:   A   B   F   I   L   M   O   P   R   S   U   V   W              
Index Entry  Section

A
AIX: AIX

B
BLAS library: Linear algebra
BLAS library: OS X
BLAS library: 솔라리스(solaris)

F
FORTRAN: Using FORTRAN
FreeBSD: FreeBSD

I
Installation: Installation

L
LAPACK library: LAPACK
LAPACK library: OS X
LAPACK library: 솔라리스(solaris)
Libraries: Add-on packages
Libraries, managing: 라이브러리 관리하기
Libraries, site: 라이브러리 관리하기
Libraries, user: 라이브러리 관리하기
Locale: 국제화(internationalization)
Locale: 로케일(locales)
Localization: 국제화(internationalization)

M
Manuals, installing: Installation

O
OS X: 유닉스와 같은 환경에서 R 설치하기
OS X: OS X에서 R 설치하기
OS X: OS X

P
Packages: Add-on packages
Packages, default: 기본(default) 패키지
Packages, installing: 패키지 설치하기
Packages, removing: 패키지 제거하기
Packages, updating: 패키지 업데이트 하기

R
Repositories: 패키지 저장소(repository) 설정하기
R을 얻는 방법: R을 얻는 방법

S
Site libraries: 라이브러리 관리하기
Sources for R: 소스(source)를 얻은 뒤 압축을 푸는 방법
Subversion: 서브버전과 rsync를 이용하는 방법
Subversion: 필수적인 프로그램과 라이브러리

U
User libraries: 라이브러리 관리하기

V
Vignettes: 필수적인 프로그램과 라이브러리

W
winCairo.dll: 카이로장치(cairo devices) 파일 빌드하기

국제화(internationalization): 국제화(internationalization)

리눅스(linux): 유닉스와 같은 환경에서 R 설치하기
리눅스(linux): 리눅스(linux)

매뉴얼 생성하기: Making the manuals

솔라리스(solaris): 솔라리스(solaris)

윈도우즈에서 R설치하기: 윈도우즈에서 R 설치하기

유닉스와 같은 환경에 R 설치하기: 유닉스와 같은 환경에서 R 설치하기

Jump to:   A   B   F   I   L   M   O   P   R   S   U   V   W              

환경변수 인덱스(environment variable index)

Jump to:   B   C   D   F   J   L   O   P   R   T  
Index Entry  Section

B
BLAS_LIBS: BLAS

C
CC: Using FORTRAN
CONFIG_SITE: Configuration variables
CPP: Using FORTRAN
CYGWIN: The command line tools

D
DESTDIR: Installation
DESTDIR: Unix-alike standalone

F
F2C: Using FORTRAN
F2CLIBS: Using FORTRAN
FPICFLAGS: Using FORTRAN

J
JAVA_HOME: Java support

L
LANG: Localization of messages
LANGUAGE: Localization of messages
LANGUAGE: Localization of messages
LAPACK_LIBS: LAPACK
LC_ALL: Localization of messages
LC_COLLATE: Testing a Unix-alike Installation
LC_MESSAGES: Localization of messages
LD_LIBRARY_PATH: Unix-alike standalone
LD_LIBRARY_PATH: ACML
LD_LIBRARY_PATH: Using FORTRAN
LD_LIBRARY_PATH: Compile and load flags
LD_LIBRARY_PATH: Using gcc
LOCAL_SOFT: 윈도우즈 패키지

O
OBJECT_MODE: AIX

P
PAPERSIZE: Setting paper size
PATH: 필수적인 프로그램과 라이브러리
PATH: Using FORTRAN
PATH: AIX
PATH: The Windows toolset

R
R_ARCH: Sub-architectures
R_ARCH: Sub-architectures
R_BROWSER: 브라우저 설정하기
R_DEFAULT_PACKAGES: 기본(default) 패키지
R_DISABLE_HTTPD: 도움말 설치 옵션
R_GSCMD: Useful libraries and programs
R_INSTALL_TAR: 윈도우즈 패키지
R_JAVA_LD_LIBRARY_PATH: Java support
R_JAVA_LD_LIBRARY_PATH: Java support
R_LIBS: Add-on packages
R_LIBS_SITE: 라이브러리 관리하기
R_LIBS_USER: 라이브러리 관리하기
R_PAPERSIZE: Making the manuals
R_PAPERSIZE: Running R
R_PAPERSIZE: Setting paper size
R_PAPERSIZE: Making manuals
R_PDFVIEWER: 브라우저 설정하기
R_RD4PDF: Making the manuals
R_RD4PDF: Making manuals
R_RD4PDF: LaTeX
R_SHELL: AIX
R_USER: Running R

T
TAR: 필수적인 프로그램과 라이브러리
TAR_OPTIONS: 소스(source)를 얻은 뒤 압축을 푸는 방법
TAR_OPTIONS: 소스파일 얻기
TEMP: Running R
TMP: Running R
TMPDIR: 간단한 컴파일하기(compilation)
TMPDIR: 코어 파일들을 빌드하기
TMPDIR: Running R
TMPDIR: Running R
TMPDIR: 패키지 설치하기

Jump to:   B   C   D   F   J   L   O   P   R   T  

Footnotes

(1)

예를 들어, GNU tar 버전 1.15 이상 또는 ‘libarchive’(OS 10.[67]에 사용된 것처럼) 또는 ‘Heirloom Toolchest’ 배포

(2)

어떤 서브버전 클라이언트들에 대해서는 ‘http:’로 나타날 수 있으나, 지속적인 리디렉션이 요구됩니다.

(3)

여기서는 lib64보다 lib을 기본 64-비트 라이브러리 디렉토리로 사용합니다.

(4)

Instructions on how to install the latest version are at https://www.ctan.org/tex-archive/fonts/inconsolata/.

(5)

on a Unix-alike, ‘inconsolata’ is omitted if not found by configure.

(6)

아마도 가능한 값들은 ‘i386’, ‘x64’, ‘32’, 그리고 ‘64’일 것입니다

(7)

여기에서는 주로 RedHat과 Fedora를 위주로 설명합니다

(8)

How to prepare such a directory is described in file src/extra/tzone/Notes in the R sources.

(9)

이전 명칭으로 EM64T.

(10)

Suitable distributions include Strawberry Perl, http://strawberryperl.com/ and ActivePerl, https://www.activestate.com/activeperl.

(11)

It seems that because of a security change in El Capitan earlier versions of the installer will fail there, but those as from R 3.2.2 are expected to work.

(12)

The installer currently puts links to R and Rscript in /usr/bin so these can be typed as commands. This will change to /usr/local/bin under El Capitan and later.

(13)

It is recommended to remove those in /usr/bin before upgrading in-place to El Capitan as it may be hard to remove them later.

(14)

만약 그렇지 않다면 그들은 빌드시에 제외될 것입니다

(15)

or by adding it in a file such as etc/i386/Makevars.site, which does not exist by default.

(16)

여러개의 버전들을 가지고 있는 ‘X/Open Portability Guide’

(17)

일부 시스템에서는 LC_ALL 또는 LC_MESSAGES를 ‘C’로 지정하는 것은 LANGUAGE를 사용하지 못하게 하기도 합니다

(18)

만약 불어에서 러시안으로 변경을 시도하는데 UTF-8 로케일이 빠져있다면, 영어로 된 메시지를 보게 될 가능성이 있습니다

(19)

영국권에서 사용되는 영어:

(20)

미국식

(21)

e.g. Bessel, beta and gamma functions.

(22)

including copying MkRules.dist to MkRule.localand selecting the architecture.

(23)

also known as IEEE 754

(24)

Note that C11 compilers need not be C99-compliant: R requires support for double complex and variable-length arrays which are optional in C11 but is mandatory in C99.

(25)

-std=c99 excludes POSIX functionality, but config.h will turn on all GNU extensions to include the POSIX functionality. The default mode for GCC 5 is -std=gnu11.

(26)

However, it is possible to break the default behaviour of glibc by re-specifying the gconv modules to be loaded.

(27)

특별히 헤더의 C99 기능 wchar.h and wctype.h, types wctans_t and mbstate_t and functions mbrtowc,mbstowcs, wcrtomb, wcscoll,wcstombs,wctrans, wctype, and iswctype.

(28)

most often distributed as part of xz: possible names in Linux distributions include xz-devel/xz-libs and liblzma-dev.

(29)

and not PCRE2, which started at version 10.0. PCRE must be built with UTF-8 support (not the default) and support for Unicode properties is assumed by some R packages. Only the first is tested by configure, but both can be checked at run-time by calling pcre_config(). JIT support is desirable for the best performance.

(30)

for example to specify static linking with a build which has both shared and static libraries.

(31)

Such as GNU tar 1.15 or later, bsdtar (from https://github.com/libarchive/libarchive/, as used by FreeBSD and OS X 10.6 and later) or tar from the Heirloom Toolchest (http://heirloom.sourceforge.net/tools.html).

(32)

texi2dvi is normally a shell script. Some versions (including that from texinfo 5.2) need to be run under bash rather than a Bourne shell.

(33)

If necessary the path to pkg-config can be specified by setting PKGCONF in config.site, on the configure command line or in the environment.

(34)

also known as ttf-mscorefonts-installer in the Debian/Ubuntu world: see also https://en.wikipedia.org/wiki/Core_fonts_for_the_Web.

(35)

ttf-liberation in Debian/Ubuntu.

(36)

and ‘i686’ for earlier versions.

(37)

and perhaps others

(38)

We believe that versions 3.4.0 to 3.10.1 are compatible.

(39)

On HP-UX fort77 is the POSIX g77.

(40)

as well as its equivalence to the Rcomplexstructure defined in R_ext/Complex.h.

(41)

만약 X11()이 특히 큰 폰트 사이즈들의 실종을 리포트 하는 것을 알아낸다면, 이는 거의 대부분 여러분이 X11 폰트들의 100dpi 버정들을 설치하지 않았고 크기를 조절할 수 있는 폰트들 을 사용하지 않고 있는 것입니다.

(42)

It may be necessary to install later versions of software such as libcurl.

(43)

These days that is defined by Apple’s implementation of clang, so it is strongly recommended to use that.

(44)

This is a tarball which needs to be unpacked in the Terminal by e.g. sudo tar -zxf gfortran-4.8.2-darwin13.tar.bz2 -C /. It does not run on Core 2 Duo Macs.

(45)

It is reported that for some non-Apple toolchains CPPFLAGS needed to contain -D__ACCELERATE__.

(46)

e.g. Java For OS X 2015-001 from https://support.apple.com/kb/DL1572.

(47)

including gcc for Sparc from Oracle.

(48)

Windows DLLs need to have all links resolved at build time and so cannot resolve against R.bin.

(49)

For example, the Cygwin version of make 3.81 fails to work correctly.

(50)

for R 3.0.0 and later.

(51)

such as sort, find and perhaps make.

(52)

these flags apply to the compilers: some of the tools use different flags. 32-bit builds are the default.