Intento de crear el paquete deb del reproductor dmidiplayer 1.7.0 en MX Linux 21 al estilo Alien (PERO NO SE PUDO)

NO FUNCIONA ESTE, PERO YA LOGRÉ CREAR LOS DEB AQUÍ CON NINJA.


dmidiplayer (Drumstick MIDI File Player) es un reproductor de archivos de formato .MID (Standard MIDI Files), .KAR (Karaoke), .RMI (RIFF MIDI), y .WRK (Cakewalk), y envía eventos MIDI a puertos MIDI de hardware y también a sintetizadores de software creado por Pedro López-Cabanillas


POSIBLE SOLUCIÓN AL ERROR DE ESTE TUTORIAL

Este método hubiera servido para crear el deb desde cualquier programa Qt si no tiene el archivo rules y si install_manifest.txt. El error parece estar en que yo cree la carpeta debian de sonivox como single y no como librería (eso está en la ayuda de dh_make --help), así que si lo hubiera creado como librería habría que haber creado en DEBIAN/control las entradas necesarias para que se creen los varios paquetes de librerías. Se hubiera podido como ejemplo el siguiente paquete drumstick-tools que es de donde salen varios paquetes de librerías (no usé el ejemplo de sonivox porque ese paquete no hay en packages.debian.org):

https://packages.debian.org/bullseye/drumstick-tools



Nota: Si desea ver todos los paquetes disponibles ponga en su navegador web:


ese paquete se puede descargar desde la terminal (se copia el enlace en el navegador con clic derecho y se añade wget):

wget http://deb.debian.org/debian/pool/main/libd/libdrumstick/libdrumstick_1.1.3-1.debian.tar.xz

donde, ejemplo de las librerías compartidas de paquetes que se crearían con control como librería:


pero como esa librería es vieja habría habido que hacer lo mismo que hizo Christian Marillat:

https://github.com/wachin/dmidiplayer-272-ninja-christian-marillat/blob/main/drumstick-dmo/debian/control


y no como yo en este tutorial hice pensando que se podría crear un solo paquete (le había puesto -s de single). Además si hubiera sido creada la librería con este método después de creado los deb de las librerías de sonivox habría habido necesario instalar esos debs pues de lo contrario no se hubieran creado los registros de esas dependencias en el sistema y no hubiera sido posible crear la siguiente drumstick. Pero en VNote si funcionó este método con Alien porque sólo era un paquete.


Para crear los paquetes deb de éste y sus dependencias necesitamos hacer algunas cosas

Añadir el nombre del Mantenedor (o Responsable) a su Sistema para que se compile con ese nombre

Para hacer esto ponga en una terminal lo siguiente (teniendo instalado Gedit, o si desea otro editor de texto solo cámbielo del comando):

gedit ~/.bashrc 

allí debe llegar hasta abajo y con enter hacerse un espacio::


y allí debe de poner lo siguiente:

DEBEMAIL="your.email.address@example.org"
DEBFULLNAME="Firstname Lastname"
export DEBEMAIL DEBFULLNAME

y cambiar con sus datos, a mi me queda así:

 

ahora cierro Gedit y reinicio el ordenador. Con esto una vez que usted haya creado el deb al revisarlo en Synaptic se verá allí su nombre y su correo en la descripción (Pestaña: Comunes / Responsable o Mantenedor).Además servirá al momento de crear el archivo changelog.


Desinstalando drumstick

Si usted tenía instalado desde los repositorios a drumstick desinstálelo:

sudo apt remove drumstick-tools

Eso porque es necesaria una librería de desarrollo que viene únicamente en el código fuente.


Herramientas usadas

Usaré en el tutorial:

Dolphin

Konsole

pero usted puede usar otro administrador de archivos u otra consola


Dependencias

Para poder compilar dmidiplayer 1.7 primero es necesario compilar a sonivox, drumstick y se necesita instalar las siguientes dependencias:

