Setting up a local repository in R on Linux

Introduction

This the situation. You’re building a package in R and it has some dependencies. You want to install your package from source and all its dependencies automatically along with it. If you want to use install.packages with the tarball containing your package, you need to set repos = NULL, but then dependencies = TRUE won’t be used. A natural thing to do would be to set your own local repository and then specify the path to it in repos. You want to do all this because you want a self-contained installation of your new package.

There is a package named miniCran that might aid you to solve this situation, but then if you want to install your package in other machines, you also need to download and install miniCran on the other machines. Also, there is devtools, which claims that all dependencies will be installed automatically. Again, this would imply that you need to download and install it from the CRAN repositories. These are not true solutions, because you might just well download and install in advance all the dependencies your package needs and only then install your package. This solution does not depend on additional packages and can be implemented with base R packages only.

Setting up the local repository

This supposes that you have build your package specifying all dependencies in the DESCRIPTION file and you end up with a tar.gz file.

1. Set up a file directory src/contrib/ somewhere in your file system. Say you put it in ~/localrepo in what follows.

2. Be sure to download all your dependencies. Say your package depends on openxlsx which in turn depends on Rccp and zip. You need to download all these packages. In R:

download.packages(c("openxlsx", "Rcpp", "zip"), type="source", destdir="~/localrepo/src/contrib/")

(you need to replace ~/localrepo/ appropriately).

3. Put the tar.gz file with your new package also in ~/localrepo/src/contrib/

4. Set your directory as a genuine R repository

tools::write_PACKAGES("~/localrepo/src/contrib", type = "source")

This will generate the files PACKAGES, PACKAGES.gz, PACKAGES.rds in ~/localrepo/src/contrib/

Now, if you want to install the new downloaded package

install.packages("mynewpackage", repos = "file:~/localrepo/", dependencies = TRUE, type = "source")

Remember to substitute ~/localrepo/ appropriately. For example, if you put src/contrib/ in ~/tmp/ you should use “file:~/tmp/”


References:

https://cran.r-project.org/doc/manuals/r-release/R-admin.html#Setting-up-a-package-repository

Anuncios

Installing rJava (R) in Debian 9 (Stretch)

There are several packages in R which require to have rJava installed. The installation of rJava requires in turn that some Java libraries are properly installed in the system.

In a terminal:

sudo apt-get update && sudo apt-get install openjdk-9-jdk

(you can try with openjdk-8-jdk). There are some other packages that are installed along with openjdk-9-jdk.

We now reconfigure R with sudo credentials:

sudo R CMD javareconf

If everything goes smoothly, you can install in R the package rJava.

Installing RStudio on Debian 9 (Stretch stable)

I tried to install RStudio on Debian 9 Stretch stable, but apparently some system dependencies are not met and for some reason these dependencies cannot be installed directly from the repositories via apt-get, say. Instead, we have to manually download and install them (note this solution assumes you’re on a 64bit machine; in my case it’s a Dell Inspiron 7000 Series):

wget http://ftp.us.debian.org/debian/pool/main/g/gstreamer0.10/libgstreamer0.10-0_0.10.36-1.5_amd64.deb
wget http://ftp.us.debian.org/debian/pool/main/g/gst-plugins-base0.10/libgstreamer-plugins-base0.10-0_0.10.36-2_amd64.deb
sudo dpkg -i libgstreamer0.10-0_0.10.36-1.5_amd64.deb
sudo dpkg -i libgstreamer-plugins-base0.10-0_0.10.36-2_amd64.deb

Afterwards we just install RStudio from the .deb installer file given in the RStudio site.

This has worked flawlessly for me so far.

could not stat resume device file / A start job is running for dev-disk-by … (1min 30s)

These messages may appear when booting into your GNU/Linux OS, after waiting a (long) while. Although they don’t prevent from initializing the OS, they consume a lot of time of the booting process and then you have to press return after the first message appears.
The first message

 could not stat resume device file ...

seems to indicate that something is wrong either with a particular hard drive partition or with its recognition. The 3 dots are put so they indicate different situations. In my case, the partition in question was the swap partition. I could solve this by editing the file /etc/initramfs-tools/conf.d/resume and then updating initramfs. For the first part we open the mentioned file (under sudo credentials) end edit it with

