2010-07-09 14 views
26

Tengo un gran proyecto en el que tenemos los siguientes archivos:necesito mi archivo de reglas de Debian sencillamente copiar los archivos a su blanco

  • Algunos de 3 ª parte binarios precompilados
  • Nuestra propia casa binarios
  • Una colección de scripts de Ruby
  • un rubí considerable en el proyecto de rieles

Este producto se instalará en hardware del dispositivo que mi El empleador ya ha seleccionado, usando Ubuntu Linux (Lucid) como el objetivo O.S., con el objetivo de distribuir el archivo como un paquete Debian para facilitar la instalación y las actualizaciones. Además, tenemos una serie de plantillas de ERB que necesitamos "completar" con los valores adecuados por cliente, por lo que el uso del script postinst será especialmente útil para nuestros propósitos.

Como nota al margen, los paquetes de Debian se almacenarán en un repositorio de servidor que administramos internamente.

En esta etapa he usado dh_make para crear el directorio Debian y los archivos relacionados (por ejemplo, reglas, control, etc.), pero el archivo de reglas que se genera parece excesivo para mis propósitos.

Basándose en esta descripción, todo lo que realmente necesitan las "reglas" de archivos que hacer es simplemente copiar archivos desde un directorio de origen (o dentro de un archivo) a los directorios de destino se muestra a continuación:

  • /opt/company_product/3rd_party_binaries/bin
  • /opt/company_product/3rd_party_binaries/etc
  • /opt/company_product/in_hourse_binaries/bin
  • /opt/company_product/in_hourse_binaries/etc
  • /opt/company_product/rubí
  • /opt/company_product/rails_project
  • /opt/company_product/etc
  • /opt/company_product/shared/logs
  • /opt/company_product/shared/tmp
  • /opt/company_product/shared/license
  • ... Y así sucesivamente.

He leído el Manual de Normas de Debian y varios Cómo Hacer que indican que no debe alterar el archivo de reglas para usar mkdir para crear directorios y no hay generalmente un dh_ aplicación (por ejemplo, , dh_installdirs, et.al.) que pueden adaptarse a sus necesidades para casi cualquier propósito de instalación. Las páginas man para estas aplicaciones relacionadas con dh_ son superficiales en el mejor de los casos, y yo soy un tipo de "ejemplo".

Dicho esto, estoy un poco perdido en lo que es el mejor enfoque para obtener mi archivo de reglas para instalar mis varios archivos binarios precompilados y Ruby/Rails en las ubicaciones deseadas.

Aquí es mi iniciales reglas archivo. Es más o menos un archivo estándar de reglas repetitivas que crea dh_make. Mi pensamiento es que debo comentar todas las secciones excepto por la instalación y luego encontrar el comando (s) apropiada para hacer directorios, copiar archivos, etc. dentro de esa sección.

Cualquier consejo o sugerencias son muy apreciadas.

 
#!/usr/bin/make -f 

package = testapp 

CC = gcc 
CFLAGS = -g -Wall 

ifeq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) 
    CFLAGS += -O2 
endif 

#export DH_VERBOSE=1 

clean: 
     dh_testdir 
     dh_clean 
     rm -f build 

install: build 
     dh_clean 
     dh_installdirs 
     echo "Place the Install Script here" 
     cp $(CURDIR)/testapp-2.0.tar.gz $(CURDIR)/debian/$(package)/opt/testapp-2.0 
     echo "Finished copying folders" 


build: 
     touch build 

binary-indep: install 
# There are no architecture-independent files to be uploaded 
# generated by this package. If there were any they would be 
# made here. 

binary-arch: install 
     dh_testdir -a 
     dh_testroot -a 
     dh_installdocs -a 
     dh_installchangelogs -a 
     dh_strip -a 
     dh_compress -a 
     dh_fixperms -a 
     dh_installdeb -a 
     dh_shlibdeps -a 
     dh_gencontrol -a 
     dh_md5sums -a 
     dh_builddeb -a 

binary: binary-indep binary-arch 

.PHONY: binary binary-arch binary-indep clean checkroot 

Respuesta

54

Aunque ya tiene su propia respuesta, señalaré un par de cosas.

usted parece estar haciendo esto de una manera muy complicada. Si sólo hay que copiar los archivos en ciertos directorios, escribir una debian/mypackagename.install con el siguiente formato: (. No anteponer / antes /usr, o /opt, o lo que su directorio de destino es Leer man dh_install para más información)

path/to/file/relative/to/source/root path/to/install/relative/to/system/root 

Luego, su debian/rules puede ser:

#!/usr/bin/make -f 

%: 
    dh [email protected] 

Si tiene algún tipo de archivo MAKE, etc en su raíz de la fuente, tiene que poner esto en el fichero de rules arriba:

override_dh_auto_build: 

override_dh_auto_install: 

No se olvide de poner en 7debian/compat.

Además, no se debe instalar archivos en /opt/ o /usr/local/, etc. Los que están destinados para los archivos no instalados por paquetes Debian. Debian recomienda instalar en /usr/share/yourcompany/. Como juzzlin señala a continuación, el Centro de Software de Ubuntu puede tener requisitos diferentes.

Más específicamente, el archivo de mypackage.install debería tener este aspecto:

src/bin/* usr/bin 
src/etc/* etc/ 
+0

sugerencias excelentes. Una vez que hago esto, ¿qué comando debería usar para construir el paquete Deb? –

+0

ok, ejecuté dpkg-buildpackage y obtuve un archivo .deb, pero cuando lo instalo en el servidor de destino no ejecuta mi archivo debian/mypackagename.install. Además, si tengo scripts que entran en init.d, ¿dónde los pongo? –

+0

Aquí es mi estructura de directorios: build_deploy.rb build_package.rb docs debian extras Rakefile src test.txt. Bajo src es la siguiente: Filtro consola bin created_vipre.sql etc install.rb optar transporte SPF. Todo lo que quiero es tener un archivo .deb que contenga todo lo relacionado con src. Luego quiero que esa estructura exacta se copie a/opt/vipre en el sistema de destino. Entonces quiero que todo lo que se encuentre debajo de src/etc/init.d se copie a /etc/init.d. No estoy seguro de por qué no puedo obtener esto.Parece simple, pero los documentos me están confundiendo. Por favor ayuda. Muchas gracias. –

-1

Puede instalar cdbs y cambiar el archivo de reglas de este tipo

#!/usr/bin/make -f 

include /usr/share/cdbs/1/rules/debhelper.mk 

binary-install/package_name:: 
        mkdir debian/$(cdbs_curpkg)/destination_path 
        cp path_of_your_files debian/$(cdbs_curpkg)/destination_path 
Cuestiones relacionadas