sudo apt install libasound2-dev doxygen libpulse-dev git \
     libfluidsynth-dev qttools5-dev cmake qttools5-dev pandoc \
     libxorg-gtest-dev libgmock-dev xsltproc graphviz \
     libuchardet-dev dh-make


les aconsejo hacer lo siguiente dentro de una carpeta principal, ejemplo yo usaré una llamada:

dmidiplayer-1.7-building

y para cada una de las dependencias, subcarpetas


Compilando sonivox y creando el deb

Nota: Las dependencias: libxorg-gtest-dev libgmock-dev son necesarias para sonivox.

En una subcarpeta a la que le puse el nombre sonivox-dev:



 abro una terminal dentro de ella y pongo:

wget -c https://github.com/pedrolcl/sonivox/archive/refs/tags/v3.6.11.tar.gz
tar -xvzf v3.6.11.tar.gz
cd sonivox-3.6.11
mkdir -p build
cd build
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ..
make
sudo make install
cd ..

Nota: En cmake he configurado la instalación a usr, esto lo digo por si usted quiera usar este tutorial para algún otro programa, pues si el programa hiciera la instalación en por ejempolo usr/local usted deberá de corregirlo a usr. En programas escritos en otros lenguajes debe de consultar en Google.

y ejecuto:



y se empieza a descargar:


en un momento me pide poner contraseña y se la pongo y la terminal se cierra

ahora, como vemos, dentro de la carpeta:

sonivox-dev

se ha creado otra carpeta, llamada:

sonivox-3.6.11



al entrar en ella creamos una carpeta llamada:

extraction


y me queda así:



como este programa nos ha dejado el archivo:

install_manifest.txt


en la carpeta:


build



al abrirlo:



contiene la lista de todos los archivos que se instalaránc. Ahora vamos a usar un comando para extraer del sistema todos los archivos que instaló, esto basado en:

command line - Copy a list of files preserving directory structure, without scripts - Super User

donde está el comando:

tar cvf - -T filelist.txt | tar xvf - -C newdir

Donde:
filelist.txt es el archivo donde está la lista de los archivos y carpetas, en este caso install_manifest.txt
newdir es la carpeta donde voy a pegar todos los archivos y carpetas

Para resumir esto pongo en la terminal lo siguiente:

tar cvf - -T ./build/install_manifest.txt | tar xvf - -C ./extraction

Donde:


y al ejecutar el comando dando Enter ahora vemos dentro de la carpeta extraction y hay una carpeta llamada:

usr

la cual contiene todo lo que instaló el programa:


Nota: Hay la posibilidad remota de que algún programa instale además de usr en alguna carpeta mas, pero de ser así en las instrucciones de este tutorial para usar el archivo rules de la carpeta debian se deberá hacer un ajuste para añadir otra carpeta más y si fuer así yo no he investigado aún hacer eso por lo que deberá escribirme el interesado si hubiera un caso así.

ahora corte la carpeta:

usr


y debe pegarla en la ruta anterior:




Creando el directorio debian

En el siguiente comando usted modifique el correo y ponga el suyo:

dh_make -s --copyright apache --email su.correo@servidor.com --createorig

yo pongo el mío:

dh_make -s --copyright apache --email wachin.id@gmail.com --createorig


Nota: Si está usando Dolphin puede que tenga que usar la tecla F5 para actualizar los archivos y que se vea la carpeta debian.

le explico que en este programa la licencia es Apache:


las licencias disponibles para dh-make según:

https://manpages.debian.org/unstable/dh-make/dh_make.1.en.html

son:



al ejecutar ese comando con Enter aparecerá:


parece que no pasara nada, pero si revisa la carpeta anterior:


y luego se creará la carpeta:

debian


entre en esta carpeta y borre todos los archivos excepto:

control
changelog


Nota: Si desean personalizar mejor el archivo changelog vea el siguiente tutorial.

y abra su archivo:

 control



y dejelo abierto


ahora clone el siguiente repositorio (en una carpeta aparte de este proyecto):

git clone https://github.com/wachin/dmidiplayer-1.7-Wachin-Dev

entre en la carpeta:

/sonivox-3.6.11/debian/

