wiki/content/alpine-pkgs.md

13 KiB

title
Alpine packages

After installing Alpine on a ThinkPad, I quickly ran into an issue: some of the software I used to use on tank was not packaged at all for Alpine. Part of this list includes some of the most important software that I sometimes use when I use this ThinkPad outside, and tank, for which I bought two batteries, a dock, an SSD, etc., is really meant to be carried everywhere and be a trusty laptop that can do anything I need it to. So I quickly ended up learning how to create my own Alpine packages, and am now an official maintainer.

Packages I maintain

You can browse the list of packages that I currently maintain here: https://pkgs.alpinelinux.org/packages?name=&branch=edge&maintainer=Erwan+Rouchet

community/py3-pylspci

My first ever package: my own library, pylspci. Packaging my own stuff means I know really well the build process and can just change my own code to make the packaging easier, so I could focus on just learning how to make an APKBUILD.

community/pup

A Golang tool I use really often to parse HTML pages. The package already existed but was left unmaintained, so I adopted it.

community/gnome-mines

I have a few games on my ThinkPads, some niceties to waste a little time when I'm bored. Alpine has Battle for Wesnoth and OpenTTD, but not the most simple games like the minesweeper, so I packaged it and posted a bunch of memes on social media about me being a pro gamer on Alpine.

community/gnome-sudoku

Same as above! Even AisleRiot (card game) is packaged, but not those ones. The packages were also pretty simple to make since I could copy on other small GNOME utilities that were already packaged.

community/qqwing

The only dependency of gnome-sudoku that was missing from the repos. I just packaged it so I could get my sudoku.

community/savvycan

A tool that helps with reverse-engineering the CAN bus of your car. Although I do not own a car, a friend of mine does, and recently acquired a netbook that has specs low enough that the only Linux distro we found that could work with it is Alpine. Since my friend wants to play around with the CAN bus and learn how the car's computers work, I packaged it.

community/liferea

A pretty powerful RSS reader that can use my current TinyTinyRSS setup. While I do need something like TinyTinyRSS since I am subscribed to over 150 feeds, have to manage more than 3000 unread items and use 4 or 5 devices to access them, having a GUI that is not a web browser is much better since I do not have to waste some battery life.

community/zola

A while ago, ~durrendal became the maintainer of the zola package just so that my company could use it without having to install from the testing repos. Now that I also maintain Alpine packages, it makes sense that I take zola from him. And just getting to say that I maintain that package at work sounds nice.

testing/svgbob

A tool that generates SVG from ASCII art. I plan on using it in a Pandoc filter for some technical articles on my various websites.

testing/epr

A tiny command-line epub reader, because the selection of epub readers on Alpine is pretty disappointing.

Packages to make

CUPS filter for the Seiko RP-D10

I own a thermal printer, and it is currently setup on mountain. It is shared over Samba so that I can access it both through my old Windows laptops or through my Linux setups. That setup took me while since I had to learn CUPS, Samba, and install the drivers from source. Fortunately, those drivers are under GPL, so it is in theory possible to package them for Alpine. The official drivers are kinda hard to find since you have to register with fake information about yourself to access the file list, so here is a quick link: https://www.sii-ps.com/common/CUPSFilter_Ver.1.2.0.zip

wifite

A Wi-Fi password finder, basically a simplified UI for aircrack-ng and the
like. I use it sometimes during my warwalking activities; although I mean for
that warwalking to contribute public APs to OpenStreetMap, wifite
can also be useful to find out if an access point is actually secure or not.
~durrendal has started working on that before I started my own Alpine adventures,

gqrx

A rather simple SDR GUI. I sometimes use it to listen to signals outside, such as listening in to the various conversations of the teams organizing the Tour de France when it passes by my city.

opensimulator

Remember Second Life? OpenSimulator is an open source server that runs on the same protocol as Second Life. I started really exploring computers right when SL came out, so I did play around with it a little bit even though I was really confused. A French website, on which I had learnt to code, had a tutorial on running your own SL-like server, and that is how I got to know about OpenSimulator. I recently connected to some existing servers and was amazed to see all the history, just like how amazed I am sometimes when I find old websites on geocities-like hosting services that still exist in France. I want to learn more about those worlds and the best way is probably to just get my own.

firestorm

While OpenSimulator is the server, Firestorm is one of the clients. It can connect both to Second Life and to OpenSimulator servers and seems to be still pretty actively maintained.

dictd

If I have the opportunity to replace a service on my web browser with some software available offline that uses a lot less resources, I take it. dictd uses an old protocol to allow accessing dictionaries, thesauri, etc., and it is available on Debian and Ubuntu. While it is possible to connect to remote DICT servers and some are still online right now, it is also possible to run a DICT server locally and have your own dictionaries on your computer. I often use various dictionaries in English, French, or to translate between both, as well as a thesaurus.

I started working on this one, but it is quite complex since the configuration is not trivial to manage when the dictionaries are in separate packages. Additionally, the dictionaries have strange licenses and finding their official source so I can rebuild them from source in the APKBUILD is not simple.

I already have a working client and server but I prefer to wait for ~durrendal to set up his Alpine repo so I can start testing around without some of the constraints that the official repos can have.

