You can read this post as a technical post about some Linux software and/or a satirical post about how ridiculous Linux can be.
Two critical pieces of my music editing and printing procedures on Linux are Abcm2ps and EasyABC. These should run on any Linux desktop, but each Linux desktop has it's own approach to installation. I use Lubuntu which is closely based on Ubuntu, just a different GUI interface.
Abcm2ps is a command line utility for converting ABC sheet music to PostScript for printing. But versions after 8.14.6 are broken for scaling and positioning.
For Ubuntu - find abcm2ps_8.14.6-0.1_amd64.deb on the internet and download it. The trick to finding it is to enter the exact file name, not keywords. Then sudo dpkg -i abcm2ps_8.14.6-0.1_amd64.deb to install. You can sudo apt install, but the next time you need it you will not have the .deb.
This is pretty easy, but when the system updater runs, it will replace it with a newer version. Here is the solution - not proven yet, I just ran it.
sudo apt-mark hold abcm2ps
and to verify
apt-mark showhold
.
EasyABC is a very nice cross-platform ABC music editor. Unfortunately, it runs into Linux's major flaw - installation dependencies. Old code that uses code that is no longer supported or readily available. Finding a functional way to install EasyABC on Lubuntu took many hours.
This is how I set up EasyABC using a virtual environment (venv). See https://groups.io/g/abcusers/topic/set_up_and_run_easyabc_on/110250537 for how to do this with PyEnv. This was very helpful even though it is not my way of doing things. Sounds more complicated that using a venv. Perplexity.ai helped a lot also. And MUCH trial and error.
The big issue here is that EasyABC doesn't keep up with Python (a code interpreter/compiler which is changed at a ridiculous rate). It does not work with Python 3.12. And when you install wxPython, it attaches to the current version of Python, 3.12. So you can install Python 3.11 which is okay for EasyABC but you can't install wxPython for Python 3.11 because the installer sees Python 3.12 and assumes that's where you want wxPython. You could try removing 3.12, installing wxPython on 3.11, and reinstalling 3.12, but 3.12 is the system Python, so I think that the system would crash if you remove 3.12 - not sure, didn't try it. And of course you could modify EasyABC to work with Python 3.12 - over 9000 lines of code - good luck. The "easy" solution is to make a virtual environment (venv), where Python 3.11 is current, and install wxPython there. Then put a wrapper around the Python execution of easy_abc.py that puts it in the venv. This is all new to me, but it became important when my computer crashed and I needed to get EasyABC
going on a new system.
Get jwdj EasyABC 1.3.8.7 .
https://github.com/jwdj/EasyABC
unzip to ~/home/user/easyabc
install python 11 from deadsnakes (a repository with old Python versions)
sudo apt update && sudo apt upgrade -y
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.11
python3.11 --version
make a virtual environment
python3.11 -m venv easyabc-venv
activate the venv (after it has been made, just activate and deactivate as needed)
source easyabc-venv/bin/activate (terminal prompt indicator is displayed)
deactivate when finished
deactivate
INSIDE the venv with "(easyabc)" displayed
fluidsynth - it is not clear to me if this is needed
tar -xvzf Downloads/fluidsynth-2.5.3.tar.gz (unpack the file into a folder fluidsynth-2.5.3)
cd fluidsynth-2.5.3
mkdir build
cd build
sudo apt install cmake libgtk2.0-dev libpulse-dev
cmake ..
make libfluidsynth
cp src/libfluidsynth.so* ~/easyabc
This is from https://groups.io/g/abcusers/topic/set_up_and_run_easyabc_on/110250537
sudo apt install -y --reinstall \
make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \
libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl \
git libgtk-3-dev
pip install --upgrade pip (I think this can be systemwide, not under the venv)
pip install -U pyparsing
pip install -U pygame
pip install -U wxPython
python -c "import wx; print(wx.version())"
sudo apt install abcmidi
sudo apt install abcm2ps (or v8.14.6 noted at the top of this post)
I'm not clear if these are needed, but they won't hurt anything (I don't think)
sudo apt install fluidsynth
sudo apt install fluid-soundfont-gm
Script to run EasyABC from the command line - easyabc.sh.
#!/bin/bash
source easyabc-venv/bin/activate
python ~/easyabc/easy_abc.py
deactivate
and make it executable with - chmod +x easyabc.sh
When you run easyabc.sh in a terminal, you get a bunch of warnings and maybe an error. These don't appear to be a problem.
My desktop app starter file (don't forget to make it executable). Same as the ~/.local/share/applications file extension app association file.
[Desktop Entry]
Name=EasyABC
Exec=~/easyabc.sh %f
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=~/easyabc/img/logo.ico
I have done three installs and they all worked! Three years from now, when I have to do another install, we will see.