it-swarm-es.com

¿Cómo hacer que el archivo .so aparezca en el paquete?

Como muchos de ustedes ya saben, estoy creando un paquete :)

Estoy tan cerca de terminarlo para poder cargarlo en mi PPA, pero todavía hay un pequeño problema: la biblioteca compartida (archivo .so) no quiere entrar en el paquete.

Bien, esto es lo que tengo en mi archivo de control:

 Fuente: jsoncpp 
 Prioridad: extra 
 Mantenedor: ****** 
 Build-Depends: debhelper (> = 7) 
 Estándares -Versión: 3.8.3 
 Sección: libs 
 Página de inicio: http://jsoncpp.sf.net 
 
 Paquete: jsoncpp-dev 
 Sección: libdevel 
 Arquitectura: cualquiera 
 Depende: jsoncpp0 (= $ {binary: Version}) 
 Descripción: biblioteca de análisis JSON para C++ 
 Jsoncpp es una biblioteca C++ eso facilita 
 leer/escribir datos JSON. 
. 
 Este paquete contiene las herramientas de desarrollo necesarias 
 para crear aplicaciones que usan jsoncpp. 
 
 Paquete: jsoncpp0 
 Sección: libs 
 Arquitectura: cualquiera 
 Depende: $ {shlibs: Depende}, $ {misc: Depende} 
 Descripción: la biblioteca de análisis JSON para C++ 
 Jsoncpp es una biblioteca de C++ que facilita la lectura 
 De datos JSON/escritura. 

Ahora, jsoncpp-dev se compila bien y los archivos de desarrollo se muestran en el paquete pero la biblioteca compartida no se muestra en su paquete.

Así es como se ve jsoncpp0.dirs:

 usr/lib 

... y jsoncpp-dev.dirs:

 usr/lib 
 usr/include 

Mi Makefile actualizado es aquí .

Avíseme si necesita más información.

1
Nathan Osman

Este fue el resultado de un error bastante malo de mi parte. De alguna manera, jsoncpp0.install se renombró a jsoncpp0install (sin el punto).

De todos modos, funciona ahora.

0
Nathan Osman

Realmente desea utilizar el sistema de compilación (scons) que usa jsoncpp, ya que probablemente esté bien adaptado para el paquete. En primer lugar, los nombres de paquete que está utilizando deben tener el prefijo lib, como libjsoncpp0 (suponiendo que el archivo resultante sea /usr/lib/libjsoncpp.so.0) Para instalar los archivos, debe tener estos archivos listados en el .instalar archivos, por ejemplo, debian/libjsoncpp0.install tendría /usr/lib/lib*.so.* para instalar el archivo correcto. libjsoncpp-dev tendría los archivos en/usr/include/* y /usr/lib/lib*.so

La guía de empaquetado de la biblioteca en http://www.netfort.gr.jp/~dancer/column/libpkg-guide/libpkg-guide.html puede ser compleja, pero tiene información importante sobre el forma correcta de empaquetar bibliotecas para que se integren bien en Debian y Ubuntu.

Además, a menudo hay personas disponibles en # ubuntu-motu o # ubuntu-packaging en irc.ubuntu.com para ayudar con las preguntas que pueda tener.

2
ajmitch