This document provides instructions for installing and administering R on various operating systems. It covers obtaining R sources, installing on Unix-like systems, Windows, and OS X. It also discusses installing add-on packages, internationalization, choosing 32- vs 64-bit builds, and using the standalone Rmath library. The document is intended as a manual for installing and managing R versions 3.0.2 or higher.
This document outlines an internal Barco training on embedded Linux for engineering. It covers topics like cross-compilation toolchains, the Linux boot process, bootloaders, and the Linux kernel, including building a kernel, device trees, device drivers, and a real-life Barco example. Hands-on sections provide examples for exploring U-Boot, replacing a bootloader, building a kernel, and more.
Faronics Deep Freeze Enterprise User GuideFaronics
This document is the user guide for Deep Freeze Enterprise, which allows administrators to centrally manage and deploy software configurations on multiple computers. It describes how to install and configure Deep Freeze Configuration Administrator and Enterprise Console to customize settings like frozen drives, ThawSpace locations, scheduled tasks and more. The Enterprise Console then enables monitoring and managing Deep Freeze across a network from a single interface.
This document is a manual for Cinelerra CV, an open source non-linear video editor for Linux. It discusses installing and configuring Cinelerra CV, including hardware and software requirements and instructions for different Linux distributions. It also covers compiling Cinelerra from source, configuring audio and video drivers, and playback settings. The manual is distributed under the GNU GPL license.
This document is the user guide for Deep Freeze Mac. It provides instructions on installing, configuring, and using Deep Freeze Mac to restore Mac computers to a predefined state after each restart or login. It covers installing Deep Freeze locally or remotely via Apple Remote Desktop, configuring freeze/thaw settings, creating maintenance schedules, and uninstalling Deep Freeze. The guide also describes the Deep Freeze Remote and Deep Freeze Tasks features for remotely managing multiple Macs.
This document is the user manual for Oracle VM VirtualBox version 5.0.2. It provides information on installing VirtualBox on various host operating systems like Windows, Mac OS X and Linux. It also covers configuring virtual machines by setting options for hardware, storage, network, audio and more. Additionally, it describes using features like snapshots, cloning VMs, importing/exporting and Guest Additions to enhance VM functionality.
This document is the user manual for Oracle VM VirtualBox version 4.3.18. It provides information on installing VirtualBox on various host operating systems, creating and configuring virtual machines, installing Guest Additions to enhance the guest experience, and managing virtual storage and disk images. The manual covers topics such as supported host/guest systems, emulated hardware, general and system settings for VMs, shared folders, USB and network configuration, and virtual storage controllers and disk image formats.
This document provides an overview of a Linux system administration training course. It covers 28 chapters on topics like the Unix command line, file management, processes, filesystems, backups and more. Each chapter includes detailed explanations, examples and exercises to help system administrators effectively manage and maintain Linux systems.
Red Hat Enterprise Linux 4 System Administration Guide provides documentation on installation, configuration, and administration of Red Hat Enterprise Linux 4 systems. Key topics covered include kickstart installations, Logical Volume Manager (LVM), Software RAID, package management, network configuration, firewall configuration, NFS, Samba, DHCP, Apache, authentication, console access, users/groups, printers, and more. The guide is intended to help system administrators manage and maintain Red Hat Enterprise Linux servers.
This document provides information for developers wishing to develop applications using the MySQL Cluster storage engine APIs. It describes the low-level C++ NDB API, the C MGM API for controlling management servers, and the MySQL Cluster Connector for Java. The guide includes concepts, terminology, class and function references, examples, common problems and tips for using these APIs to develop applications. It also contains information about NDB internals that may be of interest to developers working with MySQL Cluster.
This document provides copyright information and details about Parallels Plesk Panel. It covers topics such as logging in, customizing the control panel interface, viewing hosting package details, simplifying website setup, hosting websites, deploying databases, installing applications, and securing websites. The document contains instructions for tasks like creating hosting accounts, publishing websites, configuring ASP.NET, and setting up SSL encryption.
This document provides documentation on how to use the Zend Framework 2. It covers topics such as installation, getting started with a skeleton application, routing, controllers, models, forms, actions, testing, events, configuration, navigation, and pagination. The document contains numerous code examples and step-by-step instructions for creating a sample album application using Zend Framework 2.
Getting Started with OpenStack and VMware vSphereEMC
VMware vSphere® is the industry’s leading and most reliable virtualization and cloud computing platform. vSphere simplifies IT by separating applications and operating systems (OSs) from the underlying hardware. OpenStack is an open and scalable cloud management platform (CMP) for building public and private clouds. It is a system designed to provide infrastructure as a service (IaaS) on top of a diverse collection of hardware and software infrastructure technologies.
vSphere has a long history of being a stable and resilient platform that offers many benefits to host cloud infrastructures. As an enterprise-class hypervisor with production-level features and support, vSphere is an excellent solution for enhancing OpenStack.
This document provides a copyright notice and table of contents for the Parallels Plesk Panel user guide. It details that the guide contains information on topics such as getting started with Plesk Panel, setting up websites and email, managing user accounts and hosting accounts, and configuring technologies like ASP.NET, PHP, and databases. The copyright is held by Parallels, Inc. and distribution of the work without permission is prohibited.
This document provides a summary of the key information about IBM Midrange System Storage hardware and configuration. It discusses IBM storage server models like the DS4700, DS5100 and DS5300. It also covers expansion enclosures, disk drives, interfaces and the DS Storage Manager software. The document is intended to help with planning, setup and configuration of IBM Midrange System Storage solutions.
The document is the Flask documentation, which provides information on using the Flask web framework in Python. It covers topics like installation, basic usage, routing, templates, testing, configuration, debugging errors, and signals. The documentation contains tutorials, guides, and reference material to help developers build web applications with Flask.
This document provides a 3-sentence summary of a user manual for the BOSS GNU/Linux operating system version 3.0. It includes sections on installing BOSS, using the GNOME desktop environment, customizing settings, networking, hardware configuration, applications like OpenOffice and multimedia tools, and accessibility features. The manual is a comprehensive guide for new users to get started with the key functions and customize their experience of the BOSS GNU/Linux distribution.
Red Hat Enterprise Linux 4: Introduction to System Administration is a documentation guide that covers:
1. The philosophy of system administration including automating tasks, documenting processes, communicating with users, understanding resources and security.
2. Resource monitoring on Linux systems using tools like free, top, vmstat and the Sysstat suite to monitor CPU, memory, storage and bandwidth usage.
3. Managing bandwidth and processing power on Linux including monitoring techniques in Red Hat Enterprise Linux and improving performance by addressing bottlenecks.
This document provides an overview of SystemTap, an instrumentation tool for the Linux kernel. It describes SystemTap's architecture and technical details, how to install it, and examples of using it to analyze performance and functional problems in the kernel. Key topics covered include SystemTap's probing capabilities, scripting language, common use cases like call graph generation and function timing, and debugging techniques for issues like TCP/IP, page faults, and NFS.
This document provides an overview and guide for planning and using the IBM TS7500 Virtualization Engine. The TS7500 consolidates backup storage and improves efficiency through data deduplication and compression. It introduces virtual tape support through its software architecture. The guide covers TS7500 components, disk architecture using RAID, and backup architectures like disk-to-disk-to-tape. It aims to help users understand and make the best use of the TS7500's virtualization capabilities.
This document provides instructions for installing MySQL Query Browser on Windows, Linux, and Mac OS X systems. It describes downloading installation packages, running installers, and installing from source code. The document also covers uninstalling MySQL Query Browser and notes version requirements and third-party software dependencies.
This document provides an overview of Docker containerization and includes tutorials on Docker concepts and commands. Chapter 1 discusses why Docker is useful, the difference between machines, images and containers, and includes tutorials on installing Docker, basic commands like creating machines, images and containers, and using Docker for integration testing with Maven. Subsequent chapters provide tutorials on installing Docker on Ubuntu, Docker kernel requirements, Docker "hello world" examples using basic images and building Java apps, Docker as a service, and the Docker build process.
This document provides documentation on Odoo development including module development, debugging, quality assurance testing, user documentation, Git and GitHub usage, continuous integration, Odoo administration, continuous delivery, integrated development environments, and remote development. It covers a wide range of topics for developing and maintaining Odoo modules throughout the entire development lifecycle.
The document provides information about implementing the IBM Storwize V3700 storage system. It includes an overview of the hardware components and features of the Storwize V3700. The document also covers initial configuration tasks such as planning the hardware and network setup, performing the first-time setup, and configuring features like expansion enclosures, alerts, and inventory. It provides guidance on using the graphical and command-line interfaces to manage and monitor the storage system.
Implementing the
IBM Storwize V3700
Easily manage and deploy systems
with embedded GUI
Experience rapid and flexible
provisioning
Protect data with remote
mirroring
This document provides instructions for installing and configuring OpenStack. It describes the OpenStack architecture and services, how to set up the necessary infrastructure components like networking, databases and message queues, and how to deploy the core OpenStack services. It also provides steps for launching a test instance and interacting with basic OpenStack features like networks, block storage and orchestration.
This document provides an overview of Linux performance and tuning guidelines. It discusses Linux processes, memory, file systems, I/O subsystems, networking, and performance monitoring tools. The document is intended to help readers understand how Linux works and how to optimize system performance.
This document provides an overview and instructions for installing, configuring, securing and using Hudson, an open source continuous integration server. It covers downloading and installing Hudson on various operating systems like Ubuntu, Red Hat and OpenSUSE. It also describes configuring global settings, plugins, projects and jobs in Hudson as well as securing Hudson through authentication and authorization. The document is intended as a manual for getting started with and managing Hudson.
This document provides an overview of data import and export capabilities in R. It discusses importing spreadsheet-like data, data from other statistical systems, relational databases, binary files, and network interfaces. It also covers exporting to text files, XML, connections, and reading Excel spreadsheets. The document is intended to help users efficiently import data for analysis in R and export results for reporting.
This document provides an introduction to the IBM GDPS family of offerings. It discusses business resilience requirements and how GDPS supports IT resilience through technologies like disk replication and automation. The document covers GDPS/PPRC, which uses IBM's Peer-to-Peer Remote Copy (PPRC) technology for continuous availability and disaster recovery. It also addresses infrastructure planning considerations for GDPS implementations.
The paperback version is available on lulu.com there http://goo.gl/fraa8o
This is the first volume of the postgresql database administration book. The book covers the steps for installing, configuring and administering a PostgreSQL 9.3 on Linux debian. The book covers the logical and physical aspect of PostgreSQL. Two chapters are dedicated to the backup/restore topic.
This document is the user manual for Oracle VM VirtualBox version 7.0.0. It contains instructions for installing VirtualBox on various host operating systems, creating and configuring virtual machines, and using features like snapshots, cloning, importing/exporting in OVF format, and integration with Oracle Cloud Infrastructure. The first chapter covers getting started tasks like installation, creating a first VM, basic operations within the VirtualBox Manager UI, and an overview of additional features. Subsequent chapters provide more details on installation, supported guest OSes, VM configuration settings, and other topics.
This document is the user manual for HDClone, a software program for copying, backing up, migrating, and rescuing hard disks. It provides instructions on installing HDClone, supported hardware, and using the program. Key features covered include copying disks while the system is running, creating disk images, and duplicating master system installations.
This document provides an administrator manual for Atoll version 3.1.0. It discusses installing and configuring Atoll and its components, setting up distributed calculation servers, managing licenses, and working with Atoll databases. The manual is divided into several sections covering topics such as supported technologies, installation, license management, database management, and more.
This document is a user guide for the LSI SAS2 Integrated RAID solution. It describes the benefits of the integrated RAID solution such as host interface support, metadata support, SMART support, and Fusion-MPT support. It also provides overviews of how mirrored volumes operate and their key features like resynchronization, hot swapping, hot spares, online capacity expansion, and more. The document includes steps for creating mirrored volumes, managing hot spare disks, and other administrative tasks.
This document is the user manual for VirtualBox version 4.1.2. It provides information on installing VirtualBox on various host operating systems like Windows, Mac OS X, Linux and Solaris. It also describes how to configure virtual machines by setting options for hardware, storage, audio, graphics and more. Additionally, it covers installing guest additions to optimize the guest experience and manage features like shared folders, 3D acceleration, and memory ballooning.
Ibm power vc version 1.2.3 introduction and configurationgagbada
This document provides an introduction and overview of IBM PowerVC version 1.2.3, including:
- A high-level overview of PowerVC and how it uses OpenStack for virtualization management on Power Systems.
- Details of new features and enhancements in PowerVC versions 1.2.2 and 1.2.3, such as improved image management, monitoring, storage support, and scaling.
- Planning guidance for installing and configuring PowerVC, including hardware and software requirements, host and partition management, storage access, and template design.
This document provides a quick reference guide for interoperability between components in IBM Flex System, including:
- Compatibility between chassis, switches, adapters, transceivers, power supplies, and racks
- Compatibility between compute nodes, expansion nodes, memory, storage, I/O adapters, and software
- Storage interoperability with unified NAS storage, FCoE, iSCSI, NPIV, and Fibre Channel
The guide covers the latest updates as of November 2013 and is intended to help ensure components work together seamlessly in a Flex System environment.
This document provides an overview and comparison of IBM tape library solutions for backing up IBM xSeries servers. It discusses factors to consider when selecting a tape library such as capacity, number of drives, and scalability. It also provides configuration details for backing up to tape libraries using Tivoli Storage Manager, VERITAS Backup Exec, and CA ARCserve. Recovery procedures using the backup software and Tivoli Disaster Recovery Manager are also covered.
Kali Linux Revealed - Mastering the Penetration Testing (Raphaël Hertzog, Jim...SomiMukerjee
This document provides an overview and introduction to the Kali Linux operating system. It discusses Kali Linux's history and relationship to Debian Linux. The document outlines Kali Linux's main features such as being a live system, using a customized Linux kernel, and its focus on penetration testing tools. It also covers Kali Linux's policies around disabling network services by default and curating included applications. The table of contents previews that the document will cover topics like getting started with Kali Linux, Linux fundamentals, and installing Kali Linux.
This document provides an overview of R's internal structures and programming concepts. It discusses topics such as SEXPs (the basic R data structure), environments and variable lookup, attributes, contexts, argument evaluation, autoprinting, serialization formats, encodings, warnings and errors, S4 objects, memory allocation, and graphics devices. The document is intended for developers and advanced users who want to understand how R works under the hood.
Amazon Aurora 클러스터를 초당 수백만 건의 쓰기 트랜잭션으로 확장하고 페타바이트 규모의 데이터를 관리할 수 있으며, 사용자 지정 애플리케이션 로직을 생성하거나 여러 데이터베이스를 관리할 필요 없이 Aurora에서 관계형 데이터베이스 워크로드를 단일 Aurora 라이터 인스턴스의 한도 이상으로 확장할 수 있는 Amazon Aurora Limitless Database를 소개합니다.
❻❸❼⓿❽❻❷⓿⓿❼ SATTA MATKA DPBOSS KALYAN MATKA RESULTS KALYAN CHART KALYAN MATKA MATKA RESULT KALYAN MATKA TIPS SATTA MATKA MATKA COM MATKA PANA JODI TODAY
How We Added Replication to QuestDB - JonTheBeachjavier ramirez
Building a database that can beat industry benchmarks is hard work, and we had to use every trick in the book to keep as close to the hardware as possible. In doing so, we initially decided QuestDB would scale only vertically, on a single instance.
A few years later, data replication —for horizontally scaling reads and for high availability— became one of the most demanded features, especially for enterprise and cloud environments. So, we rolled up our sleeves and made it happen.
Today, QuestDB supports an unbounded number of geographically distributed read-replicas without slowing down reads on the primary node, which can ingest data at over 4 million rows per second.
In this talk, I will tell you about the technical decisions we made, and their trade offs. You'll learn how we had to revamp the whole ingestion layer, and how we actually made the primary faster than before when we added multi-threaded Write Ahead Logs to deal with data replication. I'll also discuss how we are leveraging object storage as a central part of the process. And of course, I'll show you a live demo of high-performance multi-region replication in action.
Applications of Data Science in Various IndustriesIABAC
The wide-ranging applications of data science across industries.
From healthcare to finance, data science drives innovation and efficiency by transforming raw data into actionable insights.
Learn how data science enhances decision-making, boosts productivity, and fosters new advancements in technology and business. Explore real-world examples of data science applications today.
❻❸❼⓿❽❻❷⓿⓿❼ SATTA MATKA DPBOSS KALYAN MATKA RESULTS KALYAN CHART KALYAN MATKA MATKA RESULT KALYAN MATKA TIPS SATTA MATKA MATKA COM MATKA PANA JODI TODAY
Cómo hemos implementado semántica de "Exactly Once" en nuestra base de datos ...javier ramirez
Los sistemas distribuidos son difíciles. Los sistemas distribuidos de alto rendimiento, más. Latencias de red, mensajes sin confirmación de recibo, reinicios de servidores, fallos de hardware, bugs en el software, releases problemáticas, timeouts... hay un montón de motivos por los que es muy difícil saber si un mensaje que has enviado se ha recibido y procesado correctamente en destino. Así que para asegurar mandas el mensaje otra vez.. y otra... y cruzas los dedos para que el sistema del otro lado tenga tolerancia a los duplicados.
QuestDB es una base de datos open source diseñada para alto rendimiento. Nos queríamos asegurar de poder ofrecer garantías de "exactly once", deduplicando mensajes en tiempo de ingestión. En esta charla, te cuento cómo diseñamos e implementamos la palabra clave DEDUP en QuestDB, permitiendo deduplicar y además permitiendo Upserts en datos en tiempo real, añadiendo solo un 8% de tiempo de proceso, incluso en flujos con millones de inserciones por segundo.
Además, explicaré nuestra arquitectura de log de escrituras (WAL) paralelo y multithread. Por supuesto, todo esto te lo cuento con demos, para que veas cómo funciona en la práctica.
2. This manual is for R, version 3.0.2 (2013-09-25).
Copyright c 2001–2013 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 an-
other 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.
6. Chapter 1: Obtaining R 1
1 Obtaining R
Sources, binaries and documentation for R can be obtained via CRAN, the “Comprehensive R
Archive Network” whose current members are listed at http://CRAN.R-project.org/mirrors.
html.
1.1 Getting and unpacking the sources
The simplest way is to download the most recent R-x.y.z.tar.gz file, and unpack it with
tar -xf R-x.y.z.tar.gz
on systems that have a suitable1
tar installed. On other systems you need to have the gzip
program installed, when you can use
gzip -dc R-x.y.z.tar.gz | tar -xf -
The pathname of the directory into which the sources are unpacked should not contain spaces,
as most make programs (and specifically GNU make) do not expect spaces.
If you want the build to be usable by a group of users, set umask before unpacking so that
the files will be readable by the target group (e.g., umask 022 to be usable by all users). Keep
this setting of umask whilst building and installing.
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. (These options can also be set
in the TAR_OPTIONS environment variable: if more than one option is included they should be
separated by spaces.)
1.2 Getting patched and development versions
A patched version of the current release, ‘r-patched’, and the current development version,
‘r-devel’, are available as daily tarballs and via access to the R Subversion repository. (For
the two weeks prior to the release of a minor (3.x.0) version, ‘r-patched’ tarballs may refer to
beta/release candidates of the upcoming release, the patched version of the current release being
available via Subversion.)
The tarballs are available from ftp://ftp.stat.math.ethz.ch/pub/Software/R/. Down-
load 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 Using Subversion and rsync
Sources are also available via https://svn.R-project.org/R/, the R Subversion repository.
If you have a Subversion client (see http://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
to check out ‘r-devel’ into directory path (which will be created if necessary).
The alpha, beta and RC versions of an upcoming x.y.0 release are available from
‘https://svn.r-project.org/R/branches/R-x-y-branch/’ in the four-week period prior to
the release.
1
e.g. GNU tar version 1.15 or later, or that from the ‘libarchive’ (as used on OS 10.6 and later) or ‘Heirloom
Toolchest’ distributions.
7. Chapter 1: Obtaining R 2
Note that ‘https:’ is required2
, and that the SSL certificate for the Subversion server of the
R project should be recognized as from a trusted source.
Note that retrieving the sources by e.g. wget -r or svn export from that URL will not work
(and will give a error early in the make process): the Subversion information is needed to build
R.
The Subversion repository does not contain the current sources for the recommended pack-
ages, which can be obtained by rsync or downloaded from CRAN. To use rsync to install the
appropriate sources for the recommended packages, run ./tools/rsync-recommended from the
top-level directory of the R sources.
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 ‘http://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
http://CRAN.R-project.org/src/contrib/dir
./tools/link-recommended
2
for some Subversion clients ‘http:’ may appear to work, but requires continual redirection.
8. Chapter 2: Installing R under Unix-alikes 3
2 Installing R under Unix-alikes
R will configure and build under most common Unix and Unix-alike platforms including
‘cpu-*-linux-gnu’ for the ‘alpha’, ‘arm’, ‘hppa’, ‘ix86’, ‘ia64’, ‘m68k’, ‘mips’, ‘mipsel’,
‘powerpc’, ‘s390’, ‘sparc’, and ‘x86_64’ CPUs, ‘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*’
In addition, binary distributions are available for some common Linux distributions and for
OS X (formerly Mac OS). See the FAQ for current details. These are installed in platform-specific
ways, so for the rest of this chapter we consider only building from the sources.
2.1 Simple compilation
First review the essential and useful tools and libraries in Appendix A [Essential and useful other
programs under a Unix-alike], page 33, and install those you want or need. Ensure that the
environment variable TMPDIR is either unset (and /tmp exists and can be written in and scripts
can be executed from) or points to a valid temporary directory (one from which execution of
scripts is allowed) whose path does not contain spaces.1
Choose a directory to install the R tree (R is not just a binary, but has additional data
sets, help files, font metrics etc). Let us call this place R HOME. Untar the source code. This
should create directories src, doc, and several more under a top-level directory: change to that
top-level directory (At this point North American readers should consult Section B.3.1 [Setting
paper size], page 43.) Issue the following commands:
./configure
make
(See Section B.5 [Using make], page 44 if your make is not called ‘make’.) Users of Debian-based
64-bit systems2
may need
./configure LIBnn=lib
make
Then check the built system works correctly by
make check
Failures are not necessarily problems as they might be caused by missing functionality,3
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 Chapter 5 [Running R], page 18).
More comprehensive testing can be done by
make check-devel
or
make check-all
see file tests/README.
If the command configure and make commands execute successfully, a shell-script front-end
called R will be created and copied to R_HOME/bin. You can link or copy this script to a place
where users can invoke it, for example to /usr/local/bin/R. You could also copy the man
1
Most aspects will work with paths containing spaces, but external software used by R, e.g. texi2dvi version
4.8, may not.
2
which use lib rather than lib64 for their primary 64-bit library directories.
3
for example, if you configured R with --without-recommended.
9. Chapter 2: Installing R under Unix-alikes 4
page R.1 to a place where your man reader finds it, such as /usr/local/man/man1. If you want
to install the complete R tree to, e.g., /usr/local/lib/R, see Section 2.4 [Installation], page 6.
Note: you do not need to install R: you can run it from where it was built.
You do not necessarily have to build R in the top-level source directory (say, TOP_SRCDIR).
To build in BUILDDIR, run
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.)
Now rehash if necessary, type R, and read the R manuals and the R FAQ (files FAQ or
doc/manual/R-FAQ.html, or http://CRAN.R-project.org/doc/FAQ/R-FAQ.html which al-
ways has the version for the latest release of R).
2.2 Help options
By default HTML help pages are created when needed rather than being built at install time.
If you need to disable the server and want HTML help, there is the option to build HTML pages
when packages are installed (including those installed with R). This is enabled by the configure
option --enable-prebuilt-html. Whether R CMD INSTALL (and hence install.packages) pre-
builds HTML pages is determined by looking at the R installation and is reported by R CMD
INSTALL --help: it can be overridden by specifying one of the INSTALL options --html or
--no-html.
The server is disabled by setting the environment variable R_DISABLE_HTTPD to a non-
empty value, either before R is started or within the R session before HTML help (includ-
ing help.start) is used. It is also possible that system security measures will prevent the
server from being started, for example if the loopback interface has been disabled. See
?tools::startDynamicHelp for more details.
2.3 Making the manuals
There is a set of manuals that can be built from the sources,
‘fullrefman’
Printed versions of all the help pages for base and recommended packages (over 3300
pages).
‘refman’ Printed versions of the help pages for selected base packages (over 1900 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”.
To make these (with ‘fullrefman’ rather than ‘refman’), use
make pdf to create PDF versions
make info to create info files (not ‘refman’ nor ‘fullrefman’).
10. Chapter 2: Installing R under Unix-alikes 5
You will not be able to build any of these unless you have makeinfo version 4.7 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).
The PDF versions can be viewed using any recent PDF viewer: they have hyperlinks that
can be followed. The info files are suitable for reading online with Emacs or the standalone GNU
info program. The PDF versions will be created using the paper size selected at configuration
(default ISO a4): this can be overridden by setting R_PAPERSIZE on the make command line,
or setting R_PAPERSIZE in the environment and using make -e. (If re-making the manuals for a
different paper size, you should first delete the file doc/manual/version.texi. The usual value
for North America would be ‘letter’.)
There are some issues with making the PDF reference manual, fullrefman.pdf or
refman.pdf. The help files contain both ISO Latin1 characters (e.g. in text.Rd) and upright
quotes, neither of which are contained in the standard LATEX Computer Modern fonts. We
have provided four alternatives:
times (The default.) Using standard PostScript fonts, Times Roman, Helvetica and
Courier. This works well both for on-screen viewing and for printing. One dis-
advantage 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 inconsolata or bera installed.)
Note that in most LATEX installations this will not actually use the standard fonts
for PDF, but rather embed the URW clones NimbusRom, NimbusSans and (for
Courier, if used) NimbusMon.
lm Using the Latin Modern fonts. These are not often installed as part of a TEX
distribution, but can obtained from http://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 http://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 A package to use composites of Computer Modern fonts. This works well most of
the time, and its PDF is more readable on-screen than the previous two options.
There are three fonts for which it will need to use bitmapped fonts, tctt0900.600pk,
tctt1000.600pk and tcrm1000.600pk. Unfortunately, if those files are not avail-
able, Acrobat Reader will substitute completely incorrect glyphs so you need to
examine the logs carefully.
The default can be overridden by setting the environment variable 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 usual4
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.
4
on a Unix-alike, ‘incosolata’ is omitted if not found by configure.
11. Chapter 2: Installing R under Unix-alikes 6
2.4 Installation
To ensure that the installed tree is usable by the right group of users, set umask appropriately
(perhaps to ‘022’) before unpacking the sources and throughout the build process.
After
./configure
make
make check
(or, when building outside the source, TOP_SRCDIR/configure, etc) have been completed suc-
cessfully, you can install the complete R tree to your system by typing
make install
A parallel make can be used (but run make before make install): however it is not recommended
for make check as the output from different checks will interleaved and hard to decipher.
This will install to the following directories:
prefix/bin or bindir
the front-end shell script and other scripts and executables
prefix/man/man1 or mandir/man1
the man page
prefix/LIBnn/R or libdir/R
all the rest (libraries, on-line help system, . . .). Here LIBnn is usually ‘lib’, but may
be ‘lib64’ on some 64-bit Linux systems. This is known as the R home directory.
where prefix is determined during configuration (typically /usr/local) and can be set by run-
ning configure with the option --prefix, as in
./configure --prefix=/where/you/want/R/to/go
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. You can install into another directory tree by using
make prefix=/path/to/here install
at least with GNU make (and current Solaris and FreeBSD make, but not some older Unix makes).
More precise control is available at configure time via options: see configure --help for
details. (However, most of the ‘Fine tuning of the installation directories’ options are not used
by R.)
Configure options --bindir and --mandir are supported and govern where a copy of the R
script and the man page are installed.
The configure option --libdir controls where the main R files are installed: the default
is ‘eprefix/LIBnn’, where eprefix is the prefix used for installing architecture-dependent files,
defaults to prefix, and can be set via the configure option --exec-prefix.
Each of bindir, mandir and libdir can also be specified on the make install command
line (at least for GNU make).
The configure or make variables rdocdir and rsharedir can be used to install the system-
independent doc and share directories to somewhere other than libdir. The C header files
can be installed to the value of rincludedir: note that as the headers are not installed into a
subdirectory you probably want something like rincludedir=/usr/local/include/R-3.0.2.
If you want the R home to be something other than libdir/R, use rhome: for example
make install rhome=/usr/local/lib64/R-3.0.2
will use a version-specific R home on a non-Debian Linux 64-bit system.
If you have made R as a shared/dynamic library you can install it in your system’s library
directory by
12. Chapter 2: Installing R under Unix-alikes 7
make prefix=/path/to/here install-libR
where prefix is optional, and libdir will give more precise control.
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.
Note that installing R into a directory whose path contains spaces is not supported, and at
least some aspects (such as installing source packages) will not work.
To install info and PDF versions of the manuals, use one or both of
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.)
More precise control is possible. For info, the setting used is that of infodir (default
prefix/info, set by configure option --infodir). The PDF files are installed into the R
doc tree, set by the make variable rdocdir.
A staged installation is possible, that it is installing R into a temporary directory in order
to move the installed tree to its final destination. In this case prefix (and so on) should reflect
the final destination, and DESTDIR should be used: see http://www.gnu.org/prep/standards/
html_node/DESTDIR.html.
You can optionally install the run-time tests that are part of make check-all by
make install-tests
which populates a tests directory in the installation.
2.5 Uninstallation
You can uninstall R by
make uninstall
optionally specifying prefix etc in the same way as specified for installation.
This will also uninstall any installed manuals. There are specific targets to uninstall info and
PDF manuals in file doc/manual/Makefile.
Target uninstall-tests will uninstall any installed tests, as well as removing the directory
tests containing the test results.
2.6 Sub-architectures
Some platforms can support closely related builds of R which can share all but the executables
and dynamic objects. Examples include builds under Linux and Solaris for different CPUs or
32- and 64-bit builds.
R supports the idea of architecture-specific builds, specified by adding ‘r_arch=name’ to the
configure line. Here name can be anything non-empty, and is used to name subdirectories of
lib, etc, include and the package libs subdirectories. Example names from other software
are the use of sparcv9 on Sparc Solaris and 32 by gcc on ‘x86_64’ Linux.
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 63Mb, and
adding a 32-bit build added 6Mb. If you have installed multiple builds you can select which
build to run by
13. Chapter 2: Installing R under Unix-alikes 8
R --arch=name
and just running ‘R’ will run the last build that was installed.
R CMD INSTALL will detect if more than one build is installed and try to install packages with
the appropriate library objects for each. This will not be done if the package has an executable
configure script or a src/Makefile file. In such cases you can install for extra builds by
R --arch=name CMD INSTALL --libs-only pkg1 pkg2 ...
If you want to mix sub-architectures compiled on different platforms (for example ‘x86_64’
Linux and ‘i686’ Linux), it is wise to use explicit names for each, and you may also need to set
libdir to ensure that they install into the same place.
When sub-architectures are used the version of Rscript in e.g. /usr/bin will be the last
installed, but architecture-specific versions will be available in e.g. /usr/lib64/R/bin/exec${R_
ARCH}. Normally all installed architectures will run on the platform so the architecture of
Rscript itself does not matter. The executable Rscript will run the R script, and at that time
the setting of the R_ARCH environment variable determines the architecture which is run.
When running post-install tests with sub-architectures, use
R --arch=name CMD make check[-devel|all]
to select a sub-architecture to check.
Sub-architectures are also used on Windows, but by selecting executables within the ap-
propriate bin directory, R_HOME/bin/i386 or R_HOME/bin/x64. For backwards compatibility
with R < 2.12.0, there are executables R_HOME/bin/R.exe or R_HOME/bin/Rscript.exe: these
will run an executable from one of the subdirectories, which one being taken first from the
R_ARCH environment variable, then from the --arch command-line option5
and finally from the
installation default (which is 32-bit for a combined 32/64 bit R installation).
2.6.1 Multilib
On Linux6
, there is an alternative mechanism for mixing 32-bit and 64-bit libraries known as
multilib. If a Linux distribution supports multilib, then parallel builds of R may be installed in
the sub-directories lib (32-bit) and lib64 (64-bit). The build to be run may then be selected
using the setarch command. For example, a 32-bit build may be run by
setarch i686 R
The setarch command is only operational if both 32-bit and 64-bit builds are installed. If
there is only one installation of R, then this will always be run regardless of the architecture
specified by the setarch command.
There can be problems with installing packages on the non-native architecture. It is a good
idea to run e.g. setarch i686 R for sessions in which packages are to be installed, even if that
is the only version of R installed (since this tells the package installation code the architecture
needed).
At present there is a potential problem with packages using Java, as the post-install for a
‘i386’ RPM on ‘x86_64’ Linux reconfigures Java and will find the ‘x86_64’ Java. If you know
where a 32-bit Java is installed you may be able to run (as root)
export JAVA_HOME=<path to jre directory of 32-bit Java>
setarch i686 R CMD javareconf
to get a suitable setting.
When this mechanism is used, the version of Rscript in e.g. /usr/bin will be the last
installed, but an architecture-specific version will be available in e.g. /usr/lib64/R/bin. Nor-
mally all installed architectures will run on the platform so the architecture of Rscript does
not matter.
5
with possible values ‘i386’, ‘x64’, ‘32’ and ‘64’.
6
mainly on RedHat and Fedora, whose layout is described here.
14. Chapter 2: Installing R under Unix-alikes 9
2.7 Other Options
There are many other installation options, most of which are listed by configure --help.
Almost all of those not listed elsewhere in this manual are either standard autoconf options
not relevant to R or intended for specialist uses by the R developers.
One that may be useful when working on R itself is the option --disable-byte-compiled-
packages, which ensures that the base and recommended packages are lazyloaded but not
byte-compiled. (Alternatively the (make or environment) variable R_NO_BASE_COMPILE can be
set to a non-empty value for the duration of the build.)
2.8 Testing an Installation
Full testing is possible only if the test files have been installed with
make install-tests
which populates a tests directory in the installation.
If this has been done, two testing routes are available. The first is to move to the home
directory of the R installation (as given by R.home()) and run
cd tests
## followed by one of
../bin/R CMD make check
../bin/R CMD make check-devel
../bin/R CMD make check-all
and other useful targets are test-BasePackages and test-Recommended to the run tests of the
standard and recommended packages (if installed) respectively.
This re-runs all the tests relevant to the installed R (including for example code in the package
vignettes), but not for example the ones checking the example code in the manuals nor making
the standalone Rmath library. This can occasionally be useful when the operating environment
has been changed, for example by OS updates or by substituting the BLAS (see Section A.3.1.5
[Shared BLAS], page 39).
Alternatively, the installed R can be run, preferably with --vanilla. Then
Sys.setenv(LC_COLLATE = "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 slightly fewer tests than the first approach: in particular they do not
test Internet access.
These tests work best if diff (in Rtools*.exe for Windows users) is in the path.
It is possible to test the installed packages (but not the package-specific tests) by
testInstalledPackages even if make install-tests was not run.
Note that the results may depend on the language set for times and messages: for maximal
similarity to reference results you may want to try setting
LANGUAGE=en LC_TIME=C LC_COLLATE=C
but use a UTF-8 or Latin-1 locale.
15. Chapter 3: Installing R under Windows 10
3 Installing R under Windows
The bin/windows directory of a CRAN site contains binaries for a base distribution and a large
number of add-on packages from CRAN to run on Windows XP or later on ix86 CPUs (including
AMD64/Intel64 cpus and Windows x64).
Your file system must allow long file names (as is likely except perhaps for some network-
mounted systems).
Installation is via the installer R-3.0.2-win.exe. Just double-click on the icon and follow
the instructions. When installing on a 64-bit version of Windows the options will include 32- or
64-bit versions of R (and the default is to install both). You can uninstall R from the Control
Panel.
Note that you will be asked to choose a language for installation, and that choice applies to
both installation and un-installation but not to running R itself.
See the R Windows FAQ for more details on the binary installer.
3.1 Building from source
R can be built as either a 32-bit or 64-bit application on Windows: to build the 64-bit application
you need a 64-bit edition of Windows: such an OS can also be used to build 32-bit R.
The standard installer combines 32-bit and 64-bit builds into a single executable which can
then be installed into the same location and share all the files except the .exe and .dll files
and some configuration files in the etc directory.
3.1.1 Getting the tools
If you want to build R from the sources, you will first need to collect, install and test an extensive
set of tools. See Appendix D [The Windows toolset], page 62 (and perhaps updates in http://
CRAN.R-project.org/bin/windows/Rtools/) for details.
The Rtools*.exe executable installer described in Appendix D [The Windows toolset],
page 62 also includes some source files in addition to the R source as noted below. You should
run it first, to obtain a working tar and other necessities. Choose a “Full installation”, and
install the extra files into your intended R source directory, e.g. C:/R. The directory name should
not contain spaces. We will call this directory R_HOME below.
3.1.2 Getting the source files
You need to collect the following sets of files:
• Get the R source code tarball R-3.0.2.tar.gz from CRAN. Open a command window (or
another shell) at directory R HOME, and run
tar -xf R-3.0.2.tar.gz
to create the source tree in R HOME. Beware: do use tar to extract the sources rather
than tools such as WinZip. If you are using an account with administrative privileges you
may get a lot of messages which can be suppressed by
tar --no-same-owner -xf R-3.0.2.tar.gz
or perhaps better, set the environment variable TAR_OPTIONS to the value
‘--no-same-owner --no-same-permissions’.
It is also possible to obtain the source code using Subversion; see Chapter 1 [Obtaining R],
page 1 for details.
• If you are not using a tarball you need to obtain copies of the recommended packages
from CRAN. Put the .tar.gz files in R_HOME/src/library/Recommended and run make
link-recommended. If you have an Internet connection, you can do this automatically by
running in R_HOME/src/gnuwin32
16. Chapter 3: Installing R under Windows 11
make rsync-recommended
The following additional items are normally installed by Rtools30.exe. If instead you choose
to do a completely manual build you will also need
• The Tcl/Tk support files are contained in Rtools30.exe and available as .zip files from
http://www.stats.ox.ac.uk/pub/Rtools. Please make sure you install the right version:
there is a 32-bit version and a 64-bit version. They should be installed to R_HOME, creating
directory Tcl there.
• You need libpng, jpeg and libtiff sources (available, e.g., from http://www.libpng.
org/, http://www.ijg.org and http://download.osgeo.org/libtiff/); current ver-
sions are recommended and 7 or later is required. It is also possible to use ‘libjpeg-turbo’
from http://sourceforge.net/projects/libjpeg-turbo/files/.
Working in the directory R_HOME/src/gnuwin32/bitmap, install the libpng and jpeg
sources in sub-directories. The jpeg sub-directory for version 9 is named jpeg-9; if you use a
different version (e.g. jpeg-8d or libjpeg-turbo), copy file src/gnuwin32/MkRules.dist
to src/gnuwin32/MkRules.local and edit the definition of JPEGDIR: the names of the
libpng and libtiff directories can also be set there.
Example:
> tar -zxf libpng-1.6.2.tar.gz
> mv libpng-1.6.2 libpng
> tar -zxf jpegsrc.v9.tar.gz
> tar -zxf tiff-4.0.3.tar.gz
> mv tiff-4.0.3/libtiff .
> rm -rf tiff-4.0.3
(and see the comment above about --no-same-owner).
3.1.3 Building the core files
Set the environment variable TMPDIR to point to a writable directory, with a path specified with
forward slashes and no spaces. (The default is /tmp, which may not be useful on Windows.)
You may need to compile under a case-honouring file system: we found that a samba-mounted
file system (which maps all file names to lower case) did not work.
Open a command window at R_HOME/src/gnuwin32. Look at MkRules.dist and if settings
need to be altered, copy it to MkRules.local and edit the settings there. In particular, this is
where a 64-bit build is selected. Then run
make all recommended
and sit back and wait while the basic compile takes place.
Notes:
• We have had reports that earlier versions of anti-virus software locking up the machine, but
not for several years. However, aggressive anti-virus checking such as the on-access scanning
of Sophos can slow the build down several-fold.
• By default Doug Lea’s malloc in the file R_HOME/src/gnuwin32/malloc.c is used for
R’s internal memory allocations. You can opt out of this by setting LEA_MALLOC=NO in
MkRules.dist, in which case the malloc in msvcrt.dll is used. This does impose a con-
siderable performance penalty and has not been tested recently.
• You can run a parallel make by e.g.
make -j4 all
make -j4 recommended
but this is only likely to be worthwhile on a multi-core machine with ample memory, and
is not 100% reliable.
17. Chapter 3: Installing R under Windows 12
• It is possible (mainly for those working on R itself) to set the (make or environment) variable
R_NO_BASE_COMPILE to a non-empty value, which inhibits the byte-compilation of the base
and recommended packages.
3.1.4 Building the bitmap files
The file R_HOME/library/grDevices/libs/{i386,x64}Rbitmap.dll is not built automatically.
Running make in R_HOME/src/gnuwin32/bitmap or make bitmapdll in
R_HOME/src/gnuwin32 should build Rbitmap.dll and install it under R_
HOME/library/grDevices/libs.
3.1.5 Building the cairo devices
The devices based on cairographics (svg, cairo_pdf, cairo_ps and the type = "cairo" versions
of png, jpeg, tiff and bmp) are implemented in a separate DLL winCairo.dll which is loaded
when one of these devices is first used. It is not built by default, and needs to be built after
Rbitmap.dll, by make cairodevices.
To enable the building of these devices you need to install the static cairographics libraries
built by Simon Urbanek at http://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.6 Checking the build
You can test a build by running
make check
The recommended packages can be checked by
make check-recommended
Other levels of checking are
make check-devel
for a more thorough check of the R functionality, and
make check-all
for check-devel and check-recommended.
If a test fails, there will almost always be a .Rout.fail file in the directory being checked
(often tests/Examples or tests): examine the file to help pinpoint the problem.
3.1.7 Building the manuals
The PDF manuals can be made by
make manuals
If you want to make the info versions (not including the Reference Manual), use
cd ../../doc/manual
make -f Makefile.win info
(all assuming you have pdftex/pdflatex installed and in your path).
See the Section 2.3 [Making the manuals], page 4 section in the Unix-alike section for setting
options such as the paper size and the fonts used.
3.1.8 Building the Inno Setup installer
You need to have the files for a complete R build, including bitmap and Tcl/Tk support and
the manuals, as well as the recommended packages and Inno Setup (see Section D.2 [The Inno
Setup installer], page 63).
Once everything is set up
18. Chapter 3: Installing R under Windows 13
make distribution
make check-all
will make all the pieces and the installers 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)
bitmapdll (the bitmap support files)
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)
The parts can be made individually if a full build is not needed, but earlier parts must be
built before later ones. (The Makefile doesn’t enforce this dependency—some build targets
force a lot of computation even if all files are up to date.) The first four targets are the default
build if just make (or make all) is run.
Parallel make is not supported and likely to fail.
If you want to customize the installation by adding extra packages, replace make rinstaller
by something like
make rinstaller EXTRA_PKGS=’pkg1 pkg2 pkg3’
An alternative way to customize the installer starting with a binary distribution is to first
make an installation of R from the standard installer, then add packages and make other
customizations to that installation. Then (after having customized file MkRules, possibly via
MkRules.local, and having made R in the source tree) in src/gnuwin32/installer run
make myR IMAGEDIR=rootdir
where rootdir is the path to the root of the customized installation (in double quotes if it
contains spaces or backslashes).
Both methods create an executable with a standard name such as R-3.0.2-win.exe, so
please rename it to indicate that it is customized. If you intend to distribute a customized
installer please do check that license requirements are met – note that the installer will state
that the contents are distributed under GPL-2 and this has a requirement for you to supply
the complete sources (including the R sources even if you started with a binary distribution
of R, and also the sources of any extra packages (including their external software) which are
included).
The defaults for the startup parameters may also be customized. For example
make myR IMAGEDIR=rootdir MDISDI=1
will create an installer that defaults to installing R to run in SDI mode. See src/
gnuwin32/installer/Makefile for the names and values that can be set.
The standard CRAN distribution of a 32/64-bit installer is made by first building 32-bit R
(just
make 32-bit
is needed), and then building 64-bit R with the macro HOME32 set in file MkRules.local to
the top-level directory of the 32-bit build. Then the make rinstaller step copies the files that
differ between architectures from the 32-bit build as it builds the installer image.
19. Chapter 3: Installing R under Windows 14
3.1.9 Building the MSI installer
It is also possible to build an installer for use with Microsoft Installer. This is intended for use
by sysadmins doing automated installs, and is not recommended for casual use.
It makes use of the Windows Installer XML (WiX) toolkit version 3.5 (or perhaps later,
untested) available from http://wix.sourceforge.net/ or http://wixtoolset.org/. Once
WiX is installed, set the path to its home directory in MkRules.local.
You need to have the files for a complete R build, including bitmap and Tcl/Tk support
and the manuals, as well as the recommended packages. There is no option in the installer
to customize startup options, so edit etc/Rconsole and etc/Rprofile.site to set these as
required. Then
cd installer
make msi
which will result in a file with a name like R-3.0.2-win32.msi. This can be double-clicked to be
installed, but those who need it will know what to do with it (usually by running msiexec /i with
additional options). Properties that users might want to set from the msiexec command line
include ‘ALLUSERS’, ‘INSTALLDIR’ (something like c:Program FilesRR-3.0.2) and ‘RMENU’
(the path to the ‘R’ folder on the start menu) and ‘STARTDIR’ (the starting directory for R
shortcuts, defaulting to something like c:UsersnameDocumentsR).
The MSI installer can be built both from a 32-bit build of R (R-3.0.2-win32.msi) and from
a 64-bit build of R (R-3.0.2-win64.msi, optionally including 32-bit files by setting the macro
HOME32, when the name is R-3.0.2-win.msi). Unlike the main installer, a 64-bit MSI installer
can only be run on 64-bit Windows.
Thanks to David del Campo (Dept of Statistics, University of Oxford) for suggesting WiX
and building a prototype installer.
3.1.10 64-bit Windows builds
To build a 64-bit version of R you need a 64-bit toolchain: the only one discussed here is based
on the work of the MinGW-w64 project (http://sourceforge.net/projects/mingw-w64/,
but commercial compilers such as those from Intel and PGI could be used (and have been by R
redistributors).
Support for MinGW-w64 was developed in the R sources over the period 2008–10 and was
first released as part of R 2.11.0. The assistance of Yu Gong at a crucial step in porting R to
MinGW-w64 is gratefully acknowledged, as well as help from Kai Tietz, the lead developer of
the MinGW-w64 project.
Windows 64-bit is now completely integrated into the R and package build systems.
3.2 Testing an Installation
The Windows installer contains a set of test files used when building R.
The Rtools are not needed to run these tests. but more comprehensive analysis of errors
will be given if diff is in the path (and errorsAreFatal = FALSE is then not needed below).
Launch either Rgui or Rterm, preferably with --vanilla. Then run
Sys.setenv(LC_COLLATE = "C", LANGUAGE = "en")
library("tools")
testInstalledBasic("both")
testInstalledPackages(scope = "base", errorsAreFatal = FALSE)
testInstalledPackages(scope = "recommended", errorsAreFatal = FALSE)
runs the basic tests and then all the tests on the standard and recommended packages. These
tests can be run from anywhere: they write some of their results in the tests folder of the R
20. Chapter 3: Installing R under Windows 15
home directory (as given by R.home()), and hence may need to be run under the account used
to install 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.
21. Chapter 4: Installing R under OS X 16
4 Installing R under OS X
The front page of a CRAN site has a link ‘Download R for OS X’. Click on that, then download
the file R-3.0.2.pkg and install it. This runs on OS X 10.6 and later (Snow Leopard, Lion,
Mountain Lion, Mavericks, . . .); it is a 64-bit (‘x86_64’) build which should run on all Macs
from mid-2008 on. For older Intel Macs and some older versions of the OS you can install R
from the sources.
It is important that is you use the binary package that your OS is fully updated: run ‘Software
Update’ from the Apple menu to be sure.
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 (‘Package Name’).
Everyone will need the ‘R Framework’ component: the ‘R GUI’ and ‘Tcl/Tk’ components are
optional (the latter being needed to use package tcltk).
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.
On Mountain Lion and later with ‘GateKeeper’ active you will need to right/control-click on
any unsigned packages and select ‘Open’: recent CRAN packages are signed.
For building R from source, see Section C.3 [OS X], page 50.
4.1 Running R under OS X
There are two ways to run R on OS X from the 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). 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
http://cran.r-project.org/bin/macosx/RMacOSX-FAQ.html
You can run command-line R from a Terminal 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 personal library directory (under ~/Library/R, e.g.
~/Library/R/3.0/library), and that warnings, messages and other output to stderr are high-
lighted in bold.
4.2 Uninstalling under 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.frameweork folder. This does leave some links in /usr/bin.
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.Leopard.fw.pkg,
org.r-project.R.Leopard.GUI.pkg and org.r-project.x86_64.tcltk.x11 (not all of which
need be installed). You can use pkgutil --unlink (not supported by Lion or later) to remove
their files or 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
22. Chapter 4: Installing R under OS X 17
pkgutil --files org.r-project.x86_64.tcltk.x11
Note that some but not all of these files replace those in the Tcl/Tk 8.5.5 installation used for
R 2.x, so care is needed if removing either.
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 2.15,
3.0 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.0/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 http://r.research.att.com/ #other), can be used to
change the ‘current’ version. However, 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.
23. Chapter 5: Running R 18
5 Running R
How to start R and what command-line options are available is discussed in Section “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 will
have default limits at least as large as these, but apparently NetBSD does not. Use the shell
command ulimit (sh/bash) or limit (csh/tcsh) to check.)
R makes use of a number of environment variables, the default values of many of which are
set in file R_HOME/etc/Renviron (there are none set by default on Windows and hence no such
file). These are set at configure time, and you would not normally want to change them – a
possible exception is R_PAPERSIZE (see Section B.3.1 [Setting paper size], page 43). The paper
size will be deduced from the ‘LC_PAPER’ locale category if it exists and R_PAPERSIZE is unset,
and this will normally produce the right choice from ‘a4’ and ‘letter’ on modern Unix-alikes
(but can always be overridden by setting R_PAPERSIZE).
Various environment variables can be set to determine where R creates its per-session tem-
porary directory. The environment variables TMPDIR, TMP and TEMP are searched in turn and
the first one which is set and points to a writable area is used. If none do, the final default is
/tmp on Unix-alikes and the value of R_USER on Windows. The path should not contain spaces.
Some Unix-alike systems are set up to remove files and directories periodically from /tmp,
for example by a cron job running tmpwatch. Set TMPDIR to another directory before starting
long-running jobs on such a system.
Note that TMPDIR will be used to execute configure scripts when installing packages, so if
/tmp has been mounted as ‘noexec’, TMPDIR needs to be set to a directory from which execution
is allowed.
24. Chapter 6: Add-on packages 19
6 Add-on packages
It is helpful to use the correct terminology. A package is loaded from a library by the function
library(). Thus a library is a directory containing installed packages; the main library is R_
HOME/library, but others can be used, for example by setting the environment variable R_LIBS
or using the R function .libPaths().
6.1 Default packages
The set of packages loaded on startup is by default
> getOption("defaultPackages")
[1] "datasets" "utils" "grDevices" "graphics" "stats" "methods"
(plus, of course, base) and this can be changed by setting the option in startup code (e.g. in
~/.Rprofile). It is initially set to the value of the environment variable R_DEFAULT_PACKAGES if
set (as a comma-separated list). Setting R_DEFAULT_PACKAGES=NULL ensures that only package
base is loaded.
Changing the set of default packages is normally used to reduce the set for speed when
scripting: in particular not using methods will reduce the start-up time by a factor of up to two
(and this is done by Rscript). But it can also be used to customize R, e.g. for class use.
6.2 Managing libraries
R packages are installed into libraries, which are directories in the file system containing a
subdirectory for each package installed there.
R comes with a single library, R_HOME/library which is the value of the R object ‘.Library’
containing the standard and recommended1
packages. Both sites and users can create others
and make use of them (or not) in an R session. At the lowest level ‘.libPaths()’ can be used
to add paths to the collection of libraries or to report the current collection.
R will automatically make use of a site-specific library R_HOME/site-library if this exists (it
does not in a vanilla R installation). This location can be overridden by setting2
‘.Library.site’
in R_HOME/etc/Rprofile.site, or (not recommended) by setting the environment variable R_
LIBS_SITE. Like ‘.Library’, the site libraries are always included by ‘.libPaths()’.
Users can have one or more libraries, normally specified by the environment variable R_
LIBS_USER. This has a default value (to see it, use ‘Sys.getenv("R_LIBS_USER")’ within an R
session), but that is only used if the corresponding directory actually exists (which by default
it will not).
Both R_LIBS_USER and R_LIBS_SITE can specify multiple library paths, separated by colons
(semicolons on Windows).
6.3 Installing packages
Packages may be distributed in source form or compiled binary form. Installing source pack-
ages which contain C/C++/Fortran code requires that compilers and related tools be installed.
Binary packages are platform-specific and generally need no special tools to install, but see the
documentation for your platform for details.
Note that you may need to specify implicitly or explicitly the library to which the package
is to be installed. This is only an issue if you have more than one library, of course.
1
unless they were excluded in the build.
2
its binding is locked once the startup files have been read, so users cannot easily change it.
25. Chapter 6: Add-on packages 20
Ensure that the environment variable TMPDIR is either unset (and /tmp exists and can be
written in and executed from) or points to a valid temporary directory with a path not containing
spaces.
For most users it suffices to call ‘install.packages(pkgname)’ or its GUI equivalent if
the intention is to install a CRAN package and internet access is available.3
On most systems
‘install.packages()’ will allow packages to be selected from a list box (typically with several
thousand items).
To install packages from source on a Unix-alike use
R CMD INSTALL -l /path/to/library pkg1 pkg2 ...
The part ‘-l /path/to/library’ can be omitted, in which case the first library of a normal R
session is used (that shown by .libPaths()[1]).
There are a number of options available: use R CMD INSTALL --help to see the current list.
Alternatively, packages can be downloaded and installed from within R. First set the option
CRAN to your nearest CRAN mirror using chooseCRANmirror(). Then download and install
packages pkg1 and pkg2 by
> install.packages(c("pkg1", "pkg2"))
The essential dependencies of the specified packages will also be fetched. Unless the library
is specified (argument lib) the first library in the library search path is used: if this is not
writable, R will ask the user (in an interactive session) if the default personal library should be
created, and if allowed to will install the packages there.
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 can install a source package from a local .tar.gz file by setting argument
repos to NULL: this will be selected automatically if the name given is a single .tar.gz file.
install.packages can look in several repositories, specified as a character vector by the ar-
gument repos: these can include a CRAN mirror, Bioconductor, Omegahat, R-forge, rforge.net,
local archives, local files, . . .). Function setRepositories() can select amongst those reposi-
tories that the R installation is aware of.
Naive users sometimes forget that as well as installing a package, they have to use library
to make its functionality available.
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) at the list of binary versions of packages available for your version
of R and downloads the latest versions (if any), although optionally it will also download and
install a source package by setting the type argument.
On Windows install.packages can also install a binary package from a local zip file by
setting argument repos to NULL. Rgui.exe has a menu Packages with a GUI interface to
install.packages, update.packages and library.
Windows binary packages for R are distributed as a single binary containing either or both
architectures.
A few of the binary packages need other software to be installed on your system: see for ex-
ample http://CRAN.R-project.org/bin/windows/contrib/3.0/@ReadMe. For 64-bit builds,
3
If a proxy needs to be set, see ?download.file.
26. Chapter 6: Add-on packages 21
packages using Gtk+ (Cairo, RGtk2, cairoDevice and those that depend on them) need the bin
directory of a bundled distribution from http://www.gtk.org/download-windows-64bit.html
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 Appendix D [The
Windows toolset], page 62) are in the path). We have seen occasional permission problems after
unpacking source packages on some Vista/Windows 7/Server 2008 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/.
For almost all packages R CMD INSTALL will attempt to install both 32- and 64-bit builds of
a package if run from a 32/64-bit install of R. It will report success if the installation of the
architecture of the running R succeeded, whether or not the other architecture was successfully
installed. The exceptions are packages with a non-empty configure.win script or which make
use of src/Makefile.win. If configure.win does something appropriate to both architectures
use4
option --force-biarch: otherwise R CMD INSTALL --merge-multiarch can be applied to
a source tarball to merge separate 32- and 64-bit installs. (This can only be applied to a tarball,
and will only succeed if both installs succeed.)
If you have a package without compiled code and no Windows-specific help, you can zip up
an installation on another OS and install from the that zip file on Windows. However, such a
package can be installed from the sources on Windows without any additional tools.
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 file5
etc/i386/Makeconf or etc/x64/Makeconf for an
installed version of R. The version used by CRAN can be downloaded from http://www.stats.
ox.ac.uk/pub/Rtools/libs.html.
6.3.2 OS X
On OS X install.packages works as it does on other Unix-alike systems, but there is an
additional type mac.binary (the default in the CRAN distribution but not when compiling
from source) that 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.
Note that many binary packages including compiled code are tied to a particular series (e.g.
R 3.0.x or 3.1.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 Section C.3 [OS X], page 50.
Package rJava and those which depend on it need a Java runtime installed and several
packages need X11 installed, including those using Tk. For Mountain Lion and Mavericks see
Section C.3 [OS X], page 50 and Section C.3.6 [Java (OS X)], page 53.
4
for a small number of CRAN packages where this is known to be safe and is needed by the autobuilder this
is the default. Look at the source of tools:::.install_packages for the list. It can also be specified in the
package’s DESCRIPTION file.
5
or by adding it in a file such as etc/i386/Makevars.site, which does not exist by default.
27. Chapter 6: Add-on packages 22
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 http://r.research.att.com/libs/: the appropriate version at the
time of writing was http://r.research.att.com/libs/GTK_2.24.17-X11.pkg
It is often possible to use other compilers with the CRAN distribution of R, but the set-
tings in the file /Library/Frameworks/R.framework/Resources/etc/Makeconf will need to
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 corre-
sponding 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"
(this is expected to become necessary once Xcode 5 is released) and for another version of
gfortran-4.2 we needed
FLIBS=-lgfortran
6.3.3 Customizing package compilation
The R system and package-specific compilation flags can be overridden or added to by set-
ting the appropriate Make variables in the personal file HOME/.R/Makevars-R_PLATFORM (but
HOME/.R/Makevars.win or HOME/.R/Makevars.win64 on Windows), or if that does not exist,
HOME/.R/Makevars, where ‘R_PLATFORM’ is the platform for which R was built, as available in
the platform component of the R variable R.version. An alternative personal file can be
specified via the environment variable R_MAKEVARS_USER.
Package developers are encouraged to use this mechanism to enable a reasonable amount of
diagnostic messaging (“warnings”) when compiling, such as e.g. -Wall -pedantic for tools from
GCC, the Gnu Compiler Collection.
Note that this mechanism can also be used when it necessary to change the optimization
level for a particular package. For example
## 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 95 code
FCFLAGS=-g -O -mtune=native
There is also provision for a site-wide Makevars.site file under R_HOME/etc (in a sub-
architecture-specific directory if appropriate). This is read immediately after Makeconf, and an
alternative file can be specified by environment variable R_MAKEVARS_SITE.
6.3.4 Multiple sub-architectures
When installing packages from their sources, there are some extra considerations on installations
which use sub-architectures. These are commonly used on Windows but can in principle be used
on other platforms.
28. Chapter 6: Add-on packages 23
When a source package is installed by a build of R which supports multiple sub-architectures,
the normal installation process installs the packages for all sub-architectures. The exceptions
are
Unix-alikes
where there is an configure script, or a file src/Makefile.
Windows
where there is a non-empty configure.win script, or a file src/Makefile.win (with
some exceptions where the package is known to have an architecture-independent
configure.win, or if --force-biarch or a field in the DESCRIPTION file is used to
assert so).
In those cases only the current architecture is installed. Further sub-architectures can be in-
stalled by
R CMD INSTALL --libs-only pkg
using the path to R or R --arch to select the additional sub-architecture. There is also R CMD
INSTALL --merge-multiarch to build and merge the two architectures, starting with a source
tarball.
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 the option --byte-compile with R CMD INSTALL or with
install.packages(type = "source").
Not all contributed packages work correctly when byte-compiled (for example because they
interfere with the sealing of namespaces). For most packages (especially those which make
extensive use of compiled code) the speed-up is small. Unless a package is used frequently the
time spent in byte-compilation can outweigh the time saved in execution: also byte-compilation
can add substantially to the installed size of the package.
Byte-compilation can be controlled on a per-package basis by the ‘ByteCompile’ field in the
DESCRIPTION file.
6.4 Updating packages
The command update.packages() is the simplest way to ensure that all the packages on your
system are up to date. It downloads the list of available packages and their current versions,
compares it with those installed and offers to fetch and install any that have later versions on
the repositories.
An alternative interface to keeping packages up-to-date is provided by the command
packageStatus(), which returns an object with information on all installed packages and pack-
ages available at multiple repositories. The print and summary methods give an overview of
installed and available packages, the upgrade method offers to fetch and install the latest ver-
sions of outdated packages.
One sometimes-useful additional piece of information that packageStatus() returns is the
status of a package, as "ok", "upgrade" or "unavailable" (in the currently selected reposito-
ries). For example
> 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
29. Chapter 6: Add-on packages 24
6.5 Removing packages
Packages can be removed in a number of ways. From a command prompt they can be removed
by
R CMD REMOVE -l /path/to/library pkg1 pkg2 ...
From a running R process they can be removed by
> remove.packages(c("pkg1", "pkg2"),
lib = file.path("path", "to", "library"))
Finally, in most installations one can just remove the package directory from the library.
6.6 Setting up a package 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://’, but not on most systems ‘https://’). Under that base URL
there should be directory trees for one or more of the following types of package distributions:
• "source": located at src/contrib and containing .tar.gz files. Other forms of compres-
sion can be used, e.g. .tar.bz2 or .tar.xz files. Complete repositories contain the sources
corresponding to any binary packages, and in any case it is wise to have a src/contrib
area with a possibly empty PACKAGES file.
• "win.binary": located at bin/windows/contrib/x.y for R versions x.y.z and containing
.zip files for Windows.
• "mac.binary": located at bin/macosx/contrib/3.y for R versions 3.y.z and containing
.tgz files.
• "mac.binary.leopard": located at bin/macosx/leopard/contrib/2.y for R versions
2.y.z and containing .tgz files.
Each terminal directory must also contain a PACKAGES file. This can be a concatenation of the
DESCRIPTION files of the packages separated by blank lines, but only a few of the fields are needed.
The simplest way to set up such a file is to use function write_PACKAGES in the tools package,
and its help explains which fields are needed. Optionally there can also be a PACKAGES.gz file,
a gzip-compressed version of PACKAGES—as this will be downloaded in preference to PACKAGES
it should be included for large repositories. (If you have a mis-configured server that does not
report correctly non-existent files you may need PACKAGES.gz.)
To add your repository to the list offered by setRepositories(), see the help file for that
function.
Incomplete repositories are better specified via a contriburl argument than via being set
as a repository.
A repository can contain subdirectories, when the descriptions in the PACKAGES file of pack-
ages in subdirectories must include a line of the form
Path: path/to/subdirectory
—once again write_PACKAGES is the simplest way to set this up.
6.7 Checking installed source packages
It can be convenient to run R CMD check on an installed package, particularly on a platform
which uses sub-architectures. The outline of how to do this is, with the source package in
directory pkg (or a tarball filename):
R CMD INSTALL -l libdir pkg > pkg.log 2>&1
R CMD check -l libdir --install=check:pkg.log pkg
30. Chapter 6: Add-on packages 25
Where sub-architectures are in use the R CMD check line can be repeated with additional archi-
tectures by
R --arch arch CMD check -l libdir --extra-arch --install=check:pkg.log pkg
where --extra-arch selects only those checks which depend on the installed code and not those
which analyse the sources. (If multiple sub-architectures fail only because they need different
settings, e.g. environment variables, --no-multiarch may need to be added to the INSTALL
lines.) On Unix-alikes the architecture to run is selected by --arch: this can also be used on
Windows with R_HOME/bin/R.exe, but it is more usual to select the path to the Rcmd.exe of
the desired architecture.
So on Windows to install, check and package for distribution a source package from a tarball
which has been tested on another platform one might use
.../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
where one might want to run the second and third lines in a different shell with different settings
for environment variables and the path (to find external software, notably for Gtk+).
R CMD INSTALL can do a i386 install and then add the x64 DLL from a single command by
R CMD INSTALL --merge-multiarch -l libdir tarball
and --build can be added to zip up the installation.
31. Chapter 7: Internationalization and Localization 26
7 Internationalization and Localization
Internationalization refers to the process of enabling support for many human languages, and
localization to adapting to a specific country and language.
Current builds of R support all the character sets that the underlying OS can handle. These
are interpreted according to the current locale, a sufficiently complicated topic to merit a
separate section. Note though that R has no built-in support for right-to-left languages and
bidirectional output, relying on the OS services. For example, how character vectors in UTF-8
containing both English digits and Hebrew characters are printed is OS-dependent (and perhaps
locale-dependent).
The other aspect of the internationalization is support for the translation of messages. This
is enabled in almost all builds of R.
7.1 Locales
A locale is a description of the local environment of the user, including the preferred language,
the encoding of characters, the currency used and its conventions, and so on. Aspects of the
locale are accessed by the R functions Sys.getlocale and Sys.localeconv.
The system of naming locales is OS-specific. There is quite wide agreement on schemes, but
not on the details of their implementation. A locale needs to specify
• A human language. These are generally specified by a lower-case two-character abbreviation
following ISO 639 (see e.g. http://en.wikipedia.org/wiki/ISO_639-1).
• A ‘territory’, used mainly to specify the currency. These are generally specified by an
upper-case two-character abbreviation following ISO 3166 (see e.g. http://en.wikipedia.
org/wiki/ISO_3166).
• A charset encoding, which determines both how a byte stream should be divided into charac-
ters, and which characters the subsequences of bytes represent. Sometimes the combination
of language and territory is used to specify the encoding, for example to distinguish between
traditional and simplified Chinese.
• Optionally, a modifier, for example to indicate that Austria is to be considered pre- or
post-Euro. The modifier is also used to indicate the script (@latin, @cyrillic for Serbian,
@iqtelif) or language dialect (e.g. @saaho, a dialect of Afar, and @bokmal and @nynorsk,
dialects of Norwegian regarded by some OSes as separate languages, no and nn).
R is principally concerned with the first (for translations) and third. Note that the charset
may be deducible from the language, as some OSes offer only one charset per language, and
most OSes have only one charset each for most languages.
7.1.1 Locales under Unix-alikes
Modern Linux uses the XPG1
locale specifications which have the form ‘en_GB’, ‘en_GB.UTF-8’,
‘aa_ER.UTF-8@saaho’, ‘de_AT.iso885915@euro’, the components being in the order listed
above. (See man locale and locale -a for more details.) Similar schemes are used by most
Unix-alikes: some (including some distributions of Linux) use ‘.utf8’ rather than ‘.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.
1
‘X/Open Portability Guide’, which has had several versions.
32. Chapter 7: Internationalization and Localization 27
7.1.2 Locales under Windows
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 http://
msdn.microsoft.com/en-us/library/hzz3tw78(v=vs.80) (or if Microsoft moves it yet again,
search for ‘Windows language country strings’).
It offers only one encoding per language.
Some care is needed with Windows’ locale names. For example, chinese is Traditional
Chinese and not Simplified Chinese as used in most of the Chinese-speaking world.
7.1.3 Locales under OS X
OS X supports locales in its own particular way, but the R GUI tries to make this easier for users.
See http://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 it remotely and in batch
jobs: note whether Terminal sets the LANG environment variable is an (advanced) option, but
the default).
Internally OS X uses a form similar to Linux: the main difference from other Unix-alikes is
that where a character set is not specified it is assumed to be UTF-8.
7.2 Localization of messages
The preferred language for messages is by default taken from the locale. This can be overridden
first by the setting of the environment variable LANGUAGE and then2
by the environment variables
LC_ALL, LC_MESSAGES and LANG. (The last three are normally used to set the locale and so should
not be needed, but the first is only used to select the language for messages.) The code tries
hard to map locales to languages, but on some systems (notably Windows) the locale names
needed for the environment variable LC_ALL do not all correspond to XPG language names and
so LANGUAGE may need to be set. (One example is ‘LC_ALL=es’ on Windows which sets the locale
to Estonian and the language to Spanish.)
It is usually possible to change the language once R is running via (not Windows)
Sys.setlocale("LC_MESSAGES", "new_locale"), or by setting an environment variable such
as LANGUAGE, provided3
the language you are changing to can be output in the current character
set. But this is OS-specific, and has been known to stop working on an OS upgrade.
Messages are divided into domains, and translations may be available for some or all messages
in a domain. R makes use of the following domains.
• Domain R for the C-level error and warning messages from the R interpreter.
• Domain R-pkg for the R stop, warning and message messages in each package, including
R-base for the base package.
• Domain pkg for the C-level messages in each package.
• Domain RGui for the menus etc of the R for Windows GUI front-end.
Dividing up the messages in this way allows R to be extensible: as packages are loaded, their
message translation catalogues can be loaded too.
R can be built without support for translations, but it is enabled by default.
R-level and C-level domains are subtly different, for example in the way strings are canoni-
calized before being passed for translation.
2
On some systems setting LC_ALL or LC_MESSAGES to ‘C’ disables LANGUAGE.
3
If you try changing from French to Russian except in a UTF-8 locale, you will most likely find messages change
to English.
33. Chapter 7: Internationalization and Localization 28
Translations are looked for by domain according to the currently specified language, as specif-
ically as possible, so for example an Austrian (‘de_AT’) translation catalogue will be used in pref-
erence to a generic German one (‘de’) for an Austrian user. However, if a specific translation
catalogue exists but does not contain a translation, the less specific catalogues are consulted.
For example, R has catalogues for ‘en_GB’ that translate the Americanisms (e.g., ‘gray’) in the
standard messages into English.4
Two other examples: there are catalogues for ‘es’, which is
Spanish as written in Spain and these will by default also be used in Spanish-speaking Latin
American countries, and also for ‘pt_BR’, which are used for Brazilian locales but not for locales
specifying Portugal.
Translations in the right language but the wrong charset are made use of by on-the-fly re-
encoding. The LANGUAGE variable (only) can be a colon-separated list, for example ‘se:de’,
giving a set of languages in decreasing order of preference. One special value is ‘en@quot’, which
can be used in a UTF-8 locale to have American error messages with pairs of single quotes
translated to Unicode directional quotes.
If no suitable translation catalogue is found or a particular message is not translated in any
suitable catalogue, ‘English’5
is used.
See http://developer.r-project.org/Translations.html for how to prepare and install
translation catalogues.
4
the language written in England: some people living in the USA appropriate this name for their language.
5
with Americanisms.
34. Chapter 8: Choosing between 32- and 64-bit builds 29
8 Choosing between 32- and 64-bit builds
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.
All current versions of R use 32-bit integers and ISO/IEC 605591
double-precision reals, and
so compute to the same precision2
and with the same limits on the sizes of numerical quantities.
The principal difference is in the size of the pointers.
64-bit builds have both advantages and disadvantages:
• The total virtual memory space made available to a 32-bit process is limited by the pointer
size to 4GB, and on most OSes to 3GB (or even 2GB). The limits for 64-bit processes are
much larger (e.g. 8–128TB).
R allocates memory for large objects as needed, and removes any unused ones at garbage
collection. When the sizes of objects become an appreciable fraction of the address limit,
fragmentation of the address space becomes an issue and there may be no hole available
that is the size requested. This can cause more frequent garbage collection or the inability
to allocate large objects. As a guide, this will become an issue with objects more than 10%
of the size of the address space (around 300Mb) or when the total size of objects in use is
around one third (around 1Gb).
• Only 64-bit builds support ‘long vectors’, those with 231
or more elements (each of which
needs at least 8GB of storage, 16GB for a numeric vector).
• Most 32-bit OSes by default limit file sizes to 2GB (and this may also apply to 32-bit builds
on 64-bit OSes). This can often be worked around: and configure selects suitable defines
if this is possible. (We have also largely worked around that limit on 32-bit Windows.)
64-bit builds have much larger limits.
• Because the pointers are larger, R’s basic structures are larger. This means that R objects
take more space and (usually) more time to manipulate. So 64-bit builds of R will, all
other things being equal, run slower than 32-bit builds. (On Sparc Solaris the difference
was 15-20%.)
• However, ‘other things’ may not be equal. In the specific case of ‘x86_64’ vs ‘ix86’, the
64-bit CPU has features (such as SSE2 instructions) which are guaranteed to be present but
are optional on the 32-bit CPU, and also has more general-purpose registers. This means
that on chips like a desktop Intel Core 2 Duo the vanilla 64-bit version of R has been around
10% faster on both Linux and OS X. (Laptop CPUs are usually relatively slower in 64-bit
mode.)
So, for speed you may want to use a 32-bit build (especially on a laptop), but to handle large
datasets (and perhaps large files) a 64-bit build. You can often build both and install them
in the same place: See Section 2.6 [Sub-architectures], page 7. (This is done for the Windows
binary distributions.)
Even on 64-bit builds of R there are limits on the size of R objects (see
help("Memory-limits"), some of which stem from the use of 32-bit integers (espe-
cially in FORTRAN code). For example, the dimensions of an array are limited to
231
− 1.
1
also known as IEEE 754
2
at least when storing quantities: the on-FPU precision is allowed to vary
35. Chapter 9: The standalone Rmath library 30
9 The standalone Rmath library
The routines supporting the distribution and special1
functions in R and a few others are declared
in C header file Rmath.h. These can be compiled into a standalone library for linking to other
applications. (Note that they are not a separate library when R is built, and the standalone
version differs in several ways.)
The makefiles and other sources needed are in directory src/nmath/standalone, so the
following instructions assume that is the current working directory (in the build directory tree
on a Unix-alike if that is separate from the sources).
Rmath.h contains ‘R_VERSION_STRING’, which is a character string containing the current R
version, for example "3.0.0".
There is full access to R’s handling of NaN, Inf and -Inf via special versions of the macros
and functions
ISNAN, R_FINITE, R_log, R_pow and R_pow_di
and (extern) constants R_PosInf, R_NegInf and NA_REAL.
There is no support for R’s notion of missing values, in particular not for NA_INTEGER nor
the distinction between NA and NaN for doubles.
A little care is needed to use the random-number routines. You will need to supply the
uniform random number generator
double unif_rand(void)
or use the one supplied (and with a shared library or DLL you will have to use the one supplied,
which is the Marsaglia-multicarry with an entry point
set_seed(unsigned int, unsigned int)
to set its seeds).
The facilities to change the normal random number generator are available through the
constant N01 kind. This takes values from the enumeration type
typedef enum {
BUGGY_KINDERMAN_RAMAGE,
AHRENS_DIETER,
BOX_MULLER,
USER_NORM,
INVERSION,
KINDERMAN_RAMAGE
} N01type;
(and ‘USER_NORM’ is not available).
9.1 Unix-alikes
If R has not already be made in the directory tree, configure must be run as described in the
main build instructions.
Then (in src/nmath/standalone)
make
will make standalone libraries libRmath.a and libRmath.so (libRmath.dylib on OS X): ‘make
static’ and ‘make shared’ will create just one of them.
To use the routines in your own C or C++ programs, include
1
e.g. Bessel, beta and gamma functions