allí abra el archivo:

control

y copie la siguiente información:



copie con cuidado la información a su archivo control y guarde el archivo:



y los archivos de mi repositorio:

/sonivox-3.6.11/debian/copyright
/sonivox-3.6.11/debian/rules

copielos y peguelos a su carpeta debian, a mi me queda así la carpeta:


ahora si ponga el siguiente comando en una terminal en la raiz de nuestro proyecto:

dpkg-buildpackage -uc -b


espere un momento y cuando en la terminal se limpie lo que se estaba procesando, busque en la carpeta anterior y vea que allí estará el deb:


Nota: Si desea puede descomprimir al deb con clic derecho extraer aquí para que entre en la carpeta resultante y pueda verificar que allí está todo el contenido del programa


Compilando drumstick

Nota: Las dependencias  xsltproc graphviz son necesarias para drumstick.

Realizo la compilación poniendo en la terminal en la carpeta principal en mi caso 

/dmidiplayer-1.7-building/

en la sub carpeta:

drumstick-dev

wget -c https://sourceforge.net/projects/drumstick/files/2.7.2/drumstick-2.7.2.tar.gz
tar -xvzf drumstick-2.7.2.tar.gz
cd drumstick-2.7.2
mkdir -p build
cd build
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ..
make
sudo make install
cd ..


Al compilarlo se instalarán los siguientes lanzadores en su sistema:

/usr/bin/drumstick-drumgrid
/usr/bin/drumstick-guiplayer
/usr/bin/drumstick-vpiano

Nota: Yo configuré en cmake para que haga la instalación en la ruta /usr pues de lo contrario se instalaba todo en /usr/local y no funcionaba el programa, además para este tutorial necesitamos que esté en /usr

ahora realizando el proceso anterior en la carpeta inicial de drumsitck creo la carpeta:

extraction

y allí en:

/dmidiplayer-1.7-building/drumstick-dev/drumstick-2.7.2/

abro una terminal

y pongo:

tar cvf - -T ./build/install_manifest.txt | tar xvf - -C ./extraction

ahora como anteriormente le explicaba, corte la carpeta usr que está dentro de extraction y pongala fuera

y en el caso de este programa la licencia es gpl3 en el archivo:

/drumstick-2.7.2/COPYING

ponga en la terminal poniendo su correo en vez del mío:

dh_make -s --copyright gpl3 --email wachin.id@gmail.com --createorig

ponga:

y

Nota: Si está usando Dolphin puede que tenga que usar la tecla F5 para actualizar y que se vea la carpeta debian

entre en la carpeta debian y borre los archivos exepto:

changelog
control

ahora, del archivo control que yo le dejo en:

/dmidiplayer-1.7-Wachin-Dev/drumstick-dev/debian/

abralo y copie:


y pegue la información necesaria en el suyo así como anteriormente le expliqué, y también copie mi archivo del copyright y cambiele mi nombre por el suyo, y el archivo rules también copie el que yo le doy y peguelo en su carpeta debian (sobre el archivo changelog si usted desea que quede más personalizado vea este tutorial.)

ahora si ponga el siguiente comando en una terminal en la raiz de nuestro proyecto:

dpkg-buildpackage -uc -b


y ejecútelo y luego se creará el deb esperando un momento, en la carpeta anterior:


Nota: Si desea puede descomprimir al deb con clic derecho extraer aquí para que entre en la carpeta resultante y pueda verificar que allí está todo el contenido del programa



Compilando dmidiplayer 1.7.0

Ahora compilar dmidiplayer 1.7.0 entrando en su administrador de archivos en la carpeta:

/dmidiplayer-1.7-building/

y allí cree una subcarpeta:

/dmidiplayer-1.7-building/dmidiplayer-dev

y abra una terminal allí y ponga:

wget -c https://github.com/pedrolcl/dmidiplayer/archive/refs/tags/v1.7.0.tar.gz
tar -xvzf v1.7.0.tar.gz
cd dmidiplayer-1.7.0
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX:PATH=/usr
make
sudo make install
cd ..

