You are not logged in.
samurai is a ninja-compatible build tool written in C99 with a focus on simplicity, speed, and portability.
_https://github.com/michaelforney/samurai
samurai - Arch Linux
_https://archlinux.org/packages/extra/x86_64/samurai/
_https://gitlab.archlinux.org/archlinux/packaging/packages/samurai
_https://gitlab.archlinux.org/archlinux/packaging/packages/samurai/-/blob/main/PKGBUILD?ref_type=heads
Install build-essential, etc.
sudo apt install build-essential debhelper dh_make fakeroot git sed tree quilt
Download sourcedir:
mkdir BUILD_SAMU
cd BUILD_SAMU
git clone https://github.com/michaelforney/samurai.git --depth 1
Install a template:
cd samurai
export DEBFULLNAME="John Frum"
dh_make --createorig -p samurai_1.9.0 -c apache -e my@mail.org -s
$ dh_auto_build --list | grep Auto-selected
Auto-selected: makefile
Create debian/samurai.install
echo -e 'LICENSE usr/share/licenses/samurai' >> debian/samurai.install
$ cat debian/samurai.install
LICENSE usr/share/licenses/samurai
Append 7 lines to debian/rules with echo command
echo -e "# For HTML docs are missing\nexport DH_ALWAYS_EXCLUDE=doc:doc-base\n# Patching Makefile with sed\noverride_dh_auto_build:\n\tsed -i -e 's/usr\/local/usr/g' Makefile\n\tdh_auto_build --\n" >> debian/rules
$ cat -A debian/rules |grep Patching -A5 -B2
# For HTML docs are missing$
export DH_ALWAYS_EXCLUDE=doc:doc-base$
# Patching Makefile with sed$
override_dh_auto_build:$
^Ised -i -e 's/usr\/local/usr/g' Makefile$
^Idh_auto_build --$
$
$ tail -7 debian/rules
# For HTML docs are missing
export DH_ALWAYS_EXCLUDE=doc:doc-base
# Patching Makefile with sed
override_dh_auto_build:
sed -i -e 's/usr\/local/usr/g' Makefile
dh_auto_build --
Edit debian/control
nano debian/control
$ cat debian/control
Source: samurai
Section: devel
Priority: optional
Maintainer: John Frum <my@mail.org>
Rules-Requires-Root: no
Build-Depends:
debhelper-compat (= 13),
Standards-Version: 4.6.2
Homepage: https://github.com/michaelforney/samurai
#Vcs-Browser: https://salsa.debian.org/debian/samurai
#Vcs-Git: https://salsa.debian.org/debian/samurai.git
Package: samurai
Architecture: amd64
Depends:
${shlibs:Depends},
${misc:Depends},
Description: samurai is a ninja-compatible build tool written in C99
• with a focus on simplicity, speed, and portability.
• samurai implements the ninja build language through version 1.9.0 except for MSVC dependency handling (deps = msvc).
• It uses the same format for .ninja_log and .ninja_deps as ninja, currently version 5 and 4 respectively.
• It is feature-complete and supports most of the same options as ninja.
Create Debian source package
dpkg-source -b .
Build Debian binary package (deb)
dpkg-buildpackage -us -uc -b
$ ls -1 ../*.deb
../samurai_1.9.0-1_amd64.deb
../samurai-dbgsym_1.9.0-1_amd64.deb
Install samurai
sudo dpkg -i ../samurai_1.9.0-1_amd64.deb
$ samu --version
1.9.0
$ man samu
Build-Depends:
$ objdump -p /usr/bin/samu | grep NEEDED
NEEDED libc.so.6
$ apt-file find /usr/lib/x86_64-linux-gnu/libc.so | grep dev
libc6-dev: /usr/lib/x86_64-linux-gnu/libc.so
Now you can build wxMaxima with the help of samurai.
A static muon is not easy to compile on Devuan, but the newest version of static muon executable with embedded samurai is already available for download.
$ ldd muon-v0.5.0-amd64-linux
not a dynamic executable
$ file muon-v0.5.0-amd64-linux
muon-v0.5.0-amd64-linux: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=1a2a3022413581300d66c86f02329ed4aa782022, stripped
Enable portable CMake 4.0.2
export PATH="$HOME/.CTools/cmake-4.0.2/bin:$PATH"
$ cmake --version
cmake version 4.0.2
1. Generate the Buildsystem
cmake -S wxmaxima -B build -G Ninja -DCMAKE_BUILD_TYPE="Release" -DCPACK_DEBIAN_PACKAGE_MAINTAINER=Daedalus -DCMAKE_INSTALL_PREFIX='/usr' -DwxWidgets_CONFIG_EXECUTABLE=/usr/bin/wx-config -DWXM_INTERPROCEDURAL_OPTIMIZATION=ON -Wno-dev
$ ls -1
build
wxmaxima
$ ls build | grep ninja
build.ninja
2. Compile wxMaxima with samu
samu -C build
3. Make a Debian package with CPack
$ ls build | grep Config.cmake
CPackConfig.cmake
CPackSourceConfig.cmake
cpack --config build/CPackConfig.cmake -G DEB
$ cpack --config build/CPackConfig.cmake -G DEB
CPack: Create package using DEB
CPack: Install projects
CPack: - Install project: wxMaxima []
CPack: Create package
CPackDeb: - Generating dependency list
CPack: - package: /home/.../wxmaxima_25.04.0-1_amd64.deb generated.
$ ls *.deb
wxmaxima_25.04.0-1_amd64.deb
Install wxMaxima
sudo dpkg -i wxmaxima_25.04.0-1_amd64.deb
$ wxmaxima --version
wxMaxima 25.04.0 (Git version: 6bc13e5)
I want to thank you, the sound is really good, everything works perfectly !
If you enjoy it, you may say thanks to the creator of the magic fftrate codec, Sergei Petrov.
_https://github.com/PetrovSE/fftrate
There is a belief that fftrate may cure deafness. It may not always work. If it does not, the victims of pulseaudio may not have any chance to regain hearing loss. It seems impossible to cure deafness: "there are no known treatments to restore hearing, because auditory hair cells in mammals, unlike those in birds or fish, do not regenerate once lost."
_https://www.hsci.harvard.edu/major-step-toward-treatment-leading-form-hearing-loss
There might be obstacles on the road to freedom. You may get problems like this:
$ dpkg-buildpackage -b
...
fatal error: toml++/toml.hpp: No such file or directory
2 | #include "toml++/toml.hpp"
To overcome this obstacle you can simply borrow "toml++/toml.hpp" from Debian testing and compile the package you need on Devuan stable. For some strange reason, this method usually works.
You can find "toml++/toml.hpp" in a Debian (testing=trixie) package:
Package: libtomlplusplus-dev (3.4.0+ds-0.2 and others)
_https://packages.debian.org/trixie/libtomlplusplus-dev
$ tree -L 4 libtomlplusplus-dev_3.4.0+ds-0.2+b1_amd64
libtomlplusplus-dev_3.4.0+ds-0.2+b1_amd64
├── DEBIAN
│ ├── control
│ └── md5sums
└── usr
├── include
│ └── toml++
│ ├── impl
│ ├── toml.h
│ └── toml.hpp
├── lib
│ └── x86_64-linux-gnu
│ ├── cmake
│ ├── libtomlplusplus.so -> libtomlplusplus.so.3
│ └── pkgconfig
└── share
├── doc
│ └── libtomlplusplus-dev
└── doc-base
└── libtomlplusplus-dev.tomlplusplus
You can download this package, and extract "usr" to a folder like this:
$HOME/.CTools/LIBS/
$HOME/.CTools/LIBS/usr/include/toml++/toml.hpp
Then you can add "$HOME/.CTools/LIBS/usr/include" to $CPLUS_INCLUDE_PATH
The secret knowledge is here:
_https://gcc.gnu.org/onlinedocs/cpp/Environment-Variables.html
It is very simple:
$ echo $CPLUS_INCLUDE_PATH
# It is empty
$ export CPLUS_INCLUDE_PATH="$HOME/.CTools/LIBS/usr/include"
Verify the INCLUDE_PATH for g++ with a secret command:
echo | gcc -Wp,-v -xc++ - -fsyntax-only
$ echo | gcc -Wp,-v -xc++ - -fsyntax-only
ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/12"
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/12/include-fixed"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/12/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/home/<YOUR USER NAME>/.CTools/LIBS/usr/include
/usr/include/c++/12
/usr/include/x86_64-linux-gnu/c++/12
/usr/include/c++/12/backward
/usr/lib/gcc/x86_64-linux-gnu/12/include
/usr/local/include
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.
Now everything works. The "fatal error" had gone away.
The question remains: why does this method work. It looks like they do not update software on Debian stable. They have restricted resources, and, of course, they have to fix problems caused by systemd, pipewire and pulseaudio.
Knowledge and ignorance—
a man who knows them both together,
Passes beyond death by ignorance,
and by knowledge attains immortality.
Isha Upanishad, Verse 12
The road to freedom is short and straightforward. Read PKGBUILs of AUR packages, and do the same on Devuan.
It doesn't always work. Sometimes it is much better with Debian sources, if you know the secret commands. Debian packaging is a sacred ritual, not a secular one. It requires initiation into secret knowledge. If you are not initiated, you are doomed to dwell in ignorance and doubt. In essence, initiation is a rite of passage marking entrance into a sort of esoteric society. In particular, it signifies a transformation in which the initiate is 'reborn' into a new role.
Step 1: Install a secret package
sudo apt-get install packaging-dev
Step 2: Download the source you need. For example:
Debian testing (Trixie)
_https://packages.debian.org/source/testing/gnuplotSource Package: gnuplot (6.0.2+dfsg1-1)
Debian Package Source Repository (Browsable)
https://salsa.debian.org/science-team/gnuplot
mkdir BUILD_GIT
cd BUILD_GIT
git clone https://salsa.debian.org/science-team/gnuplot.git --depth 1
$ ls
gnuplot
$ du -sh *
17M gnuplot
Step 3: Install "Build-Depends"
cd gnuplot
mk-build-deps
$ ls *.deb
gnuplot-build-deps_6.0.2+dfsg1-1_all.deb
Install gnuplot-build-deps*.deb
sudo dpkg -i gnuplot-build-deps_6.0.2+dfsg1-1_all.deb
You may notice a problem:
$ sudo dpkg -i gnuplot-build-deps_6.0.2+dfsg1-1_all.deb
...
dpkg: error processing package gnuplot-build-deps (--install):
dependency problems - leaving unconfigured
Fix it with a magic command:
sudo apt -f install
It may remove "emacs-gtk" and install "emacs-nox" instead. You can reinstall it later, or remove them both.
Emacs - Installation options on Linux and Lucid Emacs vs. XEmacs
_https://youtu.be/ugFtz7XOOWU?t=25s
$ mv -v gnuplot-build-deps_6.0.2+dfsg1-1_all.deb ../
Step 4: Prepare the source
Execute secret commands:
export QUILT_PATCHES=debian/patches
quilt push -a
The output on terminal should look like this:
$ quilt push -a
Applying patch 04_fix_libexecdir.diff
patching file src/Makefile.am
...
Applying patch 50_no-webp_figures-in-documentation.patch
patching file docs/Makefile.am
Now at patch 50_no-webp_figures-in-documentation.patch
Step 5: Build GnuPlot
dpkg-buildpackage -b
$ ls -1 ../*.deb
../gnuplot_6.0.2+dfsg1-1_all.deb
../gnuplot-build-deps_6.0.2+dfsg1-1_all.deb
../gnuplot-data_6.0.2+dfsg1-1_all.deb
../gnuplot-doc_6.0.2+dfsg1-1_all.deb
../gnuplot-nox_6.0.2+dfsg1-1_amd64.deb
../gnuplot-nox-dbgsym_6.0.2+dfsg1-1_amd64.deb
../gnuplot-qt_6.0.2+dfsg1-1_amd64.deb
../gnuplot-qt-dbgsym_6.0.2+dfsg1-1_amd64.deb
../gnuplot-x11_6.0.2+dfsg1-1_amd64.deb
../gnuplot-x11-dbgsym_6.0.2+dfsg1-1_amd64.deb
Step 6: Install GnuPlot
cd ../
sudo dpkg -i gnuplot_6.0.2+dfsg1-1_all.deb gnuplot-data_6.0.2+dfsg1-1_all.deb gnuplot-qt_6.0.2+dfsg1-1_amd64.deb
Step 7: Test
You can test GnuPlot with Maxima
$ maxima
(%i1) plot2d([tanh(20*sin(x))], [x,-10*%pi,10*%pi], [y,-1.1,1.1], [plot_format, gnuplot])$
(%i3) quit();
You can export plots from GnuPlot window to SVG format. It works with gnuplot-qt
Click on "Export" icon (the top left corner of GnuPlot window), and select "Export to SVG" in drop down menu.
Doing Graphics with Maxima - Maxima Tutorial
http://www.bildungsgueter.de/MaximaEN/Pages/GraphicsSurvey01.htm
$ inxi -b | grep Host -A1 Host: devuan Kernel: 6.1.0-34-amd64 arch: x86_64 bits: 64 Desktop: MATE v: 1.26.0 Distro: Devuan GNU/Linux 5 (daedalus)
NOTE: It is "portable standalone" in the sense that it does not require installation.
Just click on it and use. You can also start it from terminal, or create a deskto launcher wxMaxima.desktop
$ ./_CPack_Packages/Linux/DEB/wxMaxima-25.04.0-Linux/usr/bin/wxmaxima --version
wxMaxima 25.04.0 (Git version: 735a94e3a)
_https://github.com/wxMaxima-developers/wxmaxima/releases/tag/Version-25.04.0
wxMaxima 25.04.0 Latest
A bugfix releasehttps://github.com/wxMaxima-developers/wxmaxima.git
Build dependencies
To build wxMaxima-25.04.0.deb, we need CMake 4.0.1
There is a portable standalone version of CMake 4.0.1 in GitHub.
The manual for it is here:https://dev1galaxy.org/viewtopic.php?id=7161
You can simply download and unpack it into your home folder, for example:
$ ls -1 $HOME/.CTools/ cmake-4.0.1 meson-1.7.2
Download portable CMake v4.0.1:
https://github.com/Kitware/CMake/releases/download/v4.0.1/cmake-4.0.1-linux-x86_64.tar.gz
Install "build-essential", build dependencies, etc.:
sudo apt install build-essential debhelper sudo apt install libwxgtk3.2-dev xvfb netcat-openbsd xauth desktop-file-utils appstream-util libwxgtk-webview3.2-dev libwebkit2gtk-4.0-dev sudo apt install fakeroot dpkg-repack git sed tree maxima appstream pandoc po4a imagemagick doxygen texlive-xetex
Clone the source from git:
mkdir wxmaxima2504_build
cd wxmaxima2504_build
git clone https://github.com/wxmaxima-developers/wxmaxima.git
$ ls
wxmaxima
Project: wxMaxima-25.04.0 (GitHub)
Create DEB_config.cmake
nano ./wxmaxima/DEB_config.cmake
$ cat ./wxmaxima/DEB_config.cmake
# these are cache variables, so they could be overwritten with -D,
set(CPACK_PACKAGE_NAME ${PROJECT_NAME}
CACHE STRING "The resulting package name"
)
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJECT_DESCRIPTION}
CACHE STRING "Package description for the package metadata"
)
set(CPACK_VERBATIM_VARIABLES TRUE)
set(CPACK_PACKAGING_INSTALL_PREFIX "/usr")
set(CPACK_PACKAGE_VERSION "${WXMAXIMA_VERSION}")
set(CPACK_DEBIAN_PACKAGE_RELEASE "1")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER Devuan
CACHE STRING "Package MAINTAINER"
)
# AUTO-Deps: autogenerate dependency information
set (CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
list(APPEND CPACK_DEBIAN_PACKAGE_DEPENDS maxima)
set(CPACK_DEBIAN_PACKAGE_RECOMMENDS "maxima-doc, fonts-inter, fonts-inter-variable, fonts-texgyre, fonts-texgyre-math, fonts-dejavu")
set(CPACK_DEBIAN_PACKAGE_SUGGESTS "fonts-jsmath, texlive-latex-extra, ibus-gtk3")
set(CPACK_DEBIAN_PACKAGE_SECTION math)
set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
# set(CPACK_SOURCE_GENERATOR "TBZ2;TGZ;TXZ;TZ")
list(APPEND CPACK_SOURCE_IGNORE_FILES "/\.git*")
include(CPack)
Find the "CMakeLists" of the main project:
$ ls ./wxmaxima | grep CMakeLists
CMakeLists.txt
To enable the DEB_config.cmake in the main project, append these lines:
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
include(DEB_config.cmake)
to the end of the file ./wxmaxima/CMakeLists.txt. This can be done with a text editor, or echo command:
$ echo -e '\n\nset(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})\ninclude(DEB_config)' >> ./wxmaxima/CMakeLists.txt
$ tail -3 ./wxmaxima/CMakeLists.txt
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
include(DEB_config)
Enable portable CMake 4.0.1
$ cmake --version
cmake version 3.25.1
export PATH="$HOME/.CTools/cmake-4.0.1/bin:$PATH"
$ cmake --version
cmake version 4.0.1
1. Generate the Project Buildsystem
cmake -S wxmaxima -B build -DCMAKE_BUILD_TYPE="Release" -DCPACK_DEBIAN_PACKAGE_MAINTAINER=Daedalus -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_CXX_STANDARD=14 -DCMAKE_CXX_COMPILER=g++ -DwxWidgets_CONFIG_EXECUTABLE=/usr/bin/wx-config -Wno-dev
$ ls -1
build
wxmaxima
2. Build the Project
cmake --build build
3. Make the Debian package with CPack
$ ls ./build | grep Config.cmake
CPackConfig.cmake
CPackSourceConfig.cmake
$ cpack --config build/CPackConfig.cmake -G DEB
CPack: Create package using DEB
CPack: Install projects
CPack: - Run preinstall target for: wxMaxima
CPack: - Install project: wxMaxima []
CPack: Create package
CPackDeb: - Generating dependency list
CPack: - package: /home/.../wxmaxima2504_build/wxmaxima_25.04.0-1_amd64.deb generated.
Generate the source package with CPack
$ cpack -G TGZ -DCPACK_PACKAGING_INSTALL_PREFIX="/" --config build/CPackSourceConfig.cmake
CPack: Create package using TGZ
CPack: Install projects
CPack: - Install directory: /home/igor/Desktop/Builds/Builds_wxMaxima/Build_wxmaxima_25.01.0_GIT/wxmaxima2504_build/wxmaxima
CPack: Create package
CPack: - package: /home/.../wxmaxima2504_build/wxMaxima-25.04.0-Source.tar.gz generated.
$ ls -1
build
_CPack_Packages
wxmaxima
wxmaxima_25.04.0-1_amd64.deb
wxMaxima-25.04.0-Source.tar.gz
$ dpkg-deb -f *.deb
Architecture: amd64
Depends: maxima, libc6 (>= 2.34), libgcc-s1 (>= 3.0), libstdc++6 (>= 11), libwxbase3.2-1 (>= 3.2.2+dfsg), libwxgtk-webview3.2-1 (>= 3.2.2+dfsg), libwxgtk3.2-1 (>= 3.2.1+dfsg-2)
Description: wxMaxima is a document based interface for the computer algebra system Maxima.
Homepage: https://wxmaxima-developers.github.io/wxmaxima/
Maintainer: Daedalus
Package: wxmaxima
Priority: optional
Recommends: maxima-doc, fonts-inter, fonts-inter-variable, fonts-texgyre, fonts-texgyre-math, fonts-dejavu
Section: math
Suggests: fonts-jsmath, texlive-latex-extra, ibus-gtk3
Version: 25.04.0-1
Installed-Size: 15154
Install wxMaxima
sudo dpkg -i wxmaxima_25.04.0-1_amd64.deb
$ wxmaxima --version
wxMaxima 25.04.0 (Git version: 735a94e3a)
$ apt show wxmaxima
Package: wxmaxima
Version: 25.04.0-1
Status: install ok installed
Priority: optional
Section: math
Maintainer: Daedalus
Installed-Size: 15.5 MB
Depends: maxima, libc6 (>= 2.34), libgcc-s1 (>= 3.0), libstdc++6 (>= 11), libwxbase3.2-1 (>= 3.2.2+dfsg), libwxgtk-webview3.2-1 (>= 3.2.2+dfsg), libwxgtk3.2-1 (>= 3.2.1+dfsg-2)
Recommends: maxima-doc, fonts-inter, fonts-inter-variable, fonts-texgyre, fonts-texgyre-math, fonts-dejavu
Suggests: fonts-jsmath, texlive-latex-extra, ibus-gtk3
Homepage: https://wxmaxima-developers.github.io/wxmaxima/
Download-Size: unknown
APT-Manual-Installed: yes
APT-Sources: /var/lib/dpkg/status
Description: wxMaxima is a document based interface for the computer algebra system Maxima.
The project directory wxmaxima2504_build:
$ ls -1
build
_CPack_Packages
wxmaxima
wxmaxima_25.04.0-1_amd64.deb
wxMaxima-25.04.0-Source.tar.gz
./_CPack_Packages/Linux/DEB/wxMaxima-25.04.0-Linux/usr/bin/wxmaxima
Just click on it and use.
$ ./_CPack_Packages/Linux/DEB/wxMaxima-25.04.0-Linux/usr/bin/wxmaxima --version
wxMaxima 25.04.0 (Git version: 735a94e3a)
It should work on any Linux with "NEEDED" shared libraries installed:
$ readelf --dynamic ./_CPack_Packages/Linux/DEB/wxMaxima-25.04.0-Linux/usr/bin/wxmaxima | grep NEEDED
0x0000000000000001 (NEEDED) Shared library: [libwx_gtk3u_richtext-3.2.so.0]
0x0000000000000001 (NEEDED) Shared library: [libwx_gtk3u_aui-3.2.so.0]
0x0000000000000001 (NEEDED) Shared library: [libwx_gtk3u_webview-3.2.so.0]
0x0000000000000001 (NEEDED) Shared library: [libwx_baseu_net-3.2.so.0]
0x0000000000000001 (NEEDED) Shared library: [libwx_baseu_xml-3.2.so.0]
0x0000000000000001 (NEEDED) Shared library: [libwx_gtk3u_core-3.2.so.0]
0x0000000000000001 (NEEDED) Shared library: [libwx_baseu-3.2.so.0]
0x0000000000000001 (NEEDED) Shared library: [libstdc++.so.6]
0x0000000000000001 (NEEDED) Shared library: [libm.so.6]
0x0000000000000001 (NEEDED) Shared library: [libgcc_s.so.1]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
$ readelf --dynamic ./_CPack_Packages/Linux/DEB/wxMaxima-25.04.0-Linux/usr/bin/wxmaxima | grep NEEDED | sort | uniq -u | sed -e 's/ /\n/g' | sed -n '/\[l/p' | sed -e 's/\]/ /g' | sed -e 's/\[//g' | tee wxMaxima-git_DEPs_libs.txt
libc.so.6
libgcc_s.so.1
libm.so.6
libstdc++.so.6
libwx_baseu-3.2.so.0
libwx_baseu_net-3.2.so.0
libwx_baseu_xml-3.2.so.0
libwx_gtk3u_aui-3.2.so.0
libwx_gtk3u_core-3.2.so.0
libwx_gtk3u_richtext-3.2.so.0
libwx_gtk3u_webview-3.2.so.0
You can verify all dependencies, for example:
$ apt-file search libwx_gtk3u_richtext-3.2.so.0
libwxgtk3.2-1: /usr/lib/x86_64-linux-gnu/libwx_gtk3u_richtext-3.2.so.0
libwxgtk3.2-1: /usr/lib/x86_64-linux-gnu/libwx_gtk3u_richtext-3.2.so.0.2.0
$ apt info wxmaxima | grep Depends
Depends: maxima, libc6 (>= 2.34), libgcc-s1 (>= 3.0), libstdc++6 (>= 11), libwxbase3.2-1 (>= 3.2.2+dfsg), libwxgtk-webview3.2-1 (>= 3.2.2+dfsg), libwxgtk3.2-1 (>= 3.2.1+dfsg-2)
Notice that wxMaxima is a GUI for Maxima. It does depends on Maxima, in this sense.
$ copyq --version
CopyQ Clipboard Manager 10.0.0
Qt: 5.15.8
KNotifications: 5.103.0
Compiler: GCC
Arch: x86_64-little_endian-lp64
OS: Devuan GNU/Linux 5 (daedalus)
$ copyq
Warning: [default] QtWarning: QSystemTrayIcon::setVisible: No Icon set
^C
$ copyq --start-server
$ dpkg -L copyq | grep desktop
/usr/share/applications/com.github.hluk.copyq.desktop
$ cat /usr/share/applications/com.github.hluk.copyq.desktop | grep Exec
Exec=copyq --start-server show
Workaround (start copyq in the tray):
Exec=bash -c 'killall copyq -wq; copyq --start-server &'
@Khylsdrak
CopyQ might be useful, although its manual (man copyq) seems misleading
_https://github.com/hluk/CopyQ/issues/225#issuecomment-1925401588
$ cat ~/.config/autostart/copyq-autostart.desktop
[Desktop Entry]
Type=Application
Exec=/usr/bin/copyq --start-server
Hidden=false
Name[en_US]=CopyQ autostart
Name=CopyQ
Comment[en_US]=Advanced clipboard manager
Comment=Advanced clipboard manager
# Workaround / fix for issue #1526 that prevents a proper autostart of the tray icon in GNOME
X-MATE-Autostart-Delay=3
cat /usr/share/applications/com.github.hluk.copyq.desktop | grep Desktop -A15
EDIT:
Create a new Desktop launcher for CopyQ with a text editor (nano or mousepad):
nano ~/.local/share/applications/copyq.desktop
mousepad ~/.local/share/applications/copyq.desktop
$ cat ~/.local/share/applications/copyq.desktop
[Desktop Entry]
Name=CopyQ
# Start CopyQ in the tray / Workaround for MATE Desktop
Exec=bash -c 'copyq && copyq exit && copyq --start-server' 2>/dev/null
# Exec=copyq --start-server show
Icon=copyq
GenericName=Clipboard Manager
# Workaround / fix for issue #1526 that prevents a proper autostart of the tray icon in GNOME
X-GNOME-Autostart-Delay=3
# The rest is taken from Klipper application.
Type=Application
Terminal=false
X-KDE-autostart-after=panel
X-KDE-StartupNotify=false
X-KDE-UniqueApplet=true
Categories=Qt;KDE;Utility;
Comment=A cut & paste history utility
Name[en_US]=CopyQ-fixed
mkdir wxmaxima_build
cd wxmaxima_build
git clone https://github.com/wxmaxima-developers/wxmaxima.git
$ ls
wxmaxima
Project: wxMaxima 25.01.0-DevelopmentSnapshot (git)
Create a sort of config for "CPack DEB Generator" with a text editor you like
nano ./wxmaxima/Packing.cmake
$ cat ./wxmaxima/Packing.cmake
# these are cache variables, so they could be overwritten with -D,
set(CPACK_PACKAGE_NAME ${PROJECT_NAME}
CACHE STRING "The resulting package name"
)
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJECT_DESCRIPTION}
CACHE STRING "Package description for the package metadata"
)
set(CPACK_DEBIAN_PACKAGE_MAINTAINER Devuan
CACHE STRING "Package MAINTAINER"
)
set(CPACK_PACKAGING_INSTALL_PREFIX "/usr")
set(CPACK_PACKAGE_VERSION "${WXMAXIMA_VERSION}-Devuan5")
set(CPACK_DEBIAN_PACKAGE_RELEASE "1")
# AUTO-Deps: autogenerate dependency information
set (CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
list(APPEND CPACK_DEBIAN_PACKAGE_DEPENDS maxima)
set(CPACK_DEBIAN_PACKAGE_RECOMMENDS "maxima-doc, fonts-inter, fonts-inter-variable, fonts-texgyre, fonts-texgyre-math, fonts-dejavu")
set(CPACK_DEBIAN_PACKAGE_SUGGESTS "fonts-jsmath, texlive-latex-extra, ibus-gtk3")
set(CPACK_DEBIAN_PACKAGE_SECTION math)
set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
# set(CPACK_SOURCE_GENERATOR "TBZ2;TGZ;TXZ;TZ")
set(CPACK_SOURCE_GENERATOR "TGZ")
set(CPACK_SOURCE_IGNORE_FILES
\\.git/
build/
".*~$"
)
set(CPACK_VERBATIM_VARIABLES YES)
include(CPack)
Find the config of the main project:
$ find . -maxdepth 2 -name 'CMakeLists*'
./wxmaxima/CMakeLists.txt
$ ls ./wxmaxima | grep CMakeLists
CMakeLists.txt
To enable the GPac config (Packing.cmake) in the config of the main project, append a "magic code"
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
include(Packing)
to the end of the file ./wxmaxima/CMakeLists.txt. This can be done with a text editor, or echo command:
$ echo -e '\n\nset(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})\ninclude(Packing)' >> ./wxmaxima/CMakeLists.txt
$ tail -3 ./wxmaxima/CMakeLists.txt
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
include(Packing)
Enable CMake 4.0.1
$ cmake --version
cmake version 3.25.1
export PATH="$HOME/.CTools/cmake-4.0.1/bin:$PATH"
$ cmake --version
cmake version 4.0.1
1. Generate the Project Buildsystem
cmake \
-S wxmaxima \
-B build \
-DCMAKE_BUILD_TYPE=None \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_CXX_STANDARD=14 \
-DCMAKE_CXX_COMPILER=g++ \
-DwxWidgets_CONFIG_EXECUTABLE=/usr/bin/wx-config \
-Wno-dev
$ ls -1
build
wxmaxima
2. Build the Project
cmake --build build
3. Make the Debian package of wxMaxima with CPack
$ ls ./build | grep Config.cmake
CPackConfig.cmake
CPackSourceConfig.cmake
$ cpack --config build/CPackConfig.cmake -G DEB
CPack: Create package using DEB
CPack: Install projects
CPack: - Run preinstall target for: wxMaxima
CPack: - Install project: wxMaxima []
CPack: Create package
CPackDeb: - Generating dependency list
CPack: - package: /home/.../wxmaxima_build/wxmaxima_25.01.0-DevelopmentSnapshot-Devuan5-1_amd64.deb generated.
Generate the source package of wxMaxima with CPack
$ cpack --config build/CPackSourceConfig.cmake
CPack: Create package using TGZ
CPack: Install projects
CPack: - Install directory: /home/.../wxmaxima_build/wxmaxima
CPack: Create package
CPack: - package: /home/.../wxmaxima_build/wxMaxima-25.01.0-DevelopmentSnapshot-Devuan5-Source.tar.gz generated.
$ ls -1
build
_CPack_Packages
wxmaxima
wxmaxima_25.01.0-DevelopmentSnapshot-Devuan5-1_amd64.deb
wxMaxima-25.01.0-DevelopmentSnapshot-Devuan5-Source.tar.gz
$ dpkg-deb -f *.deb
Architecture: amd64
Depends: maxima, libc6 (>= 2.34), libgcc-s1 (>= 3.0), libstdc++6 (>= 11), libwxbase3.2-1 (>= 3.2.2+dfsg), libwxgtk-webview3.2-1 (>= 3.2.2+dfsg), libwxgtk3.2-1 (>= 3.2.1+dfsg-2)
Description: wxMaxima is a document based interface for the computer algebra system Maxima.
Homepage: https://wxmaxima-developers.github.io/wxmaxima/
Maintainer: Devuan
Package: wxmaxima
Priority: optional
Recommends: maxima-doc, fonts-inter, fonts-inter-variable, fonts-texgyre, fonts-texgyre-math, fonts-dejavu
Section: math
Suggests: fonts-jsmath, texlive-latex-extra, ibus-gtk3
Version: 25.01.0-DevelopmentSnapshot-Devuan5-1
Installed-Size: 15532
Install wxMaxima
sudo dpkg -i wxmaxima_25.01.0-DevelopmentSnapshot-Devuan5-1_amd64.deb
$ apt show wxmaxima
Package: wxmaxima
Version: 25.01.0-DevelopmentSnapshot-Devuan5-1
Status: install ok installed
Priority: optional
Section: math
Maintainer: Devuan
Installed-Size: 15.9 MB
Depends: maxima, libc6 (>= 2.34), libgcc-s1 (>= 3.0), libstdc++6 (>= 11), libwxbase3.2-1 (>= 3.2.2+dfsg), libwxgtk-webview3.2-1 (>= 3.2.2+dfsg), libwxgtk3.2-1 (>= 3.2.1+dfsg-2)
Recommends: maxima-doc, fonts-inter, fonts-inter-variable, fonts-texgyre, fonts-texgyre-math, fonts-dejavu
Suggests: fonts-jsmath, texlive-latex-extra, ibus-gtk3
Homepage: https://wxmaxima-developers.github.io/wxmaxima/
Download-Size: unknown
APT-Manual-Installed: yes
APT-Sources: /var/lib/dpkg/status
Description: wxMaxima is a document based interface for the computer algebra system Maxima.
N: There is 1 additional record. Please use the '-a' switch to see it
Some bugs become visible, if you try a dark theme for wxMaxima worksheets.
A workaround is to disable "Intelligently hide cell brackets"wxMaxima → Edit → Configure → Worksheet: Disable (uncheck) "Intelligently hide cell brackets"
You may also try:
wxMaxima → View → "Invert worksheet brightness"
wxMaxima is a GUI for maxima. If maxima fails to work (as it usually happens on Fedora), wxMaxima does not react on maxima commands (e.g., 1 + 1). The Fedora users, of course, cannot understand what is going on. This is, largely because, perhaps, there are pipewire/pulseaudio users.
You may want to test maxima before testing wxMaxima. To open Maxima Shell, type the command maxima in the command-line terminal.
$ maxima Maxima 5.46.0 https://maxima.sourceforge.io using Lisp GNU Common Lisp (GCL) GCL 2.6.14 git tag Version_2_6_15pre3 Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. The function bug_report() provides bug reporting information. (%i1) A: (x-2)*(x-3); (%o1) (x - 3) (x - 2) (%i2) B: expand(A); 2 (%o2) x - 5 x + 6 (%i3) solve(B,x); (%o3) [x = 3, x = 2] (%i4) factor(B); (%o4) (x - 3) (x - 2) (%i5) subst(x=3,B); (%o5) 0 (%i6) subst(x=2,B); (%o6) 0 (%i7) quit();
Perhaps, mathematical knowledge may help to understand the problems of digital sound processing (e.g., resampling), but it may not liberate from ignorance. The cult of pulseaudio is a sort of Cargo cult, and therefore, it is doomed to persist despite any failures to materialize utopian dreams. If the particular "advanced projects" failed, the ends are still valid, and the dream as a vehicle of truth stays unimpaired. The "myth-dream" of the cult is, in essence, a self-generating "objective truth". The "myth-dream" of "advanced Linux sound system" will inevitably produce new sorts of pulseaudio/pipewire and other "advanced crap". The problem is that such myths generate the true knowledge which emerges as an imperative to action. The Cargo cult persists because it fails to fulfill its ends. The cult of systemd is the same thing.
In the context of Cargo the myth-dream is truth, and, moreover, the several truths contained in the myth-dream emerge as imperatives. Ideally, the task of the charismatic figure can be seen as an attempt to realize these imperatives in action. (Kenelm Burridge, Mambu (1960). pp. 249-250).
Mirage is very light and good
$ apt show mirage
Package: mirage
Version: 0.11.1-1+b6
The version number is telling.
$ mirage
(mirage:13910): Gtk-CRITICAL **: 17:26:25.051: gtk_buildable_add_child: assertion 'iface->add_child != NULL' failed
(mirage:13910): Gtk-CRITICAL **: 17:26:25.085: gtk_buildable_add_child: assertion 'iface->add_child != NULL' failed
One may want to install the "DevelopmentSnapshot" of wxMaxima, because the "stable versions" of wxMaxima (available in Devuan/Debian repositories) are so buggy that they are impossible to use.
The "DevelopmentSnapshot" of wxMaxima seems to work on Devuan 5 Daedalus. It looks usable, although, of course, there still a lot of bugs.
The package of wxMaxima (DevelopmentSnapshot) is available in Arch Linux AUR repository:
_https://aur.archlinux.org/packages/wxmaxima
_https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=wxmaxima
Therefore, it is not difficult to build a Debian package of the "DevelopmentSnapshot".
$ inxi -b | grep Host -A1
Host: devuan Kernel: 6.1.0-33-amd64 arch: x86_64 bits: 64 Desktop: MATE
v: 1.26.0 Distro: Devuan GNU/Linux 5 (daedalus)
Install "build-essential", build dependencies, etc.:
sudo apt install build-essential debhelper
sudo apt install libwxgtk3.2-dev xvfb netcat-openbsd xauth desktop-file-utils appstream-util libwxgtk-webview3.2-dev libwebkit2gtk-4.0-dev
sudo apt install fakeroot dpkg-repack git sed tree maxima appstream pandoc po4a imagemagick doxygen texlive-xetex
man CMake
_https://cmake.org/cmake/help/latest/manual/cmake.1.html
Creating debian packages — CMake
_https://karthikkalyanaraman.medium.com/creating-debian-packages-cmake-e519a0186e87
Download portable CMake v4.0.1:
https://github.com/Kitware/CMake/releases/download/v4.0.1/cmake-4.0.1-linux-x86_64.tar.gz
The manual for portable CMake is here:
https://dev1galaxy.org/viewtopic.php?id=7161
Clone the source from git:
mkdir Build_wxmaxima_25.01.0_GIT
cd Build_wxmaxima_25.01.0_GIT
git clone https://github.com/wxmaxima-developers/wxmaxima.git
$ ls
wxmaxima
$ cmake --version
cmake version 3.25.1
export PATH="$HOME/.CTools/cmake-4.0.1/bin:$PATH"
$ cmake --version
cmake version 4.0.1
1. Generate the Project Buildsystem
cmake \
-S wxmaxima \
-B build \
-DCMAKE_BUILD_TYPE=None \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_CXX_STANDARD=14 \
-DCMAKE_CXX_COMPILER=g++ \
-DwxWidgets_CONFIG_EXECUTABLE=/usr/bin/wx-config \
-Wno-dev
$ ls -1
build
wxmaxima
2. Build the Project
cmake --build build
3. Install wxMaxima to a sub-folder "WXMDIR"
DESTDIR="WXMDIR" cmake --install build
$ ls -1
build
wxmaxima
WXMDIR
$ du -sh WXMDIR
16M WXMDIR
$ du -s WXMDIR
15752 WXMDIR
$ tree -a -L 3 WXMDIR
WXMDIR
└── usr
├── bin
│ └── wxmaxima
└── share
├── applications
├── bash-completion
├── doc
├── icons
├── locale
├── man
├── metainfo
├── mime
├── pixmaps
└── wxMaxima
Open fakeroot console:
$ fakeroot
# mkdir -pv ./WXMDIR/DEBIAN
mkdir: created directory './WXMDIR/DEBIAN'
Create "DEBIAN/control":
# nano ./WXMDIR/DEBIAN/control
# cat ./WXMDIR/DEBIAN/control
Package: wxmaxima
Version: 25.01.0-1
Architecture: amd64
Maintainer: $USER
Installed-Size: 16M (≈15752)
Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.0), libstdc++6 (>= 11), libwxbase3.2-1 (>= 3.2.2+dfsg), libwxgtk-webview3.2-1 (>= 3.2.2+dfsg), libwxgtk3.2-1 (>= 3.2.1+dfsg-2), maxima
Recommends: maxima-doc, fonts-inter, fonts-inter-variable
Suggests: fonts-jsmath, texlive-latex-extra, ibus-gtk3
Section: math
Priority: optional
Homepage: http://wxmaxima-developers.github.io/wxmaxima/
Description: GUI for the computer algebra system Maxima
wxMaxima is a graphical user interface for the computer algebra system
Maxima. It eases the use of Maxima by making most of its commands available
through a menu system and by providing input dialogs for commands that
require more than one argument. It also implements its own display engine
that outputs mathematical symbols directly instead of depicting them with
ASCII characters.
.
wxMaxima also features 2D and 3D inline plots, simple animations, mixing of
text and mathematical calculations to create documents, exporting of input
and output to TeX, and a browser for Maxima's manual including command index
and full text searching.
Source: https://github.com/wxMaxima-developers/wxmaxima
Generate DEBIAN/md5sums
# cd WXMDIR
# find . -type f -not -path "./DEBIAN/*" -exec md5sum {} + | sort -k 2 | sed 's/\.\/\(.*\)/\1/' > DEBIAN/md5sums
# ls -1 DEBIAN
control
md5sums
# cd ../
Build the Debian package:
# dpkg-deb -b WXMDIR wxmaxima_25.01.0-1-devuan5_amd64-git.deb
dpkg-deb: building package 'wxmaxima' in 'wxmaxima_25.01.0-1-devuan5_amd64-git.deb'.
# ls *.deb
wxmaxima_25.01.0-1-devuan5_amd64-git.deb
Exit fakeroot console
# exit
exit
Check the "info":
$ dpkg --info *git.deb
new Debian package, version 2.0.
size 4236464 bytes: control archive=928 bytes.
1249 bytes, 24 lines control
Package: wxmaxima
Version: 25.01.0-1
Architecture: amd64
...
sudo dpkg -i wxmaxima_25.01.0-1-devuan5_amd64-git.deb
$ wxmaxima --version
wxMaxima 25.01.0-DevelopmentSnapshot (Git version: 8de10d448)
$ apt info wxmaxima
Package: wxmaxima
Version: 25.01.0-1
Status: install ok installed
...
dpkg-repack
DESCRIPTION dpkg-repack creates a .deb file out of a Debian package that has already been installed on your system. If any changes have been made to the package while it was unpacked (e.g. conffiles files in /etc modified), the new package will inherit the changes. (There are exceptions to this, including changes to configuration files that are not conffiles, including those managed by ucf(1).) This utility can make it easy to copy packages from one computer to another, or to recreate packages that are installed on your system, but no longer available elsewhere. Note: dpkg-repack will place the created package in the current directory.
It can create a Debian package from the installed one (e.g. wxMaxima)
$ dpkg -l | grep wxmaxima
ii wxmaxima 25.01.0-1 amd64 GUI for the computer algebra system Maxima
$ fakeroot -u dpkg-repack wxmaxima
dpkg-deb: building package 'wxmaxima' in './wxmaxima_25.01.0-1_amd64.deb'.
$ ls
wxmaxima_25.01.0-1_amd64.deb
Extract "control-information" from the package:
$ dpkg-deb -e wxmaxima_25.01.0-1_amd64.deb
$ ls -1
DEBIAN
wxmaxima_25.01.0-1_amd64.deb
$ tree -a DEBIAN
DEBIAN
├── control
└── md5sums
See also:
Recreate Debian Binary Packages That Are Already Installed On A System
_https://ostechnix.com/recreate-debian-binary-packages-that-are-already-installed-on-a-system/
Creating debian packages — CMake
_https://karthikkalyanaraman.medium.com/creating-debian-packages-cmake-e519a0186e87
There is a belief that knowledge liberates from ignorance. Perhaps, wxMaxima may help semi-deaf Linux users to understand something about resampling and the Gibbs phenomenon. Although, of course, mathematics might be a problem, because pulseaudio is likely to damage the brain in a severe and irreversible manner. Hearing loss and dementia are doomed to follow.
Hearing Loss and Dementia | The Audiology Center
_https://www.myaudiologycenter.com/untreated-hearing-loss-risks-and-dementia/
_https://en.wikipedia.org/wiki/Maxima_(software)
Maxima is a powerful software package for performing computer algebra calculations in mathematics and the physical sciences._https://en.wikipedia.org/wiki/Maxima_(software)#Interfaces
wxMaxima is high-quality graphical front-end using the wxWidgets framework. wxMaxima provides a cell structure similar to the Mathematica notebook.[Wikibooks] Maxima
_https://en.wikibooks.org/wiki/MaximaMaxima by Example
_https://home.csulb.edu/~woollett/mbe.html
_https://home.csulb.edu/~woollett/index.html
$ inxi -b | grep Host -A1
Host: devuan Kernel: 6.1.0-33-amd64 arch: x86_64 bits: 64 Desktop: MATE
v: 1.26.0 Distro: Devuan GNU/Linux 5 (daedalus)
Source Package: wxmaxima (24.02.1-1)
_https://packages.debian.org/source/testing/wxmaxima
Download wxMaxima:
wxmaxima_24.02.1-1.dsc
wxmaxima_24.02.1.orig.tar.gz
wxmaxima_24.02.1.orig.tar.gz.asc
wxmaxima_24.02.1-1.debian.tar.xz
Source: wxmaxima
Build-Depends: debhelper-compat (= 13), cmake (>= 3.4) | cmake3, libwxgtk3.2-dev, xvfb, netcat-openbsd, xauth, desktop-file-utils, appstream-util, libwxgtk-webview3.2-dev
To build wxmaxima (24.02.1-1), we need cmake (>= 3.4).
$ cmake --version
cmake version 3.25.1
CMake v4.0.1
https://github.com/Kitware/CMake/releases/tag/v4.0.1
Download portable CMake v4.0.1:
https://github.com/Kitware/CMake/releases/download/v4.0.1/cmake-4.0.1-linux-x86_64.tar.gz
$ ls
cmake-4.0.1-linux-x86_64.tar.gz
mkdir -v $HOME/.CTools
tar -zxvf cmake*.tar.gz -C $HOME/.CTools
$ ls $HOME/.CTools
cmake-4.0.1-linux-x86_64
mv $HOME/.CTools/cmake-4.0.1-linux-x86_64 $HOME/.CTools/cmake-4.0.1
$ ls $HOME/.CTools/
cmake-4.0.1
$ ls -1 $HOME/.CTools/cmake-4.0.1
bin
doc
man
share
You can open a file manager in the cmake folder and investigate the content
caja $HOME/.CTools/cmake-4.0.1
How to use portable CMake v4.0.1
export PATH="$HOME/.CTools/cmake-4.0.1/bin:$PATH"
$ cmake --version cmake version 4.0.1
Install compilers, build dependencies, etc.:
sudo apt install build-essential debhelper libwxgtk3.2-dev xvfb netcat-openbsd xauth desktop-file-utils appstream-util libwxgtk-webview3.2-dev
You may want to install devscripts and a sort of AI assistant:
sudo apt install devscripts command-not-found
sudo update-command-not-found
EXAMPLES:
$ mmk-build-deps
Command 'mmk-build-deps' not found, did you mean:
command 'mk-build-deps' from deb devscripts
Try: sudo apt install <deb name>
$ gbp
Command 'gbp' not found, but can be installed with:
sudo apt install git-buildpackage
Now we can build wxMaxima.
$ ls -1
wxmaxima_24.02.1-1.debian.tar.xz
wxmaxima_24.02.1-1.dsc
wxmaxima_24.02.1.orig.tar.gz
wxmaxima_24.02.1.orig.tar.gz.asc
Unpack the source:
dpkg-source -x *.dsc
$ ls -1
wxmaxima-24.02.1
wxmaxima_24.02.1-1.debian.tar.xz
wxmaxima_24.02.1-1.dsc
wxmaxima_24.02.1.orig.tar.gz
wxmaxima_24.02.1.orig.tar.gz.asc
Change to the source directory:
cd wxmaxima-24.02.1
$ cmake --version
cmake version 3.25.1
export PATH="$HOME/.CTools/cmake-4.0.1/bin:$PATH"
$ cmake --version
cmake version 4.0.1
We have all the dependencies needed to build wxMaxima.
But, formally, the "Build-Depends" are not satisfied.
Therefore, we have to use -d flag to override the default checking procedure.
Verify whether the terminal prompt is in the source directory:
$ pwd
/home/.../Builds/Build_wxmaxima_24.02.1-1/wxmaxima-24.02.1
Build wxMaxima (use -d flag to override):
$ dpkg-buildpackage -us -uc -b -d
...
dpkg-deb: building package 'wxmaxima-dbgsym' in '../wxmaxima-dbgsym_24.02.1-1_amd64.deb'.
dpkg-deb: building package 'wxmaxima' in '../wxmaxima_24.02.1-1_amd64.deb'.
dpkg-genbuildinfo --build=binary -O../wxmaxima_24.02.1-1_amd64.buildinfo
dpkg-genchanges --build=binary -O../wxmaxima_24.02.1-1_amd64.changes
dpkg-genchanges: info: binary-only upload (no source code included)
dpkg-source --after-build .
dpkg-buildpackage: info: binary-only upload (no source included)
$ cd ../
[$ ls -1 *.deb
wxmaxima_24.02.1-1_amd64.deb
wxmaxima-dbgsym_24.02.1-1_amd64.deb
$ dpkg-deb --info wxmaxima_24.02.1-1_amd64.deb | grep Package: -A11
Package: wxmaxima
Version: 24.02.1-1
Architecture: amd64
Maintainer: Gunter Königsmann <wxmaxima@physikbuch.de>
Installed-Size: 14144
Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.0), libstdc++6 (>= 11), libwxbase3.2-1 (>= 3.2.2+dfsg), libwxgtk-webview3.2-1 (>= 3.2.2+dfsg), libwxgtk3.2-1 (>= 3.2.1+dfsg-2), maxima
Recommends: maxima-doc
Suggests: fonts-jsmath, texlive-latex-extra, ibus-gtk3
Section: math
Priority: optional
Homepage: http://wxmaxima-developers.github.io/wxmaxima/
Description: GUI for the computer algebra system Maxima
Install wxMaxima
sudo dpkg -i wxmaxima_24.02.1-1_amd64.deb
$ apt show wxmaxima | grep Package: -A2
Package: wxmaxima
Version: 24.02.1-1
Status: install ok installed
$ whereis wxmaxima
wxmaxima: /usr/bin/wxmaxima /usr/share/man/man1/wxmaxima.1.gz
$ wxmaxima --version
wxMaxima 24.02.1
You may want to install gnuplot
sudo apt install gnuplot
[Linux Magazine]
LibreOffice vs OpenOffice
The Clear Choice
By Bruce ByfieldWhile LibreOffice and OpenOffice have a shared past, LibreOffice outstrips OpenOffice in contributors, code commits, and features.
A search for comparisons of LibreOffice and Apache OpenOffice returns over 8.3 million results. That number comes as no surprise, given that LibreOffice and OpenOffice are the best-known open source office suites and share a common past. However, what is surprising is how shallow many of those comparisons are. Many offer only a superficial glimpse at either office suite from the viewpoint of an unsophisticated and undemanding user. Often, the comparisons are obsolete. Even more importantly, many comparisons strive for a false sense of objectivity by declaring that any differences are minor. However, by every possible standard, LibreOffice outshines OpenOffice and shows OpenOffice to be outdated. To pretend otherwise is a distortion of the truth.
_https://www.linux-magazine.com/Online/Features/LibreOffice-vs-OpenOffice
There is a standard method with which to modify Debian packages.
We can use it to remove strange dependencies of strawberry_1.2.9-bookworm_amd64.deb (github)
_https://github.com/strawberrymusicplayer/strawberry/releases/tag/1.2.9
_https://github.com/strawberrymusicplayer/strawberry
Strawberry is a music player and music collection organizer. It is a fork of Clementine released in 2018 aimed at music collectors and audiophiles.
It is aimed at audiophiles in the sense, perhaps, that it depends on gstreamer1.0-pulseaudio. There is a common belief that Linux users, in general, and Linux audiophiles, in particular, tend to be semi-deaf and semi-blind, and, therefore, they want to use pulseaudio and all sorts of equalizers, amplifiers, and DACs to enhance high frequencies.
Why are high frequency sounds typically the first to go in hearing loss?
https://www.newyorkhearingdoctors.com/why-are-high-frequency-sounds-typically-the-first-to-go-in-hearing-loss/
Download: strawberry_1.2.9-bookworm_amd64.deb (github)
https://github.com/strawberrymusicplayer/strawberry/releases/download/1.2.9/strawberry_1.2.9-bookworm_amd64.deb
$ ls
strawberry_1.2.9-bookworm_amd64.deb
$ dpkg --info *.deb | grep Depends -B5
Package: strawberry
Version: 1.2.9-bookworm
Architecture: amd64
Maintainer: Jonas Kvinge <jonas@jkvinge.net>
Installed-Size: 13869
Depends: libasound2 (>= 1.0.16), libc6 (>= 2.34), libcdio19 (>= 2.1.0), libchromaprint1 (>= 1.3.2), libebur128-1 (>= 1.1.0), libfftw3-double3 (>= 3.3.10), libgcc-s1 (>= 3.0), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.51.0), libgpod4 (>= 0.7.0), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.6.0), libicu72 (>= 72.1~rc-1~), libmtp9 (>= 1.1.0), libpulse0 (>= 0.99.1), libqt6concurrent6 (>= 6.1.2), libqt6core6 (>= 6.4.0), libqt6dbus6 (>= 6.4.0), libqt6gui6 (>= 6.3.0), libqt6network6 (>= 6.4.0), libqt6sql6 (>= 6.1.2), libqt6widgets6 (>= 6.3.0), libsqlite3-0 (>= 3.6.11), libstdc++6 (>= 11), libtag1v5 (>= 1.11), libx11-6, libqt6sql6-sqlite, qt6-qpa-plugins, gstreamer1.0-plugins-base, gstreamer1.0-plugins-good, gstreamer1.0-alsa, gstreamer1.0-pulseaudio
gstreamer1.0-alsa, gstreamer1.0-pulseaudio are, of course, pseudo-dependencies. They are not real dependencies in the sense that they can be safely removed.
Strawberry player is simply a GUI for GStreamer, and nothing more. Regardless of what you think GStreamer is, it does not depend on its plugins. It should be obvious that GStreamer plugins depend on GStreamer and not other way round.
There is a reason, of course, why the GStreamer package is split into "libgstreamer" and "plugins". If you have not been initiated into the secret knowledge of GStreamer, you may try to read its documentation
_https://gstreamer.freedesktop.org/documentation/installing/on-linux.html
ALSA users may want to install gstreamer1.0-alsa.
OSS4 users may want to remove gstreamer1.0-alsa, in order to use GStreamer based media players (e.g. Totem, Parole, and the like) with OSS4.
NOTE: ALSA users are recommended to install "gstreamer1.0-alsa". Otherwise, GStreamer may use "openalsink" with ALSA.
_https://gstreamer.freedesktop.org/documentation/openal/openalsink.html
It is not difficult to correct dependencies of a Debian package.
Install fakeroot
sudo apt install fakeroot
$ ls
strawberry_1.2.9-bookworm_amd64.deb
Open fakeroot console and execute mkdir debdir:
$ fakeroot
# mkdir debdir
# ls -1
debdir
strawberry_1.2.9-bookworm_amd64.deb
Unpack the deb package to debdir
# dpkg-deb -R *.deb debdir
# ls -1 ./debdir
DEBIAN
usr
# ls -1 ./debdir/DEBIAN
control
md5sums
# file ./debdir/DEBIAN/control
./debdir/DEBIAN/control: ASCII text, with very long lines (784)
Remove unwanted dependencies with a text editor:
# nano ./debdir/DEBIAN/control
Unable to create directory /root/.local/share/nano/: Permission denied
It is required for saving/loading search history or cursor positions.
You may have noticed that nano is complaining about missing root privileges.
This is because "fakeroot" is not a real "root", as the name suggests.
Such complaints can be safely ignored.
# cat ./debdir/DEBIAN/control | grep Depends -B5 -A1
Package: strawberry
Version: 1.2.9-bookworm
Architecture: amd64
Maintainer: Jonas Kvinge <jonas@jkvinge.net>
Installed-Size: 13869
Depends: libasound2 (>= 1.0.16), libc6 (>= 2.34), libcdio19 (>= 2.1.0), libchromaprint1 (>= 1.3.2), libebur128-1 (>= 1.1.0), libfftw3-double3 (>= 3.3.10), libgcc-s1 (>= 3.0), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.51.0), libgpod4 (>= 0.7.0), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.6.0), libicu72 (>= 72.1~rc-1~), libmtp9 (>= 1.1.0), libpulse0 (>= 0.99.1), libqt6concurrent6 (>= 6.1.2), libqt6core6 (>= 6.4.0), libqt6dbus6 (>= 6.4.0), libqt6gui6 (>= 6.3.0), libqt6network6 (>= 6.4.0), libqt6sql6 (>= 6.1.2), libqt6widgets6 (>= 6.3.0), libsqlite3-0 (>= 3.6.11), libstdc++6 (>= 11), libtag1v5 (>= 1.11), libx11-6, libqt6sql6-sqlite, qt6-qpa-plugins, gstreamer1.0-plugins-base, gstreamer1.0-plugins-good
Suggests: gstreamer1.0-alsa, gstreamer1.0-pulseaudio
Build the package:
# dpkg-deb -b debdir strawberry_1.2.9-devuan_amd64-fixed.deb
dpkg-deb: building package 'strawberry' in 'strawberry_1.2.9-devuan_amd64-fixed.deb'.
# ls -1 *.deb
strawberry_1.2.9-bookworm_amd64.deb
strawberry_1.2.9-devuan_amd64-fixed.deb
Exit fakeroot console
# exit
exit
Check dependencies
$ dpkg --info *fixed.deb | grep Depends -B5 -A1
Package: strawberry
Version: 1.2.9-bookworm
Architecture: amd64
Maintainer: Jonas Kvinge <jonas@jkvinge.net>
Installed-Size: 13869
Depends: libasound2 (>= 1.0.16), libc6 (>= 2.34), libcdio19 (>= 2.1.0), libchromaprint1 (>= 1.3.2), libebur128-1 (>= 1.1.0), libfftw3-double3 (>= 3.3.10), libgcc-s1 (>= 3.0), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.51.0), libgpod4 (>= 0.7.0), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.6.0), libicu72 (>= 72.1~rc-1~), libmtp9 (>= 1.1.0), libpulse0 (>= 0.99.1), libqt6concurrent6 (>= 6.1.2), libqt6core6 (>= 6.4.0), libqt6dbus6 (>= 6.4.0), libqt6gui6 (>= 6.3.0), libqt6network6 (>= 6.4.0), libqt6sql6 (>= 6.1.2), libqt6widgets6 (>= 6.3.0), libsqlite3-0 (>= 3.6.11), libstdc++6 (>= 11), libtag1v5 (>= 1.11), libx11-6, libqt6sql6-sqlite, qt6-qpa-plugins, gstreamer1.0-plugins-base, gstreamer1.0-plugins-good
Suggests: gstreamer1.0-alsa, gstreamer1.0-pulseaudio
Install Strawberry
sudo dpkg -i strawberry_1.2.9-devuan_amd64-fixed.deb
$ strawberry --version
Strawberry 1.2.9
$ apt info strawberry | grep Package: -A2
Package: strawberry
Version: 1.2.9-bookworm
Status: install ok installed
You can also rename a Debian package, change version, add scripts to debdir/usr/bin, and so on.
Notice that it is immoral (and illegal) to insert malware into Debian packages.
To debug Strawberry, you can simply start it from terminal.
EXAMPLES:
Strawberry is using "openalsink" with ALSA:
$ strawberry
...
22:24:48.921 DEBUG Player:776 Playing song "" QUrl("file:///.../audio/audio_test_48kHz_16bit.flac") position 0
22:24:48.921 DEBUG GstEnginePipeline:459 Using "playbin" for pipeline
22:24:48.974 DEBUG GstEnginePipeline:797 Setting buffer duration: 4000000000 low watermark: 0.33 high watermark: 0.99
22:24:48.976 DEBUG GstEnginePipeline:480 "openalsink" does not have volume, using own volume.
...
[fftrate ALSA plugin output]
Input: 44100 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1764
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates: 44100 --> 48000 (J: 0.00%, T: FFT, W: Vorbis)
Ok.
Input: 48000 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1920
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates: 48000 --> 48000 (J: 0.00%, T: None, W: Planar)
Ok.
Strawberry is using "oss4sink" with OSS4:
$ strawberry
...
22:16:51.126 DEBUG Player:776 Playing song "" QUrl("file:///.../audio/audio_test_48kHz_16bit.flac") position 0
22:16:51.126 DEBUG GstEnginePipeline:459 Using "playbin" for pipeline
22:16:51.250 DEBUG GstEnginePipeline:626 "oss4sink" has volume, enabling volume synchronization.
[AI-Assisted Answer] This warning indicates that ICC (International Color Consortium) support is disabled, which can lead to incorrect color rendering in applications that rely on color management.
The patch does not solve the problem, but it removes warnings:
0002-Only-warn-once-about-the-missing-ICC-support.patch
_https://sources.debian.org/patches/mupdf/1.25.1%2Bds1-5/0002-Only-warn-once-about-the-missing-ICC-support.patch/
Since pulseaudio users are usually semi-deaf and semi-blind, they may try to ignore such warnings, even though they are "repeated 18 times".
Patching an Existing Debian Package [using quilt]
_https://www.guyrutenberg.com/2017/10/06/patching-an-existing-debian-package/
See also:
How to rebuild audacious-plugins
_https://dev1galaxy.org/viewtopic.php?id=6686
warning: ICC support is not available
Why not google it?
https://www.google.com/search?q=warning:+ICC+support+is+not+available
There is a patch (a sort of workaround):
https://sources.debian.org/patches/mupdf/1.25.1%2Bds1-5/0002-Only-warn-once-about-the-missing-ICC-support.patch/
UsingQuilt
_https://wiki.debian.org/UsingQuilt
Using quilt in Debian source packages.
This page is aimed at people who want to make some changes to a Debian source package which is already using quilt.
The intention is not to explain quilt, but to offer some Debian specific tips
What is really cool about Arch Linux packaging is patching on the fly with sed.
_https://en.wikipedia.org/wiki/Sed
Ordinary patching techniques are also used, of course, in Arch PKGBUILDs, but
the advanced users tend to patch sources on the fly with sed (if possible).
[ArchWiki] Creating patches
Note: If you only need to change one or two lines, you might want to use sed instead.
_https://wiki.archlinux.org/title/Patching_packages
NOTE: This patching technique (sed) is also used in Debian packages (but rather seldom).
Usually, it is done with quilt _https://wiki.debian.org/UsingQuilt
The package is available in Arch Linux AUR repository:
Package Details: libasound2-plugin-fftrate 1.6.3-1
_https://aur.archlinux.org/packages/libasound2-plugin-fftrate
The PKGBUILD is a masterpiece. The source code is patched on the fly with sed.
What is more, the problem was fixed with a one-line Linux command:
prepare() { cd "$srcdir/$pkgbase-$pkgver" find . -type f \( -name "*.cpp" -o -name "*.c" -o -name "*.h" \) -exec sed -i -e 's/min(/MIN(/g' -e 's/max(/MAX(/g' {} + }
_https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=libasound2-plugin-fftrate
NOTE: If you do not understand the magic command, try to ask explainshell.com:
_https://explainshell.com/explain?cmd=find+.+-type+f+%5C%28+-name+%22*.cpp%22+-o+-name+%22*.c%22+-o+-name+%22*.h%22+%5C%29+-exec+sed+-i+-e+%27s%2Fmin%28%2FMIN%28%2Fg%27+-e+%27s%2Fmax%28%2FMAX%28%2Fg%27+%7B%7D+%2B+ ... -exec command {} + This variant of the -exec action runs the specified command on the selected files, but the command line is built by appending each selected file name at the end; the total number of invocations of the command will be much less than the number of matched files. The command line is built in much the same way that xargs builds its command lines. Only one instance of `{}' is allowed within the command. The command is executed in the starting directory.
It is simply replacing min( with MIN( and max( with MAX( in "*.cpp", "*.c", and "*.h" files.
TEST
mkdir petrov-fftrate cd petrov-fftrate git clone https://github.com/PetrovSE/fftrate.git cd fftrate
$ grep -Ri "Max(" . | grep ".cpp" ./src/apps/pcm_info/Main.cpp: nHelpLayer = max( nHelpLayer, 2 ); ./src/apps/pcm_info/Main.cpp: nHelpLayer = max( nHelpLayer, 2 ); ./src/apps/pcm_info/Main.cpp: nHelpLayer = max( nHelpLayer, 3 ); ./src/apps/pcm_stretch/Main.cpp: nHelpLayer = max( nHelpLayer, 2 ); ./src/apps/pcm_stretch/Main.cpp: nHelpLayer = max( nHelpLayer, 2 ); ./src/apps/pcm_stretch/Main.cpp: nHelpLayer = max( nHelpLayer, 3 ); ./src/apps/pcm_mse/Main.cpp: nHelpLayer = max( nHelpLayer, 2 ); ./src/apps/pcm_mse/Main.cpp: nHelpLayer = max( nHelpLayer, 2 ); ./src/apps/pcm_mse/Main.cpp: nHelpLayer = max( nHelpLayer, 3 ); ./src/apps/pcm_mse/Main.cpp: nBits = max( nBits, (WORD)mmsys_format_info( pFile->pFormat, 'b' ) ); ./src/apps/pcm_conv/Main.cpp: nHelpLayer = max( nHelpLayer, 2 ); ./src/apps/pcm_conv/Main.cpp: nHelpLayer = max( nHelpLayer, 2 ); ./src/apps/pcm_conv/Main.cpp: nHelpLayer = max( nHelpLayer, 3 );
$ find . -type f \( -name "*.cpp" \) -exec sed -e 's/max(/MAX(/g' {} + | grep "MAX(" nHelpLayer = MAX( nHelpLayer, 2 ); nHelpLayer = MAX( nHelpLayer, 2 ); nHelpLayer = MAX( nHelpLayer, 3 ); nHelpLayer = MAX( nHelpLayer, 2 ); nHelpLayer = MAX( nHelpLayer, 2 ); nHelpLayer = MAX( nHelpLayer, 3 ); nHelpLayer = MAX( nHelpLayer, 2 ); nHelpLayer = MAX( nHelpLayer, 2 ); nHelpLayer = MAX( nHelpLayer, 3 ); nBits = MAX( nBits, (WORD)mmsys_format_info( pFile->pFormat, 'b' ) ); nHelpLayer = MAX( nHelpLayer, 2 ); nHelpLayer = MAX( nHelpLayer, 2 ); nHelpLayer = MAX( nHelpLayer, 3 );
To apply the magic patch on Devuan, you have to download the source code from git,
then open terminal in the source directory and execute the magic command:
$ cd fftrate
$ find . -type f \( -name "*.cpp" -o -name "*.c" -o -name "*.h" \) -exec sed -i -e 's/min(/MIN(/g' -e 's/max(/MAX(/g' {} +
Then you can compile the fftrate plugin with gcc-12 (and, perhaps, newer versions of GCC).
It works without problems.
$ gcc --version
gcc (Debian 12.2.0-14) 12.2.0
$ uname -a
Linux devuan 6.1.0-32-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.129-1 (2025-03-06) x86_64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Devuan
Description: Devuan GNU/Linux 5 (daedalus)
Release: 5
Codename: daedalus
sudo apt install inxi
man inxi
$ inxi -b | grep Host -A1
Host: devuan Kernel: 6.1.0-32-amd64 arch: x86_64 bits: 64 Desktop: MATE
v: 1.26.0 Distro: Devuan GNU/Linux 5 (daedalus)
$ inxi -A
Audio:
Device-1: Intel 7 Series/C216 Family High Definition Audio
driver: oss_hdaudio
Device-2: Griffin iMic type: USB driver: snd-usb-audio
API: ALSA v: k6.1.0-32-amd64 status: kernel-api
API: OSS v: N/A status: active
Install "build-essential", etc.
sudo apt update
sudo apt-get install build-essential git debhelper
sudo apt install libasound2-dev libasound2-plugins swh-plugins
Download the source code:
mkdir petrov-fftrate
cd petrov-fftrate
git clone https://github.com/PetrovSE/fftrate.git
Check the current "recommended compat" for debhelper:
$ man debhelper-compat-upgrade-checklist | grep "recommended mode"
v13 This is the recommended mode of operation.
Change compat to "13":
$ nano ./fftrate/packets/debian/compat
$ cat ./fftrate/packets/debian/compat
13
Open terminal in the source directory:
$ ls
fftrate
$ cd fftrate
Apply the magic patch:
find . -type f \( -name "*.cpp" -o -name "*.c" -o -name "*.h" \) -exec sed -i -e 's/min(/MIN(/g' -e 's/max(/MAX(/g' {} +
Now you can compile the fftrate plugin with gcc-12 (and, perhaps, newer versions of GCC).
$ cd packets
$ ls -1
debian
etc
Makefile
mk_dpkg
Build executables:
make -j1
Make Debian packages:
./mk_dpkg
$ cd ../
$ ls | grep .deb
alsa-config-utils_1.6.3_amd64.deb
libasound2-plugin-fftrate_1.6.3_amd64.deb
pcm-utils_1.6.3_amd64.deb
Install the packages:
sudo dpkg -i alsa-config-utils_1.6.3_amd64.deb libasound2-plugin-fftrate_1.6.3_amd64.deb pcm-utils_1.6.3_amd64.deb
Dependencies:
libasound2
libasound2-plugins
swh-plugins
Notice that the Arch package depends on fftw library (make)
_https://aur.archlinux.org/packages/libasound2-plugin-fftrate
It should already be installed (automatic, as a dependency):
$ apt search libfftw3-dev
Sorting... Done
Full Text Search... Done
libfftw3-dev/stable,now 3.3.10-1 amd64 [installed,automatic]
Library for computing Fast Fourier Transforms - development
libfftw3-double3/stable,now 3.3.10-1 amd64 [installed,automatic]
Library for computing Fast Fourier Transforms - Double precision
libfftw3-long3/stable,now 3.3.10-1 amd64 [installed,automatic]
Library for computing Fast Fourier Transforms - Long precision
libfftw3-quad3/stable,now 3.3.10-1 amd64 [installed,automatic]
Library for computing Fast Fourier Transforms - Quad precision
libfftw3-single3/stable,now 3.3.10-1 amd64 [installed,automatic]
Library for computing Fast Fourier Transforms - Single precision
The user manual is here:
ALSA without PulseAudio and PipeWire
_https://dev1galaxy.org/viewtopic.php?id=6644
@hacksenwerk
Some years ago, when ALSA backend was removed from Firefox, you had to
1. compile apulse,
2. configure ALSA mixer (with arateconf),
3. allow ALSA sound device in Firefox's sandbox config.
Today it is more simple. You have to
1. install apulse from Devuan repo,
2. configure ALSA mixer (with arateconf).
! You do not need to configure sandbox for apulse.
HYPOTHESIS: Perhaps, it might be possible to use microphone with Firefox's ALSA backend without apulse.
What might be needed is to set
security.sandbox.content.read_path_whitelist /dev/snd/
security.sandbox.content.write_path_whitelist /dev/snd/
in about:config
See, for example:
How to run FIREFOX without pulseaudio, by using "apulse" (Nov 22, 2017)
_https://forums.linuxmint.com/viewtopic.php?t=257818
You won't have sounds on firefox, do you ?
Playback in Firefox works without problems with ALSA (without pulseaudio and pipewire).
Sound quality is good, because fftrate ALSA plugin is installed and enabled (with ALSA config).
NOTE: If you want to use Firefox for video conferences, you have to run it with apulse:
$ apulse firefox
It works without problems, if ALSA software mixer is configured with arateconf.
If you are an ALSA expert, you may try to create ALSA config without the help of arateconf.
EDITED
BEFORE running "arateconf", you should close all audio applications.
The "TEST" function of "arateconf" will fail, if your "audio device" is already in use.
When pulseaudio and pipewire are removed, you can easily free your "audio devices" with "fuser".
For example:
$ fuser -av $(find /dev/snd -type c 2>/dev/null)
USER PID ACCESS COMMAND
/dev/snd/controlC0: igor 2261 F.... mate-settings-d
igor 2310 F.... mate-volume-con
/dev/snd/pcmC0D0c:
/dev/snd/pcmC0D0p: igor 8248 F...m firefox-esr
/dev/snd/seq:
/dev/snd/timer: igor 8248 f.... firefox-esr
"mate-settings-daemon" and "mate-volume-control-status-icon" need not to be killed.
But "firefox-esr" should be killed to free the "audio device":
$ fuser -ikv $(find /dev/snd -type c 2>/dev/null)
USER PID ACCESS COMMAND
/dev/snd/controlC0: igor 2261 F.... mate-settings-d
igor 2310 F.... mate-volume-con
Kill process 2261 ? (y/N) n
Kill process 2310 ? (y/N) n
/dev/snd/pcmC0D0p: igor 8248 F...m firefox-esr
Kill process 8248 ? (y/N) y
/dev/snd/timer: igor 8248 f.... firefox-esr
Kill process 8248 ? (y/N) y
Could not kill process 8248: No such process
$ fuser -av $(find /dev/snd -type c 2>/dev/null)
USER PID ACCESS COMMAND
/dev/snd/controlC0: igor 2261 F.... mate-settings-d
igor 2310 F.... mate-volume-con
/dev/snd/pcmC0D0c:
/dev/snd/pcmC0D0p:
/dev/snd/seq:
/dev/snd/timer:
Now, when audio devices are free, you can run "arateconf".
if i press "T", there is "failed".
Input: Open device "hw:C1,0" ... Failed!
It failed to open "Input", because you configured your "Cambridge USB DAC" for recording.
"DAC" means "digital-to-analog converter",
see _https://en.wikipedia.org/wiki/Digital-to-analog_converter.
As the name suggests, it is not supposed to be used to record "analog sound".
For "Output", you also got an error message:
Set format 'S32_LE' ... Unsupported!
It means that your Cambridge DAC does not support 'S32_LE' (it is now default for playback),
or ALSA driver (snd_usb_audio) for your USB DAC does not support 32bit.
Try 'S16_LE', or else.
Read the manual again and change 'S32_LE' to 'S16_LE'.
Press "F" to change "format".
======================
| Sound parameters |
----------------------
S - Sample rate = 48000 Hz
C - Channels = 2
F - Format: 'S32_LE'
A - Alignment buffer and period [X]
B - Set buffer multiplier = 1
M - Set period multiplier = 1
P - Play ampl. = 0 dB
R - Rec. ampl. = 0 dB
ESC - Return to main menu
> f
==============================
| Available sample formats |
------------------------------
0 - U8
1 - S16_LE
2 - S24_3LE
3 - S24_LE
4 - S32_LE
5 - FLOAT_LE
6 - FLOAT64_LE
ESC - Return to main menu
>
Your Intel HDA codec (Generic_1) does support 48kHz 32bit.
It should also support 192kHz 32bit.
This may provide much better sound quality than your "Cambridge DAC" (it is likely to be 48kHz 16bit and nothing more with ALSA).
You can test different "sample rates" and "formats" with "arateconf".
You can also check your "proc" (cards, hw_params), for example:
$ cat /proc/asound/cards
0 [system ]: USB-Audio - iMic USB audio system
Griffin Technology, Inc iMic USB audio system at usb-0000:00:1a.0-1.3.4, full s
$ cat /proc/asound/card*/pcm*p/sub*/hw_params
access: MMAP_INTERLEAVED
format: S16_LE
subformat: STD
channels: 2
rate: 48000 (48000/1)
period_size: 1920
buffer_size: 7680
$ cat /proc/asound/card0/pcm0p/sub0/hw_params
access: MMAP_INTERLEAVED
format: S16_LE
subformat: STD
channels: 2
rate: 48000 (48000/1)
period_size: 1920
buffer_size: 7680
NOTE: "arateconf" is simply a tool to configure ALSA,
that is, a tool to generate an ALSA config file "~/.asoundrc".
It takes data from ALSA and from Linux (proc, etc.).
Notable Realtek products include ... audio codecs (AC'97 and Intel HD Audio ).
_https://en.wikipedia.org/wiki/Realtek#Notable_products
ALSA detected an Intel HDA codec on your motherboard. It has a "generic driver" for it.
It should work without problems.
You may select Intel HDA codec as default for recording.
If you connect new USB audio devices, you have to create a new ALSA config with "arateconf".
since started on linux journey, found it very strange to say the least , that when wanting to @uninstall say a driver like pulseaudio, this couldwould render the laptop completely broke, like uninstalling the whole desktop
xfce4 and mate-desktop-environment are meta-packages, they can be safely removed.
See: _https://wiki.debian.org/metapackage
Meta-packages are not completely empty, they have inside a list of dependencies.
On the other hand, to fix problems with desktop, you may reinstall your Linux Desktop Environment.
That is, you can simply reinstall a meta-package. For example:
sudo apt-get --reinstall install mate-desktop-environment
See also: _https://www.cyberciti.biz/faq/debian-ubuntu-linux-reinstall-a-package-using-apt-get-command/
Desktop environment - ArchWiki
_https://wiki.archlinux.org/title/Desktop_environment
If you want to learn something about Linux Desktop environments, you may try to install MATE:
How to Install MATE Desktop and remove XFCE
1. Installing MATE
sudo apt update
sudo apt install mate-desktop-environment
sudo apt install mate-desktop-environment-extras
This may re-install pulseaudio, but it is easy to remove.
You may also need to unhold pulseaudio crap.
$ apt-mark showhold
pavucontrol
pipewire
pipewire-alsa
pipewire-audio
pipewire-audio-client-libraries
pipewire-bin
pipewire-doc
pipewire-jack
pipewire-libcamera
pipewire-media-session
pipewire-media-session-alsa
pipewire-media-session-jack
pipewire-media-session-pulseaudio
pipewire-pulse
pipewire-tests
pipewire-v4l2
pulseaudio
pulseaudio-equalizer
pulseaudio-module-bluetooth
pulseaudio-module-gsettings
pulseaudio-module-jack
pulseaudio-module-lirc
pulseaudio-module-raop
pulseaudio-module-zeroconf
pulseaudio-utils
$ apt-mark
apt 2.6.1devuan1 (amd64)
Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]
Most used commands:
auto - Mark the given packages as automatically installed
manual - Mark the given packages as manually installed
minimize-manual - Mark all dependencies of meta packages as automatically installed.
hold - Mark a package as held back
unhold - Unset a package set as held back
showauto - Print the list of automatically installed packages
showmanual - Print the list of manually installed packages
showhold - Print the list of packages on hold
To select MATE Desktop as default, run
$ sudo update-alternatives --config x-session-manager
There are 3 choices for the alternative x-session-manager (providing /usr/bin/x-session-manager).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/startxfce4 50 auto mode
1 /usr/bin/mate-session 50 manual mode
2 /usr/bin/startxfce4 50 manual mode
3 /usr/bin/xfce4-session 40 manual mode
Press <enter> to keep the current choice[*], or type selection number: 1
It should be like this:
$ sudo update-alternatives --config x-session-manager
There are 3 choices for the alternative x-session-manager (providing /usr/bin/x-session-manager).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/mate-session 50 auto mode
* 1 /usr/bin/mate-session 50 manual mode
2 /usr/bin/startxfce4 50 manual mode
3 /usr/bin/xfce4-session 40 manual mode
Press <enter> to keep the current choice[*], or type selection number:
SLIM - ArchWiki
_https://wiki.archlinux.org/title/SLiM
2. Removing XFCE (optional)
$ sudo dpkg -l | grep .xfce
$ sudo apt purge xfce*
$ sudo apt autoremove
See also:
_https://tecadmin.net/how-to-install-mate-desktop-on-debian-11/
@kapqa
Pulseaudio is not a driver. It is, rather, a sort of malware.
XFCE is buggy and crappy, and it does not support "alsa-only".
The best solution might be Devuan MATE Desktop (without pulseaudio and pipewire).
It works without problems even on very old computers (such as those of 2001).
Although, of course, web browsers are rather slow on very old computers.
To summarize:
The manual is here:
_https://dev1galaxy.org/viewtopic.php?pid=53969#p53969
See also:
_https://dev1galaxy.org/viewtopic.php?pid=54059#p54059
no , dont know about that
Perhaps, you do not want to know.
It is a very old problem.
fftrate ALSA plugin was created in 2009.
The story of "system wide equalizer" also began in 2009.
For example:
HOWTO systemwide eq with alsaequal
_https://forums.debian.net/viewtopic.php?t=47899
Today "alsaequal" is easy to install:
_https://askubuntu.com/a/951207
Installation
sudo apt install libasound2-plugin-equal
Start
alsamixer -D equal amixer -D equal
To change to the equalizer in the running program, press F6, choose enter device name... and enter “equal”.
Semi-deaf Linux users do need a sort of "equalizer" to "enhance sound", especially high frequencies.
$ apt info libasound2-plugin-equal
Package: libasound2-plugin-equal
Version: 0.6-8
Priority: optional
Section: libs
Source: alsaequal
Maintainer: Debian Multimedia Maintainers <debian-multimedia@lists.debian.org>
Installed-Size: 72.7 kB
Depends: caps (>= 0.9.11), libasound2 (>= 1.0.16), libc6 (>= 2.14)
Homepage: http://www.thedigitalmachine.net/alsaequal.html
Tag: role::shared-lib
Download-Size: 14.9 kB
APT-Sources: http://deb.devuan.org/merged daedalus/main amd64 Packages
Description: equalizer plugin for ALSA
Alsaequal is a real-time adjustable equalizer plugin for ALSA. It can
be adjusted using an ALSA compatible mixer, like alsamixergui or
alsamixer.
.
Alsaequal uses the Eq CAPS LADSPA Plugin for audio processing, actually
alsaequal is a generic LADSPA plugin interface with real-time access to
the LADSPA controls (the LADSPA plugin included with alsa doesn't allow
for real-time controls) but it was developed for and only tested with
Eq CAPS LADSPA plugin.
getting error but now alsa is back with "proper""volume"
Shutting down ALSA...done. Setting up ALSA...warning: 'alsactl -E HOME=/run/alsa -E XDG_RUNTIME_DIR=/run/alsa/runtime restore' failed with error message 'alsa-lib main.c:1554:(snd_use_case_mgr_open) error: failed to import hw:29 use case configuration -2'...done.
You may try a workaround from stackoverflow
ALSA: failed to import hw:0 use case configuration -2
_https://stackoverflow.com/questions/76333959/alsa-failed-to-import-hw0-use-case-configuration-2
$ man alsactl | grep ucm
-D, --ucm-defaults
-U, --no-ucm
$ whereis alsactl
alsactl: /usr/sbin/alsactl /usr/share/man/man1/alsactl.1.gz
$ /usr/sbin/alsactl -h
$ sudo /usr/sbin/alsactl -d restore
/usr/sbin/alsactl: init_ucm:48: ucm open '-hw:0': -6
...
See also:
Alsa UCM
_https://wiki.postmarketos.org/wiki/Alsa_UCM
Do you have the ucm.conf file?
It should be here:
/usr/share/alsa/ucm2/ucm.conf
EDIT:
_https://wiki.postmarketos.org/wiki/Alsa_UCM
If an UCM configuration is present for a card then pulseaudio will ignore the built-in profiles and generate a profile based on the UCM files....
1. Disable PulseAudio or PipeWire so ALSA UCM is not active at all.
This may mean, perhaps, that you do not need ALSA UCM, if you are not using PulseAudio and PipeWire.
Therefore, the workaround from stackoverflow may fix the problem.
sudo /usr/sbin/alsactl --debug restore
sudo /usr/sbin/alsactl --debug --no-ucm restore
Or you can simply ignore the "error" message, which is, in fact, just "warning", not "error".
EDIT:
If I understood you correctly, your ALSA was almost silent.
The "force-reload" of ALSA seemed to fix the problem.
Since ALSA UCM is not needed, you may simply ignore the "warning" message, and see how it works.
NOTE: OSS4 is much more louder than ALSA with the same sound card.
The fftrate ALSA plugin makes ALSA louder, but not as loud as OSS4.
Most important, the fftrate improves the sound quality of ALSA, although, of course, I like more the sound of OSS4.
If you are content with the sound quality of ALSA, you may use it as is.
But if you need to configure a software mixer for ALSA (e.g., for video conferencing), it might be a difficult task (without the fftrate plugin).
See, for example:
[Arch Linux forum]: [SOLVED] ALSA and dmix (software mixing)
_https://bbs.archlinux.org/viewtopic.php?id=275656
isuee is that sound is very low, even with vlc 200% it is probably 1/4 of original strength, and all relevant faderin amixer is set 100%.
It is not an issue, it is a feature of ALSA.
With normal loudness, you may hear noise produced by the ALSA resampler.
If you do not like this feature, you may compile and install fftrate ALSA plugin (and configure it).
since i removed only "pulseaudio", there is another libpulse0?
is this also needed for removal?
thanks.
Have you read my manual?
It was posted above.
See: _https://dev1galaxy.org/viewtopic.php?pid=53969#p53969
@kapqa
"alsa-only" means that you may need some Linux commands.
To reload ALSA on Devuan, you can use alsa-utils.
The Devuan default is "SysV init"
$ /sbin/init --version
SysV init version: 3.06
If you are using "SysV init", you can reload ALSA with this command:
$ sudo /etc/init.d/alsa-utils force-reload
Shutting down ALSA...done.
Setting up ALSA...done.
"soft restart":
$ sudo /etc/init.d/alsa-utils restart
Shutting down ALSA...done.
Setting up ALSA...done.
$ sudo /etc/init.d/alsa-utils stop
Shutting down ALSA...done.
$ sudo /etc/init.d/alsa-utils start
Setting up ALSA...done.
Another useful command is fuser
$ fuser -av $(find /dev/snd -type c 2>/dev/null)
USER PID ACCESS COMMAND
/dev/snd/controlC0: igor 2328 F.... mate-settings-d
igor 2382 F.... mate-volume-con
/dev/snd/pcmC0D0c:
/dev/snd/pcmC0D0p: igor 2843 F...m firefox-esr
/dev/snd/seq:
/dev/snd/timer: igor 2843 f.... firefox-esr
PID 2328 /usr/bin/mate-settings-daemon
PID 2382 mate-volume-control-status-icon
PID 2843 /usr/lib/firefox-esr/firefox-esr
"mate-volume-control-status-icon" is MATE volume control applet.
It works with ALSA in "alsa-only" mode (as well as "mate-settings-daemon").
However, after removal of pulseaudio, you have to reload ALSA, or reboot the system.