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
, y
una subcarpeta llamada abc
y 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.tar
en 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 i386
en sucontrol
archivo fuente .creando un paquete listo para Launchpad
Launchpad solo acepta paquetes fuente, así que cree uno
rules
que instale los archivos en los lugares correctos. Por conveniencia, usaré debhelper . El directorio con sus archivos debería verse así:Un
debian/copyright
archivo también puede ser útil para informar a los usuarios sobre las licencias asociadas con el paquete. No creo que necesites unpostinst
script ya que solo necesitas extraer algunos archivos.compat
debe contener el nivel de compatibilidad de debhelper, diga "8". (consulte la página del manual de debhelper para obtener más detalles)El
changelog
archivo se puede editar con eldch
comando, disponible desde eldevscripts
paquete. 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 eldh
comando 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 -b
se 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 nombrarlomyplugin
y ponerlo/usr/share/rhythmbox/plugins/mypluginfolder
. Además, cree elDEBIAN
directorio (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/control
que 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>.deb
que está en este ejemplomyplugin_1.0-1_all.deb
. Puede usar elless
programa para echar un vistazo al archivo. Por ejemplo,less myplugin_1.0-1_all.deb
.fuente