RESUME=UUID=ec521ef7-ecfc-4c0f-8759-9d732e1b9550

Here, you need to replace the right partition’s UUID. In my case it was given just after the message could not stat resume device file during the booting process. For some others the partition might be simply indicated in the format /dev/sdaX. In this latter case you can simply type into a terminal

 ls -l /dev/disk/by-uuid

Now, for the second message/problem

 A start job is running for dev-disk-by ... (1min 30s)

the following solution relies entirely on the fact that the problematic partition is the swap partition. In other situations this solution is not helpful. We first unmount the swap partition, remake it and then re-mount it:

sudo swapoff -a
sudo mkswap /dev/sdaX
sudo swapon -a

Why someone would run into these troubles? Some people report these situations after doing some OS updating. In my case I installed Debian Stretch – testing, which formatted the existing swap partition (formatted under Debian Jessie – stable). The moral is to give every OS its own swap partition.

These solutions work well in Debian 8 (Jessie, stable), particularly using Crunchbang++.


References:

  1. http://forums.debian.net/viewtopic.php?=185961
  2. https://bbs.archlinux.org/viewtopic.php?id=201816
  3. https://liquidat.wordpress.com/2007/10/15/short-tip-get-uuid-of-hard-disks/

Installing Debian 9-Stretch on a Dell Inspiron 7000 via Crunchbang ++

Introduction

Last week Debian version 9, Stretch, was just released. A few days later also appeared Crunchbang ++ (Cbpp) mounted on Stretch. As a follower as I am of light installations and Cbpp, I decided to update the system using the latest version of Cbpp. The reason is that Crunchbang tweaks can save us some time, and from the experience I’ve had, a minimal installation of Debian and Crunchbang are practically the same, but Cbpp avoids a lot of additional configuration (such as explicit installation of wireless network).

Installing on another partition and preserving home

For the installation of Cbpp, we simply download the torrent file from https://crunchbangplusplus.org/. This new version of Cbpp has live sessions and doesn’t require a network for installation. The simplest way is to burn the iso file into a usb. Cbpp has a graphic installer that is known by many acquaintances, so we do not expect any annoyances.

Cbpp does not allow a direct upgrade from one version to another, but a fresh install is required to have the latest version. Of course this has its drawbacks (reinstalling software, reconfigurations to our liking, etc.), but also has the advantage that we can install the new version in another partition different from our current system’s and thus be able to gradually adapt the new installed system according to our needs, with the assurance that our present system remains intact.

Related to the previous discussion is that we can keep our home with the assurance that Cbpp will not modify it and the sessions in the old system will continue to function as always -perhaps the only thing that one may notice is that the themes in Cbpp will be changed, because the new version of Cbpp doesn’t have all the themes that the previous version offered.

As in my autostartof OpenboxI have omitted the line that runs cbpp-welcome, I simply run the command in a terminal.

Battery Recognition

In my case, the installation of Cbpp did not recognize the battery of the laptop. For this to be possible I modified the kernel options in /etc/default/grub (with sudo credentials):

GRUB_CMDLINE_LINUX_DEFAULT = "acpi_rev_override quiet"

then update grub by

sudo grub-update

so the new versions of the kernel will incorporate these options. Among the many attempts to solve the problem, I installed the programs acpi and acpi-tools. I don’t know if they are entirely necessary for the solution of the problem, but the modification of the grub file certainly is.

Useful software

Some tweaks that are required will vary from installation to installation, but in particular I installed the following programs

    • xserver-xorg-input-synaptics which allows you to configure the touchpad. In particular, I like not to have to press any button to activate links. These lines are useful for this purpose, which can be included directly in the autostart of Openbox:
If egrep -iq 'touchpad' / proc / bus / input / devices; Then
    Synclient VertEdgeScroll = 1 &
    Synclient TapButton1 = 1 &
Fi
Syndaemon -i .5 -d

The part syndaemonallows to deactivate the touchpad during typing and reactivates with a certain delay afterwards.

  • fbxkb which allows you to define keys to change the language on the keyboard. You have to set it up properly to make it useful. As I write in Spanish and English the file /etc/default/keyboard, which must be edited withsudo credentials, has the following lines
# KEYBOARD CONFIGURATION FILE
# Consult the keyboard (5) manual page.

