installing a new debian 11 container on my lenovo chromebook

All of the following was done on my Lenovo IP Flex 5 13ITL6 Chromebook with 8GiB of memory, 128GiB of flash storage and a quad-core 11th Gen Intel(R) Core(TM) i3-1115G4 @ 3.00GHz.

Because I couldn’t update my existing Debian 10 container to Debian 11, I deleted my existing Debian 10 container. In the process I also removed all folders that showed up in the files application under Linux folders, and as to be expected all installed applications such as Visual Studio Code. It would later turn out that I could create another Debian container, which is a topic for a later post. Re-creating my first Debian 11 container allowed me to document the steps necessary to add additional software development tools to the container.

Once the container was installed I updated Debian 11 with sudo apt update && sudo apt upgrade -y to make sure the software was fully up-to-date. For those reading this post you’ll find a tremendous amount of older documentation where apt-get is used. The newer form just uses apt, and so can you, saving some typing. The older form is still aliased so copying and pasting instructions into a shell will still work, everything else being equal.

Once the update was finished I attempted to install htop (sudo apt install htop -y) and Visual Studio Code. In order to install Visual Studio Code you need to go to the Microsoft website and download the x86-64 Debian file (see https://code.visualstudio.com/download ). You’ll save the .deb file somewhere in your container’s home directory, and then install it with sudo dpkg -i code_1.66.2-1649664567_amd64.deb where you saved the file.

The problem with this is you’re going to get an error message from apt telling you that there are unmet dependencies for both packages. The error message will even tell you how to fix the problem. To meet those dependencies you’ll need to execute sudo apt --fix-broken install at the command line. I would recommend that if you want both, install both even though they’ll both fail, so that when you fix the broken install both of them will be fixed and installed. One last install is for Visual Studio Code. Visual Studio Code will throw a keyring error. To keep this from happening install gnome keyring: sudo apt install gnome-keyring.

While we’re installing applications, I would recommend you go ahead and install the utility tree as it’s not part of the base install. Read the man page for tree or check this online example: https://www.computerhope.com/unix/tree.htm .

Once all that is installed, you need to decide what languages you’ll develop for. Debian 11 comes with a reasonably current version of Python, version 3.9.4. So if all you want to do is Python development you can stop there. If you want to develop for another language you can install those as well. For example, I wanted to do Rust development, so I installed Rust in the container following the Rust installation instructions here: https://www.rust-lang.org/learn/get-started . To support Rust development you’ll also need to install gcc because Rust uses the local environment’s linker cc, which is a part of gcc: sudo apt install gcc. If you do install gcc you get the side benefit of being able to develop in C. If you want to develop in C++ then you’ll also need to install g++ (sudo apt install g++ -y) and make (sudo apt install make). The tool git is already installed, so if you want to keep your work up on GitHub for example (which I strongly advise) you can do so out-of-the-box.

With everything installed, including a small repo, the total footprint of everything is a little over 4GiB. And I set up my container with a 40GiB disk area, which is probably too much considering what you might do. Since I’m not going to be compiling a Linux kernel, that’s quite enough elbow room to do non-trival work.

Once you’ve install Visual Studio Code you can start it from the Chromebook desktop by hitting the search key on the keyboard (that’s the key on the left above shift with the magnifying glass glyph). It should look something like this:

The icon for Visual Studio Code in my example showed up in the upper left corner. Once you start it by clicking on it, it will show up on your shelf. You can then double-finger click on it to pin it to your shelf for even easier access. My shelf runs vertically on the far left.

I’ve already gone to the trouble to install VS Code plugins for Python and Rust. I won’t go into that because there’s lots of detailed online help if you need that. Suffice to say that the instructions work, even on a Chromebook. In my example I’m beginning to do some Rust development.

Rust will compile and execute either at the command line or within VS Code. I’m sure there are limitations to very large projects, but for quite a bit of work there is more than enough resources to work on this Chromebook.

Why would I push a Chromebook instead of a MacBook or Windows notebook? Cost. The best bang-for-the-buck development environment believe it or not is going to be a Chromebook. A Windows notebook might reach down to what a Chromebook costs, but my reason for avoiding Windows is how Microsoft is trying to turn Windows users into another revanue source with intrusive ads and the limitations against third party applications that is creaping deeper into the OS, especially Windows 11. If you’re an independent developer a Chromebook is the best all-around compromise, especially in these times of high costs for basics and increasing inflation. You can still spend upwards of $400 on a Chromebook such as this Lenovo, but there are all sorts of interesting offers at half that amount, and who knows what you can find used.

A Chromebook like this is even a better deal than say a Raspberry Pi 4 with 4GiB or 8GiB, because you still need a keyboard, mouse and screen. And I do know all about the Raspberry Pi 400. But you can’t fold up a Raspberry Pi 400 or your Raspberry Pi rig and carry it out with you. Portability isn’t the Raspberry Pi’s forte.

updating to pop!_os 22.04

Figure 1: Settings | About

I followed the basic directions for updating my installation of Pop!_OS from 21.10 to 22.04. The best directions are here: https://www.omgubuntu.co.uk/2022/04/how-to-upgrade-to-pop-os-22-04-lts . It went smoothly, if a bit long. The time it took was more than likely due to the type of processor on my work system, which is an AMD Ryzen 5 PRO 2500U with built-in Radeon Vega Mobile Gfx. More than serviceable, but not some ground-pounding gaming rig. It runs with a 1 TB Western Digital WDS100T2B0B-00YS70 (415020WD) SATA M.2 SSD; fast enough, but not NVMe fast. This is a budget friendly rig, but a good solid workhorse none-the-less.

The tools I care about are all there. Stock Python is now at version 3.10.4, which means I can stop building my own for a while. GCC is at version 11.2, CLANG is at version 14, which means I can write and compile all of C++17 and most of C++20. People like to trash C++, but if you’re writing C++ source like you’re Microsoft in 1999, then you should be trashed. We’re now a good 20 years away from that historically horrid period. Quite a lot has been learned and fixed along the way. All the other tools I use are contemporary releases as well. A good solid workhorse is now even better.

The only peculiarity with the update is with Gnome Screenshot. It disappeared during the update. I had to reinstall it in order to grab the screenshot in Figure 1. It’s version 41, which makes me wonder if part of the update was to remove all old Gnome tools (i.e. version 41). In any event it works just fine after I recovered it.

I was wondering before I performed the update if I should use the opportunity to switch to Ubuntu 22.04. After all Ubuntu is upstream and from which Pop!_OS is derived. But Pop!_OS 22.04 came out quickly enough, so I upgraded what I had and didn’t make that drastic a change. And I’m glad I did. First, Pop!_OS 22.04 is running with a more recent Linux kernel, version 5.16.19 (Ubuntu is running 5.15). And the promise has been made that System76 will move to kernel version 5.17 in the months to come. I’ve spent quite a bit of time on this system and the older version of Linux, and haven’t had a single issue. Unlike Windows, nothing pops up to tell me I have a shit system that won’t be allowed to run the next major OS release, or bugs me about not running some sanctioned version of a browser or other tool. A Linux distribution is the best OS a retiree could ever run on their computer, except for perhaps macOS. But with macOS we’re still talking Unix. There is no way in hell I will ever run Windows again unless the computer is handed to me with Windows already installed, and I will use that computer as little as possible. If it’s hardware I own, it will always run something other than Windows.

Update

I have Fedora 35 in a Parallels VM on my MBP. I checked, and it’s already running Linux kernel version 5.17. I also checked some of the tools; Python 3.10.4 is installed as is GCC 11.2.1. Interestingly CLANG is at version 13. And I’m also waiting for Fedora 36 to drop, but it still hasn’t been released. Fedora 36 had two drop dates, 19 April and 26 April. It looks like both dates have been missed, for reasons I have yet to read about. Fedora was another distribution I’d strongly considered, but veered away from due to various rough releases I’ve had to deal with in the past. Ubuntu and Pop!_OS may not be bleeding edge, but they’re reliable and contemporary enough.