summaryrefslogtreecommitdiff
path: root/src/_posts/2017-11-16-perl6-setting-up-a-raspberry-perl.adoc
diff options
context:
space:
mode:
Diffstat (limited to 'src/_posts/2017-11-16-perl6-setting-up-a-raspberry-perl.adoc')
-rw-r--r--src/_posts/2017-11-16-perl6-setting-up-a-raspberry-perl.adoc236
1 files changed, 236 insertions, 0 deletions
diff --git a/src/_posts/2017-11-16-perl6-setting-up-a-raspberry-perl.adoc b/src/_posts/2017-11-16-perl6-setting-up-a-raspberry-perl.adoc
new file mode 100644
index 0000000..7ea72fa
--- /dev/null
+++ b/src/_posts/2017-11-16-perl6-setting-up-a-raspberry-perl.adoc
@@ -0,0 +1,236 @@
+---
+date: 2017-11-16 11:58:40
+tags: Tutorial Perl6 RaspberryPi Raku
+description: >
+ 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.
+---
+= Perl 6 - Setting up a Raspberry Perl
+:toc: preamble
+
+In this tutorial I'll get you through setting up a Raspberry Pi with
+https://perl6.org/[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.
+
+[NOTE]
+====
+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
+https://github.com/tadzik/rakudobrew[Rakudobrew], which I'll also be using to
+get https://github.com/ugexe/zef[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 https://www.raspbian.org/[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, https://www.Raspberrypi.org/downloads/raspbian/[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
+https://www.linux.com/blog/how-use-sudo-and-su-commands-linux-introduction[`sudo`].
+
+[source]
+----
+$ 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`:
+
+[source]
+----
+$ 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
+https://www.vidarholen.net/contents/blog/?p=479[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.
+
+[source]
+----
+# 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`:
+
+[source]
+----
+# 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:
+
+[source]
+----
+# 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:
+
+[source]
+----
+$ 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:
+
+[source]
+----
+$ 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.
+
+[source]
+----
+$ 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:
+
+[source]
+----
+$ 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:
+
+- https://docs.perl6.org/
+- http://perl6intro.com/
+
+For starting projects that are easy to start with and can bring quick results,
+consider making an IRC bot using
+https://github.com/zoffixznet/perl6-IRC-Client[`IRC::Client`], or a small web
+application using https://github.com/Bailador/Bailador[`Bailador`].