hay un momento en que le pedirá la contraseña, pongasela y luego se saldrá de la terminal

ahora entre en la carpeta:

/dmidiplayer-1.7-building/dmidiplayer-dev/dmidiplayer-1.7.0

cree la carpeta:

extraction

entre en una terminal en:

/dmidiplayer-1.7-building/dmidiplayer-dev/dmidiplayer-1.7.0/

y ponga:

tar cvf - -T ./build/install_manifest.txt | tar xvf - -C ./extraction



ahora corte la carpeta usar que se ha creado dentro de extraction y peguela en la carpeta anterior:



ahora cree la carpeta debian poniendo en la terminal en la ruta . . . /dmidiplayer-1.7.0

dh_make -s --copyright gpl3 --email wachin.id@gmail.com --createorig


Cambiando mi correo por el suyo

Nota: La licencia de este programa es GPL·

al dar Enter le preguntará y ponga: 

y

y entre en el administrador de archivos en la carpeta debian que se ha creado y borre los archivos excepto:

control

Nota: Voy a personalizar el archivo changelog siguiendo el siguiente tutorial.

Personalizando el  archivo changelog

Ahora vamos a crear un changelog que ya contenga la información con más exactitud (por cuestiones de tiempo no les pongo a los otros dos paquetes), para esto instalemos primero la siguiente dependencia:

sudo apt install libdistro-info-perl devscripts

Ahora analice la siguiente línea donde le he puesto en negrita lo que usted puede modificar:

dch --create --distribution stable --package "dmidiplayer" --newversion 1.7.0 "Building the 32 bit debian deb package for MX Linux 21"

La versión del programa que está a esta fecha es la 1.7.0 y eso es lo que le puse, pero en el futuro estará otra versión y deberá editar esa parte, también puede poner otro mensaje en vez de "Building the 32 bit debian deb package for MX Linux 21" pero no se olvide de que está entre comillas. Luego que lo haya modificado ponga en la terminal en la raíz del nuestro proyecto:

dch --create --distribution stable --package "dmidiplayer" --newversion 1.7.0 "Building the 32 bit debian deb package for MX Linux 21"

así como en la siguiente imagen:



ahora revise la carpeta:

debian 


Ahí de por si ya funciona, pero si le desea agregar más información al archivo changelog yo lo hago con Gnome Builder porque me ayuda ver bien la estructura y que no se me muevan los carácteres importantes, lo puede instalar con:

sudo apt install gnome-builder

y cuando vayan a abrir el archivo changelog se abrirá con Gnome Builder

en la siguiente imagen lo he abierto con Gnome Builder:



yo le he añadido la siguiente información tomada del archivo README.md abierto con kate:


y me queda así:


ahora copie los archivos:

copyright
rules

que están en el repositorio que le dejé:

/dmidiplayer-1.7-Wachin-Dev/dmidiplayer-dev/debian/

y peguelos a su carpeta

debian

debe quedar así:



y abra su archivo:

control

y abre el archivo control que yo le he dejado y copie los datos importantes pegandolos al suyo y guardando así como anteriormente le expliqué

y luego ponga en la terminal:

dpkg-buildpackage -uc -b



y espere un momento, y en la carpeta anterior se creará el paquete deb:


Nota: Si desea al deb lo puede extraer con clic derecho Extraer aquí para que constate todo su contenido.

Ahora tenemos las dos dependencias con que se instala dmidiplayer


Descargar dmidiplayer 1.7.0 desde Github

He subido los paquetes a github, si los quiera usar:

https://github.com/wachin/dmidiplayer/releases/

https://github.com/wachin/dmidiplayer/releases/tag/v1.7.0



Cuando lo haya instalado el programa quedará instalado entre sus aplicaciones:



quedando con el nombre:

Reproductor Drumstick de archivos MIDI


Desinstalando las dependencias y dmidiplayer que instalamos desde código fuente

Si usted desea puede desinstalar los tres programas que instalamos desde código fuente para luego instalar los deb. Yo en lo personal no lo hago pues los deb generados los pruebo aparte en otro MX Linux 21 instalado (también todo esto se podría hacer en máquinas virtuales)