sweethome3d

I sometimes like to design houses just for fun. There also are two buildings nearby that we regularly go urbexing into with friends and that we would like to reproduce in 3D for historical purposes as well as maybe just making a video game in that scene. While Sweet Home 3D is far from the tool any 3D designer reaches for, especially for a game, it is much easier to use for me than any actual 3D design tool like SketchUp or some Autodesk thing. It should also be pretty easy to package since it is in Java.

pgadmin

A friend gave me access to a PostgreSQL server that he set up just so we could play around with the rather large amount of data that our warwalking activities produce. Since that includes a lot of geographical data, my main use for pgAdmin is its geometry viewer which overlays the polygons on OpenStreetMap.

puzzles

https://www.chiark.greenend.org.uk/~sgtatham/puzzles/

This series of games was suggested by ~nihilazo and I did not look that deep into it yet; I'm just keeping it in this list so that I can look later at how hard it would be to package.

trainfuck

https://git.sr.ht/~acdw/trainfuck

A random project from ~acdw that should be really easy to package. I am pretty sure this would never make it into the official repos, but we can have it on ~durrendal's private Alpine repo.

virtualbox

Being part of the things that got stolen by Oracle, this is the kind of software that Alpine would never want in its official repos. That doesn't mean that that will stop me from packaging it in a private repo though.

QEMU is completely unable to deal with my Windows 2000 machine; technically, it will work, and there is an official wiki page that documents how to use it. However, there is no sound, the resolution is low and the VM is globally slow. Both VirtualBox and VMWare can run this just fine, just like Windows 98SE, and I put a lot of importance on those VMs, sometimes requiring them for my strange projects.

VirtualBox looks pretty hard to package, for rather obvious reasons since it is now Oracle and is an hypervisor. The alternative might be to move my setups to laptops as I have wanted to do for a while, for example with warrior. However, seeing as warrior is visibly unable to handle Windows 98SE and I have no other laptop that could fit, that would mean giving up on that one...

inform7

Inform is a strange language that lets you create text-based games. I saw some townies use it to create pretty strange things and I really want to see just how far I could push it, as well as maybe, sometimes, create actual games.

Inform is currently proprietary, although its creator says he wants to make it open-source. Until then, it will go on a private repo...

pandoc-bin

Alpine's maintainers want packages to be compiled from source, particularly because they mostly always need to be compiled from source to handle musl or be truly lightweight. Pandoc will no longer be available in the next Alpine release (3.15), because the Haskell maintainers do not accept upstream patches for musl compatibility and maintaining the ghc compiler has been a pain. ghc is blocking the next release and no packages other than Pandoc and some unmaintained or rarely used dependencies are depending on it, so the decision was made to remove it entirely.

Pandoc provides on their GitHub releases some amd64 and arm64 binaries that are statically-linked, meaning they do not depend on neither musl nor glibc. The binaries are on the heavy side, but they seem to run perfectly well on Alpine.

I do not have the knowledge to help with fixing ghc, and after a thorough review of a large amount of Markdown parsers, only Pandoc fits my requirements. To avoid having to rewrite every single of my websites in another Markdown dialect or in pure HTML, I will just package pandoc's binary in a private repo.

epy

A fork of epr made by its own creator, with a pretty strange packaging. This will be a bit of a challenge!

py3-mobi

A dependency of epy that is also pretty messy to package. Supposed to handle the Kindle's MOBI files.

This might not be a dependency anymore, due to the maintainer giving up and vendoring another package instead.

py3-loguru

A dependency of mobi, yet another Python packaging mess.

bad ideas

A discussion on IRC led to some ideas for terrible packages that we could put in ~durrendal's repo:

nuke
Erases your disk upon installation.
landmine
Erases your disk upon uninstallation.
nothing
Just nothing. A completely useless empty package.
everything
Its dependencies are everything that can be installed without causing a conflict.
kitchen-sink
An empty package that conflicts with everything because of puns.
bathwater
A package that depends on baby, so that you can throw the baby out with the bathwater upon removal.
This could also install some e-girl wallpapers for maximum curse.
thanos
Removes half of your packages upon installation.
russian-roulette
nuke, but it only erases your disk with a 1/6 chance.
russian-roulette-openrc
russian-roulette as a service, erase your disk with a 1/6 chance on each boot or each shutdown.
perl
The official Perl package, but it triggers a Perl fork bomb when installed:
perl -e "fork while fork"
\u200b
A package whose name is a zero-width space.
yodawg
A full copy of the package repository itself.
systemd-openrc
A bunch of OpenRC services that allow you to be confused between systemd and openrc without rewriting every command: service restart something calls /etc/init.d/restart, which calls the proper service something restart
cant-touch-this
A package that uninstalls itself as soon as you install it.
recursion
A package that depends on itself.
evil-sh
https://github.com/mathiasbynens/evil.sh
emacs
Not only does it install Emacs, it installs systemE so your computer becomes Emacs.
Alternatively, this could symlink every binary to emacs, so that anything you run is emacs:
find . -type f -executable -not -path '/usr/bin/emacs' -exec ln -s /usr/bin/emacs '{}' +
energystar
Issues SysRq commands to shut the computer down as quickly as possible to save energy.