Perkify - Install (Linux)

Written by Rich Morin.

Contents: (hide) (show)

Path:  AreasContentHowTos

Precis:  Perkify installation notes for Linux

Note: This page describes the Perkify installation process for Linux distributions. If you’re running something else on your host machine, go back to the Perkify Install page and try again!

Infrastructure

Before you can use Perkify, you’ll need to install VirtualBox and Vagrant. These steps are typically performed using a web browser and your host’s default installation software.

Note: At this writing, the current version of Vagrant (2.2.6) is incompatible with the current version of VirtualBox (6.1.0). The notes below have been modified to reflect this snafu…

After skimming the Download VirtualBox page, proceed to the Download VirtualBox (Old Builds): VirtualBox 6.0 page. Then, under the “VirtualBox 6.0.14” heading, click the link for the appropriate Linux distribution.

Now, install the appropriate Vagrant distribution from the Download Vagrant page. Several specific Linux distributions are supported (e.g., Debian, Fedora, openSUSE, Oracle, Ubuntu), along with a generic “All distributions” variant.

Directory Setup

Note: We can’t predict your host machine’s prompt string, so we’ll just use the string Host: below.

In a Terminal window, enter the following commands:

Host: cd                                # go to your home directory
Host: mkdir V_perkify                   # create a working directory
Host: cd V_perkify                      # go to the working directory
Host: vagrant init Rich_Morin/Perkify   # initialize the directory

Like many Vagrant commands, this will output a slew of messages. I’ve submitted an issue, asking for a “quiet” mode (e.g., --quiet). This enhancement request has been added to Vagrant’s 2.2 milestone, but no schedule has been provided. So, until this feature becomes available, you’ll just have to endure the chatter.

The vagrant init command will add a .vagrant.d sub-directory in your home directory; Vagrant will use this for support code and machine image files. In general, you should leave this directory alone, but feel free to inspect it and see what it contains.

It will also add a generic version of the Vagrantfile, which will contain configuration information for the virtual machine. This would be a good time to skim the Vagrantfile, in order to get an idea of the possible options.

Note: Don’t modify this copy of the Vagrantfile, lest your changes cause problems or get overwritten by an update. If need be, you can augment (or even override) its settings. For details, see Perkify - Configuration.

Installation

We’re (finally) ready to run the vagrant up command. This will:

Because the Perkify box is several gigabytes in size, the initial download may take a while (e.g., an hour). You might want to estimate the amount of time this will take. If you don’t know how fast your connection is, run a speed test. If your download speed is 20 Mbps, downloading a 10 GB (80 Gb) of image data will take about an hour (4000 seconds).

As a side note, Perkify includes a number of interactive calculators and read–eval–print loops (REPLs). (See the Perkify - REPLs HowTo for more information.) Here’s how this calculation might be done in irb(1), the Interactive Ruby Shell:

irb(main):001:0> secs = ( (80 * 1000) / 20)
=> 4000
irb(main):002:0> secs / 3600.0
=> 1.1111111111111112
irb(main):003:0> exit

In any event, you can now ask Vagrant to start up a virtual machine. Eventually, the command should finish, leaving you back at a command line prompt on the host machine:

Host: vagrant up
...
Host:

Example Commands

Note: The Perkify VM runs Ubuntu Linux (regardless of the OS on your host system), so you may have to learn some new ways of doing things. If you’re used to macOS (or some other Linux variant), be prepared for minor differences in command options.

Let’s try out some example commands. Use Vagrant to connect to the VM via Secure Shell (SSH), then inspect the running system:

Host: vagrant ssh               # Connect to the VM via SSH.
Welcome to Ubuntu 19.04 (GNU/Linux 5.0.0-17-generic x86_64)
...

vagrant@perkify:~$ pwd          # Print the "working directory".
/home/vagrant

vagrant@perkify:~$ l            # What's in this directory?
_base/  _sync/  bin/

vagrant@perkify:~$ df -k        # Show some file system information.
Filesystem  1K-blocks      Used  Available Use% Mounted on
udev           467888         0     467888   0% /dev
...

vagrant@perkify:~$ uname -v     # Describe the VM's kernel version.
#40-Ubuntu SMP ...

vagrant@perkify:~$ exit         # Terminate the SSH session.
logout
Connection to 127.0.0.1 closed.

Host: uname -v                  # Describe the host's kernel version.
...

At this point, the Perkify VM is still running. So, you can run vagrant ssh again whenever you wish. Indeed, you can have multiple SSH sessions going at the same time. However, if you’re done with the VM for the moment, there are various ways to shut it down. Normally, you’ll want to use vagrant suspend:

Because Vagrant has now downloaded the Perkify files, starting up the VM will now be somewhat faster. However, loading the machine image into memory and booting Ubuntu will still take a couple of minutes.

Host: cd ~/V_perkify
Host: vagrant up
...

Host: vagrant ssh
...

vagrant@perkify:~$

Sanity Check

Because Perkify is very raw tchnology, it’s quite possible that parts of it will be broken in one way or another. So, if you have some time and disk space to spare, you might want to install a “vanilla” Ubuntu VM for purposes of comparison. Here are some commands that should work:

Host: cd                                # go to your home directory
Host: mkdir V_ubuntu                    # create a working directory
Host: cd V_ubuntu                       # go to the working directory
Host: vagrant init bento/ubuntu-18.10   # initialize the directory
Host: vagrant up                        # download and install the VM
Host: vagrant ssh                       # start up an SSH session

Discussion

There really aren’t many Vagrant commands that you’ll use regularly. Mostly, you’ll be interacting with Bash, the Linux “shell”. That said, there are several commands you’ll need to know about. So, let’s move on to the Perkify - Usage page.