Me gustaría crear un nuevo paquete de Deb para instalar una serie de archivos. Si es posible, me gustaría descomprimir la carpeta que contiene estos archivos como parte de la instalación en una ubicación de carpeta conocida. De lo contrario, algunos conocimientos sobre cómo empaquetar las carpetas y archivos de origen serían muy útiles.
La pregunta es: ¿es esto posible? De ser así, ¿cómo?
Vamos a dar un ejemplo:
~/mypluginfolder/contiene los archivos x, yuna subcarpeta llamada abcy dentro de ese otro archivo llamado z.
Quiero tar esta carpeta: tar -cvf myfiles.tar ~/mypluginfolder
Supongo que mi paquete Debian se vería así
myfiles.tar.gz
myfiles+ppafoss_0.1-1/
myfiles.tar
DEBIAN
changelog, compat, control, install, rules source
¿Es posible de alguna manera descomprimir myfiles.taren una ubicación de carpeta conocida, por ejemplo
/usr/share/rhythmbox/plugins/
Así, el resultado final sería:
/usr/share/rhythmbox/plugins/mypluginfolder
/usr/share/rhythmbox/plugins/mypluginfolder\x
/usr/share/rhythmbox/plugins/mypluginfolder\y
/usr/share/rhythmbox/plugins/mypluginfolder\abc\z
Si, suponiendo que launchpad necesita fuente, se solicita asesoramiento sobre dónde debo colocar las carpetas y archivos de origen en la estructura del paquete deb.
Esto eventualmente se convertirá en una serie de paquetes individuales PPA de launchpad.
Lo que prefiero (pero es posible que no pueda lograr ...) es mantener mi paquete al mínimo: crear una serie de paquetes a partir de una plantilla y ajustar el mínimo (registro de cambios, etc. + la estructura del archivo / archivo y carpeta tar) .
fuente

Respuestas:
A continuación, supongo que la fuente está abierta (por ejemplo, scripts de Python) que, por lo tanto, no están vinculados a ninguna arquitectura (por ejemplo, amd64 o i386), por lo tanto, "todos". Si tiene alguna fuente C, debe usarla
Architecture: amd64 i386en sucontrolarchivo fuente .creando un paquete listo para Launchpad
Launchpad solo acepta paquetes fuente, así que cree uno
rulesque instale los archivos en los lugares correctos. Por conveniencia, usaré debhelper . El directorio con sus archivos debería verse así:Un
debian/copyrightarchivo también puede ser útil para informar a los usuarios sobre las licencias asociadas con el paquete. No creo que necesites unpostinstscript ya que solo necesitas extraer algunos archivos.compatdebe contener el nivel de compatibilidad de debhelper, diga "8". (consulte la página del manual de debhelper para obtener más detalles)El
changelogarchivo se puede editar con eldchcomando, disponible desde eldevscriptspaquete. Elrules(usando debhelper) debe contener:Hazlo ejecutable usando
chmod 755 debian/rules. Se puede construir un paquete fuente usandodebuild -S. Asegúrese de estar en un directorio llamado<package-name>-<version>. Puede encontrar más información sobre eloverride_comportamiento y eldhcomando en su página de manual .La Guía para nuevos mantenedores de Debian fue muy valiosa para que entendiera esto, es una lectura recomendada. Puede encontrar ejemplos de empaques en https://github.com/Bumblebee-Project/bumblebee-ppa .
crear paquete desde el árbol de archivos existente
dpkg-deb -bse puede usar para crear tarballs a partir de un árbol de archivos existente. Primero, comience con la creación de un directorio que debe llamarse después de su paquete. Asumiré que quieres nombrarlomypluginy ponerlo/usr/share/rhythmbox/plugins/mypluginfolder. Además, cree elDEBIANdirectorio (en mayúsculas) para almacenar la información del paquete:Copie sobre sus archivos:
A continuación, necesitará un llamado archivo de control ubicado en el
myplugin/DEBIAN/controlque se describe el paquete. El contenido de dicho archivo se muestra a continuación:Ahora, opcionalmente, puede verificar el contenido de su paquete. El siguiente comando enumera el contenido de las entradas de archivo y directorio de
myplugin:Si está satisfecho, cree el paquete en el directorio actual:
Aparecerá un nuevo archivo, llamado como el
<package>_<version>_<architecture>.debque está en este ejemplomyplugin_1.0-1_all.deb. Puede usar ellessprograma para echar un vistazo al archivo. Por ejemplo,less myplugin_1.0-1_all.deb.fuente