Setting up a Raspberry Perl
Tutorial Perl6 RaspberryPi Raku — Published on .
In this tutorial I’ll get you through setting up a Raspberry Pi with Perl 6. I am using a Raspberry Pi 3 myself, but other versions should work fine too. However, older versions are slower, so it might take a bit longer to install completely.
For those who have never had a Raspberry Pi before, you will need the following:
- Raspberry Pi board
- Power supply (5v 2A, micro USB)
- SD card of at least 4gb, but I would advise at least 8gb
- Monitor with HDMI cable
- Keyboard
Perl 6 will be installed using Rakudowbrew, which I’ll also be using to get zef installed. Zef is the recommended module manager for Perl 6.
Setting up Raspbian
The first step is getting the OS set up. To keep this tutorial simple, I will stick to Raspbian, but if you feel confident in your skills you can use any other distribution or OS. Perl 6 installs the same on all UNIX(-like) operating systems.
Get the image
First, download the Raspbian image from the Raspberry Pi download
page. I chose the LITE
version, but if you prefer having a graphical desktop you can go for the
DESKTOP
version instead.
At the time of writing, this means I got the
2017-09-07-raspbian-stretch-lite.zip
. If you want to verify you got the
correct download and nothing went wrong saving it to your disk, you can verify
the checksum. The checksum for your download is noted below the download links.
To get the checksum of the file you downloaded, use sha256sum
as follows:
NOTE: Lines prepended with a $
are to be ran as your normal user, whereas
lines with a #
are ment to be ran as “super user”. This can be done by using
a privilege escalation program, such as
sudo
.
$ sha256sum 2017-09-07-raspbian-stretch-lite.zip
If the checksum matches the one noted below the download button you used, it
should be fine, and you can continue with extracting the image from the zip
using unzip
:
$ unzip 2017-09-07-raspbian-stretch-lite.zip
This will result in a similarly named file, but with a .img
extension instead
of .zip
. This is the image that you can write to the SD card.
Write the image to the SD card
This step is pretty easy, but typos here can be disastrous for the system you’re using to write to the SD card.
Open a terminal and run dmesg -w
as super user (usually doable using sudo dmesg -w
). This will give immediate feedback when you insert your SD card, and
shows which device it is being assigned to. In my case, this was sdb
, which
means the device file resides at /dev/sdb
.
Now, to actually write the image, I’ll use dd
since this is everyone’s
favourite tool, it seems. If you feel adventurous enough to try out something
different, feel free to read up on
Useless Use of dd
.
Make sure to make the if
argument point to the correct path with your
extracted raspbian image, and of
to point to the correct device as identified
earlier. In order to be allowed to run this command, you must be root, which
can be achieved by using sudo
or doas
again.
# dd bs=4M status=progress if=/path/to/2017-09-07-raspbian-stretch-lite.img of=/dev/sdb
$ sync
Afterwards, plug it into your Raspberry Pi and attach all cables you might need. Think of stuff like a keyboard, mouse, monitor, internet, power. Do power last, as the Raspberry Pi will start immediatly once it receives power.
First boot
The Raspberry Pi should start booting the moment you supply it with power. If you attach the HDMI after the power, it’s possible you won’t have display working, so make sure HDMI is attached before powering up.
You’ll see some text scrolling by, up to a point where it asks you for a
login
, and accepts keyboard input. The default username is pi
, and the
default password is Raspberry
. You are strongly advised to change the
password upon login, which can be done in the next step.
Configuration
The Raspberry Pi comes with its own configuration tool, raspi-config
. Run
this with sudo
prepended in front of it so you gain the right privileges. I
would advise you to at least change the user password from here. After this you
should go to Advanced Options
and expand the filesystem. This will grow the
filesystem to the entire SD card’s size.
TIP: To get to the buttons on the bottom (Select
, Finish
and Back
), use
the arrow keys to go left or right.
You can look around the tool for other interesting things to modify. Once you
are satisfied, go back to the main menu and choose Finish
. It will ask to
reboot, which you should accept. This will apply all the new configurations you
just made.
Updating and installing additional packages
It’s rare for the system to be completely up to date after installing the image
on the SD card. Additionally, you also need some extra packages in order to get
rakudobrew, and to install Perl 6 itself. For this, we use the package manager
bundled with raspbian, apt
:
# apt update
# apt upgrade
This will update the package lists, and then upgrade all outdated packages to their newest versions. You should do this at least once a week to make sure your system stays up to date.
Once the upgrades are finished, you can install some new packages which are needed later on in this tutorial:
# apt install git build-essential
git
is required to get the rakudobrew repository and is also used by
rakudobrew itself to get the sources needed to build Perl 6 and to install zef.
The build-essential
package comes with all sorts of tools to build software,
which is required to build Perl 6.
Installing Perl 6
Now, we’ve got a working Raspberry Pi installation. We can start doing things with it, such as playing around with Perl 6.
Setting up Rakudobrew
Rakudobrew is a nice tool to manage Perl 6 installations on your system. It can
also install zef
for you, so you don’t have to deal with this manually. This
is all documented on the repository’s README.md
file as well, but I’ll
explain it here too. I do make a few small tweaks here and there to match my
preferred setup more closely.
Clone the repository to your system, and add it to your $PATH
to be able to
use the scripts bundled with it:
$ mkdir -p ~/.local/var
$ git clone https://github.com/tadzik/rakudobrew.git ~/.local/var/rakudobrew
$ export PATH=${HOME}/.local/var/rakudobrew/bin:$PATH
$ hash -r
The hash -r
call will rehash your PATH, so you can tab-complete rakudobrew
.
Next, initialize rakudobrew:
$ rakudobrew init
This will give you a notification to automatically load rakudobrew next time. It is advised you follow that message, so you won’t have to do it manually each time you log in to the system.
Installing Perl 6 with MoarVM backend
Now that rakudobrew is installed and available to use, it’s time to make use of it to install Perl 6.
$ rakudobrew build moar
Installing zef, the module manager
Getting zef to work isn’t much harder than installing Perl 6, but its a lot faster. You can have rakudobrew take care of this too:
$ rakudobrew build zef
Final words
And that should be it, you now have a working Perl 6 installation with the zef module manager to take care of installing and upgrading modules. Now you just need to come up with a nice project to work on to start using and learning the wonders of Perl 6.
If you need any help on getting started, try the #perl6
IRC channel on
Freenode, or check out some of the Perl 6 documentation and introduction sites:
For starting projects that are easy to start with and can bring quick results,
consider making an IRC bot using
IRC::Client
, or a small web
application using Bailador
.