Para desinstalar sonivox desde código fuente que hemos compilado
Si en algún momento desea desinstalar el sonivox que compilamos e instalamos de su sistema, solo se puede desinstalar de forma manual borrando cada carpeta y archivo instalado, para eso vea el archivo de texto:

sonivox-3.6.11/build/install_manifest.txt

esos los puede borrar con algún administrador de archivos con permisos de super usuario, ejemplo:

sudo pcmanfm

y con cuidado buscar cada ruta y borrar


Para desinstalarlo drumstick y drumstick desde código fuente que hemos compilado

Estándo en la carpeta:

build

que está en el codigo fuente de cada uno se pone en una terminal:

sudo make uninstall


Alien para obtener el archivo rules

Si se pregunta cómo se esto, bueno pues un día estaba convirtiendo un rpm de VNote a deb y allí empezó todo
 
Había buscado la palabra:
 
vnote
 
en:


y encontré:
 
sudo alien -d -c vnote-1.20-1.11.i586.rpm

 

ejecutando la conversión:
 

 Alien crea la carpeta debian:


copiar la carpeta debian y dentro está el archivo rules que Alien ha creado, ese es el archivo que modifiqué, puede comparar los cambios con por ejemplo Meld. Lo que hice yo fue modificar el comando que buscaba la carpeta usr pues el de Alien buscaba todos los archivos alrededor y en nuestro proyecto no podemos hacer eso pues alrededor de la carpeta usr tenemos las demás carpetas de vnote. Las instrucciones para el paquete deb de VNote aquí

Usando dmidiplayer

Abra el programa y de clic en:

Archivo → Abrir

busque un archivo de alguna secuencia, pueden ser:

.kar
.mid
.midi
.rmi
.wrk

en la siguiente imagen estoy escuchando un MIDI:



Por defecto el programa está configurado para reproducir los archivos de secuencias usando SonivoxEAS, esto lo puede constalar en:

Preferencias → Ajustes MIDI


Usando dmidiplayer con JACK

Si usted desea usar este programa en UbuntuStudio o AV Linux debe usar ALSA

Antes de todo instale una fuente de sonido, ejemplo la siguiente que para mi tiene buen sonido:

sudo apt-get install musescore-general-soundfont-lossless

También puede instalar otras, aquí le dejo un tutorial:

Fuentes de sonido (SoundFonts) gratis desde paquetes de Ubuntu, Debian, Deepin Linux y TuxGuitar

Ahora, debe usted seguir estos pasos:

  1. Abrir QjackCtl y darle Play
  2. Abrir Qsynth y cargar una fuente de sonidos:
    Configuración → SoundFonts → Abrir
  3. Abrir dmidiplayer y en Ajustes MIDI seleccionar ALSA y debajo aparecerá FLUID Synth

En la siguiente imagen estoy escuchando un MIDI con muy buen sonido:

esta versión 1.7 trae algo muy especial, control de volumen para cada canal de instrumentos, esto está en:

Ver - Canales


y clic en:



 
Dios les bendiga

CONSULTA:

command line - Copy a list of files preserving directory structure, without scripts - Super User
https://superuser.com/a/668303

Drumstick MIDI File Player Multiplatform (mirror)
https://github.com/pedrolcl/dmidiplayer
https://dmidiplayer.sourceforge.io/

Command linux xsltproc not found in a script
https://stackoverflow.com/questions/69424536/command-linux-xsltproc-not-found-in-a-script

doxygen missing components: dot #129
https://github.com/labapart/gattlib/issues/129
https://github.com/labapart/gattlib/issues/129#issuecomment-699617624
CMake Error at /usr/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:165 (message):
  Could NOT find Doxygen (missing: dot) (found version "1.9.1")
Call Stack (most recent call first):
  /usr/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:458 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-3.18/Modules/FindDoxygen.cmake:633 (find_package_handle_standard_args)
 CMakeLists.txt:302 (find_package)


Comentarios