XKBMODEL = "inspiron"
XKBLAYOUT = "us, es"
XKBVARIANT = ""
XKBOPTIONS = "grp: shift_toggle"

BACKSPACE = "guess"

You want to include in your autostart file a line like this

(sleep 2s && fbxkb) &

I don’t pretend to make a whole tutorial about fbxkb configuration, but this one allows me to switch between Spanish and English by pressing simultaneously both left and right Shift keys.

Surprises

One surprise I had with this new version of Cbpp is that I cannot access the other partitions present on the hard drive. I still do not solve this problem, but for now I manually mount the partition that interests me.
Another rather cumbersome surprise is that when I restart the Openbox session or when it comes back after suspending the laptop, the keyboard is turned on. A somewhat rough solution is as follows. Modify with sudo credentials the file /etc/dbus-1/system.d/org.freedesktop.UPower.conf, making sure that the lines related to the problem appear like this:

deny send_destination="org.freedesktop.UPower"
      send_interface="org.freedesktop.UPower.KbdBacklight"

Here, what is important is the word “deny” that substitutes “allow” in the original, unedited file. Afterwards, I restart the laptop, because restarting only the service led to some weird annoyances.

Conclusion

Cbpp instalation went through without any surprises. Wireless cards were properly recognized and activated with no troubles at all. However, for the system to properly recognize the battery a small change in the grub config file was necessary. I installed Cbpp using legacy booting.

Instalación de Debian 9-Stretch en una Dell Inspiron 7000 mediante Crunchbang++

Introducción

La semana pasada recién fue liberada la versión 9 de Debian, Stretch. A los pocos días también aparecio Crunchbang++ (Cbpp) montado sobre Stretch. Seguidor de las instalaciones ligeras y de Cbpp, decidí actualizar el sistema usando la última versión de Cbpp. La razón es que los tweaks de Crunchbang pueden ahorrarnos algo de tiempo, y por la experiencia que he tenido, comparando una instalación mínima de Debian con Crunchbang, prácticamente son iguales, pero Cbpp nos evita mucha configuración adicional (como la instalación explícita de manejadores de red inalámbrica).

Instalación en otra partición y conservación de home

Para la instalación de Cbpp, nos bajamos el torrent desde https://crunchbangplusplus.org/. Esta nueva versión de Cbpp tiene sesiones en vivo y no requiere de red para su instalación. La forma más sencilla es quemando el iso a un usb. Cbpp trae un instalador gráfico que es por muchos conocidos, por lo que no esperamos nada particular.

Una aspecto importante que hay que mencionar, es que Cbpp no permite una actualización directa de una versión a otra, sino que, para contar con la versión actual, es necesario hacer una instalación desde cero. Por supuesto que esto tiene sus inconvenientes (reinstalación de software, reconfiguraciones a nuestro gusto, etcétera), pero también tiene la ventaja de que podemos instalar la nueva versión en otra partición distinta a la de nuestro actual sistema y así poder ir adecuando el nuevo sistema poco a poco, con la seguridad de que nuestro sistema actual permanece intacto.

Otro tema relacionado con el anterior es que podemos conservar nuestro home con la seguridad de que Cbpp no lo alterará y las sesiones en el sistema antiguo seguirán funcionando como siempre en nuestro sistema original –acaso los temas en Cbpp serán cambiados, porque la nueva versión de Cbpp no dispone de todos los temas que la versión anterior ofrecía.

Como en mi autostart de Openbox tengo omitida la línea que corre cbpp-welcome, simplemente corro el comando en una terminal.

Reconocimiento de la batería

