package - todos - Necesito mi archivo de reglas de Debian para simplemente copiar archivos a su destino
mover varios archivos en linux (2)
Aunque ya tienes tu propia respuesta, te señalaré un par de cosas.
Parece que estás haciendo esto de una manera muy complicada. Si simplemente necesita copiar archivos en ciertos directorios, escriba un debian/mypackagename.install
con el siguiente formato:
path/to/file/relative/to/source/root path/to/install/relative/to/system/root
(no anteponga /
antes de /usr
, /opt
, o cualquiera que sea su directorio de destino. Lea man dh_install
para obtener más información)
Entonces tu debian/rules
puede ser:
#!/usr/bin/make -f
%:
dh $@
Si tiene algún tipo de archivo make, etc. en su raíz de origen, agregue esto al archivo de rules
anterior:
override_dh_auto_build:
override_dh_auto_install:
No olvides poner 7
en debian/compat
.
Además, no debe instalar archivos en /opt/
o /usr/local/
, etc. Estos archivos están diseñados para archivos que no están instalados por los paquetes de Debian. Debian recomienda instalar en /usr/share/yourcompany/
. Como juzzlin señala juzzlin a continuación, el Centro de software de Ubuntu puede tener diferentes requisitos.
Más específicamente, su archivo mypackage.install
debería verse así:
src/bin/* usr/bin
src/etc/* etc/
Tengo un gran proyecto donde tenemos los siguientes archivos:
- Algunos binarios precompilados de terceros
- Nuestros propios binarios internos.
- Una colección de scripts de ruby
- Un proyecto considerable de Ruby on Rails
Este producto se instalará en el hardware del dispositivo que mi empleador ya ha seleccionado, utilizando Ubuntu Linux (Lucid) como el sistema operativo de destino, 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 ERB que necesitamos "rellenar" con los valores adecuados para cada cliente, por lo que el uso del script postinst será particularmente útil para nuestros propósitos.
Como nota al margen, los paquetes de Debian se almacenarán en un repositorio de servidores que administramos internamente.
En esta etapa, he usado dh_make para crear el directorio de Debian y los archivos relacionados (por ejemplo, reglas, control, etc.), pero el archivo de reglas que se genera parece una exageración para mis propósitos.
Basado en esta descripción, todo lo que realmente necesito para hacer el archivo de "reglas" es simplemente copiar archivos de un directorio de origen (o dentro de un archivo) a los directorios de destino que se muestran 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 / ruby
- / 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í.
He leído el Manual de políticas de Debian y varios How-To''s que indican que no debe alterar el archivo de reglas para usar mkdir para crear directorios y generalmente hay una aplicación dh_ (por ejemplo, dh_installdirs, et.al.) que puede adaptarse a su necesidades para casi cualquier propósito de instalación. Las páginas de manual para estas aplicaciones relacionadas con dh_ son, en el mejor de los casos, breves , y yo soy un tipo de "ejemplo".
Dicho esto, estoy un poco perdido respecto a cuál es el mejor enfoque para lograr que mi archivo de reglas instale mis archivos binarios precompilados y los archivos de texto Ruby / Rails en las ubicaciones deseadas.
Aquí está mi archivo de reglas iniciales. Es casi un archivo de reglas estándar que crea dh_make. Mi pensamiento es que debo comentar todas las secciones excepto la instalación y luego encontrar los comandos apropiados para hacer directorios, copiar archivos, etc. dentro de esa sección.
Cualquier consejo o sugerencia son muy apreciados.
#!/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
Puedes instalar cdbs y cambiar el archivo de reglas como este
#!/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