En mi caso, la instalación de Cbpp no reconoció la batería de la laptop. Para que esto fuese posible modifiqué las opciones del kernel en /etc/default/grub (con credenciales de sudo:

GRUB_CMDLINE_LINUX_DEFAULT="acpi_rev_override quiet"

para después actualizar el grub mediante

sudo update-grub

de esta forma las nuevas versiones del kernel incorporarán estás opciones. Entre los múltiples intentos por solucionar el problema, instalé los programas acpi y acpi-tools. Desconozco si son enteramente necesarios para la solucón del problema, pero la modificación del archivo de grub, sí lo es.

Programas útiles

Algunos tweaks que son necesarios variarán de instalación a instalación, pero en particular yo instalé los siguientes programas

  • xserver-xorg-input-synaptics, que permite configurar el touchpad. En particular, me gusta no tener que oprimir ningún botón para activar enlaces. Estás líneas son útiles para tal efecto, las cuales pueden ser incluidas directamente en el autostart de Openbox:
if egrep -iq 'touchpad' /proc/bus/input/devices; then
    synclient VertEdgeScroll=1 &
    synclient TapButton1=1 &
fi
syndaemon -i .5 -d

La parte de syndaemon permite desactivar el touchpad mientras se teclea y se reactiva con un cierto retraso después de teclear.

  • fbxkb, que permite definir teclas para cambiar de idioma en el teclado. Hay que configurarlo adecuadamente para que sea útil. Como comparto redacciones en Español e Inglés mi configuración en el archivo /etc/default/keyboard, el cual hay que editar con credenciales de sudo es
# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="inspiron"
XKBLAYOUT="us,es"
XKBVARIANT=""
XKBOPTIONS="grp:shift_toggle"

BACKSPACE="guess"

Para activar fbxkb es necesario agregar a nuestro autostart

(sleep 2s && fbxkb) &

Yo lo activo al final del script.

No es la intención realizar un tutorial de cómo configurar fbxkb, pero esta configuración me permite cambiar entre teclado español e inglés alternadamente oprimiendo ambas teclas Shift de manera simultánea.

Sorpresas

Una sorpresa que he tenido con esta nueva versión de Cbpp es que no puedo acceder a las otras particiones presentes en el disco duro. Aún no soluciono este problema, sino que por lo pronto monto manualmente la partición que me interesa.
Otra sorpresa un tanto engorrosa es que cuando reinicio la sesión de Openbox o cuando se vuelve después de suspender la laptop, se prende el teclado. Una solución un tanto ruda es la siguiente. Modificar con credenciales de sudo el archivo /etc/dbus-1/system.d/org.freedesktop.UPower.conf, asegurándose que las líneas relativas al problema aparezcan así:

deny send_destination="org.freedesktop.UPower"
           send_interface="org.freedesktop.UPower.KbdBacklight"

Aquí, la palabra clave es “deny”, que sustituye a “allow” en el archivo sin editar. Posteriormente reinicié la computadora, ya que reiniciando solamente el servicio dbus me topé con muchos problemas.

Conclusión

La instalación de Cbpp ocurrió sin contratiempos. En mi laptop, las tarjetas de red fueron reconocidas y activadas sin ningún contratiempo. En cambio, para que la batería fuese  reconocida hubo necesidad de modificar las opciones del kernel en el grub. La instalación fue usando el modo legacy de inicio.

BunsenLabs vs Crunchbang++: Una primera simple impresión

Recientemente bajé el iso de BunsenLabs y generé un usb para probar la versión en vivo del sistema. Se afirma que es la continuación del defunto proyecto Crunchbang.

Sin embargo, comparándolo con el original Crunchbang y su sustituto más inmediato, con Debian Jessie, Crunchbang++, hay ciertas diferencias obvias. Crunchbang++ ciertamente es Crunchbang montado sobre Debian Jessie estable (la última versión de Crunchbang estaba montada sobre Debian Wheezy estable). Desde el punto de vista del usuario final, la experiencia es idéntica, salvo en la instalación que es necesario hacerla mediante la red y no dispone de sesión de CD/USB en vivo.

En cambio, BunsenLabs dispone de sesiones en vivo, pero las adaptaciones de Openbox responden a otro concepto. No es la intención enunciar las diferencias, pero claramente no es Crunchbang, pero hay que recalcar que es una configuración de Openbox “a la Crunchbang”, por lo que la experiencia del usuario final no se ve realmente afectada. Para quienes, como yo, desean el Crunchbang original montado en la versión estable más reciente a la fecha de Debian (Jessie), no hay duda que el proyecto a seguir es el de Crunchbang++. Además de la instalación por red, la otra diferencia que encontré en Crunchbang++ fue cuando disponemos de un home preexistente con configuraciones especiales de Openbox, lo que parece prevenir a Crunchbang++ de instalarse completamente. Este artículo puede ser de ayuda para quien quiera conservar su home y recuperar toda la funcionalidad inherente de Crunchbang++, que reproduce, hasta donde he notado, la del Crunchbang original.