Autore Topic: creare un pacchetto opk e ipk  (Letto 1739 volte)

truthahn

  • Global Moderator
  • Hero Member
  • *****
  • Post: 1546
    • Mostra profilo
creare un pacchetto opk e ipk
« il: Febbraio 09, 2010, 10:24:16 pm »
Ho voluto impacchettare in un opk gli script per la gestione gpio e cos? ho visto come sono organizzati e gestiti.
Forse ? una banalit? ma forse a qualcuno pu? servire... riporto quindi l'esempio.
un pacchetto opk, come un ipk, ? un file archivio che contiene altri file compressi...
nel mio caso i file (script, configurazioni, eseguibili) erano destinati alle seguenti directory

/etc/centralina/
/etc/centralina/log/
/usr/lib/webif/
/usr/sbin/
/bin/centralina/
/www/
/www/images/
/www/themes/clubman/
/www/cgi-bin/
/www/cgi-bin/webif/
/www/cgi-bin/webif/centralina/


ho quindi creato una directory e nominata "webif-gpio" e dentro le cartelle sopranominate con tutti i file da installare.
Nella stessa directory "webif-gpio" va creata la directory "CONTROL" e all'interno il file "control" cos? composto (nel mio caso):

Package: webif-gpio
Priority: optional
Section: Misc
Version: 0.1
Architecture: all
Maintainer: Truthan vonkosta@gmail.com
Depends:
Source: http://www.bingobongo.nl/control-gpio.tgz
Description: Centralina GPIO Xwrt8.09.2 -  wrt54gl.

Credo sia intuitivo... l'architettura va compilata in base alla stessa, all definisce, naturalmente, che va bene per tutte.
le dipendenze vanno, in questo caso non ce ne sono, elencate separate da virgola.

Poi, sempre nella stessa directory "webif-gpio" va dato un

Codice: [Seleziona]
echo "2" > debian-binary"

 per creare tale file.

Ora la struttura ? pronta. Le operazioni vanno fatte da root e i file devono essere di propriet? dello stesso. se si impacchetta da user poi gli script o gli applicativi non vengono eseguiti sul router. Ora tgziamo le dir che contendono i nostri file.

Codice: [Seleziona]
tar cvzf data.tar.gz ./usr/ ./etc/ ./bin/ ./www/

e il file che contiene le informazioni

Codice: [Seleziona]
cd CONTROL
tar cvzf ../control.tar.gz .
cd ..

e mettiamo il tutto dentro all'opk

Codice: [Seleziona]
ar -crf webif-gpio_0.1_all.opk debian-binary data.tar.gz control.tar.gz

per l'ipk invece

Codice: [Seleziona]
tar cvzf webif-gpio_0.1_all.tar.gz debian-binary data.tar.gz control.tar.gz
mv cvzf webif-gpio_0.1_all.tar.gz  cvzf webif-gpio_0.1_all.ipk

dove nome_versione_archittettura devono corrispondere a quelli dichiarati nel file "control".
e cosi ci troviamo il nostro opk o ipk pronto per l'installazione.

per estrarre un file opk basta un "ar -x nome_pacchetto.opk"
« Ultima modifica: Febbraio 10, 2010, 09:02:13 am da truthahn »

TechBek

  • Sr. Member
  • ****
  • Post: 782
    • Mostra profilo
Re: creare un pacchetto opk e ipk
« Risposta #1 il: Febbraio 10, 2010, 11:30:50 am »
continua cos? che ci piaci  :mrgreen:

fpaliuc

  • Full Member
  • ***
  • Post: 140
  • www.cristinasurbera.it
    • Mostra profilo
Re: creare un pacchetto opk e ipk
« Risposta #2 il: Febbraio 17, 2012, 01:59:31 pm »
Ho appena letto il post di Truthahn e ho fatto un'altra prova: ho creato un makefile da utilizzare quando si compila OpenWRT. In questo modo, il nostro pacchetto per la centralina può essere direttamente integrato nell'immagine compilata.

I passi da seguire sono (assumo che avete già scaricato l'SVN di OpenWRT):

1. Aprire la cartella package
2. Nella cartella package creare una cartella chiamata: domotica (o come vi pare)
3. Copiare nella cartella "domotica" il mio makefile (come esempio) e poi modificatelo in base alle esigenze
4. Nella cartella "domotica" creare una nuova cartella chiamata: files
5. Copiare dentro la cartella "files" tutti i file che ci servono per il package
6. Aggiungere nel makefile le voci $(INSTALL_DIR) e $(INSTALL_DATA) o $(INSTALL_BIN) per ogni file da aggiungere nel package (quelli già aggiunti nella cartella "files")
7. Compilare il package o l'immagine completa

Il codice del makefile:
Codice: [Seleziona]
#
# Copyright (C) 2010-2011 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#

include $(TOPDIR)/rules.mk

PKG_NAME:=domotica
PKG_VERSION:=1
PKG_RELEASE:=12

include $(INCLUDE_DIR)/package.mk

define Package/domotica
  SUBMENU:=Domotica
  SECTION:=net
  CATEGORY:=Network
  TITLE:=Controllo domotico
  MAINTAINER:=Kylix <fpaliuc@gmail.com>
  PKGARCH:=all
endef

define Package/domotica/description
Gestione luci, prese, sensori di temperatura, SMS, Webcam.
endef

define Build/Compile
endef

define Build/Configure
endef

define Package/domotica/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) ./files/allarme.sh $(1)/usr/sbin/allarme.sh
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_DATA) ./files/cancellajpg $(1)/usr/sbin/cancellajpg
$(INSTALL_DIR) $(1)/usr/lib/webif
$(INSTALL_DATA) ./files/categories.awk.dom $(1)/usr/lib/webif/categories.awk.dom
$(INSTALL_DIR) $(1)/usr/lib/webif
$(INSTALL_DATA) ./files/webif.sh.dom $(1)/usr/lib/webif/webif.sh.dom
$(INSTALL_DIR) $(1)/www/images
$(INSTALL_DATA) ./files/cassaforte.jpg $(1)/www/images/cassaforte.jpg
endef

$(eval $(call BuildPackage,domotica))

I file eseguibili devono essere inseriti con $(INSTALL_BIN)
« Ultima modifica: Febbraio 17, 2012, 02:08:47 pm da fpaliuc »

lupin73

  • Full Member
  • ***
  • Post: 128
    • Mostra profilo
    • E-mail
Re: creare un pacchetto opk e ipk
« Risposta #3 il: Febbraio 17, 2012, 10:32:34 pm »
Ho appena letto il post di Truthahn e ho fatto un'altra prova: ho creato un makefile da utilizzare quando si compila OpenWRT. In questo modo, il nostro pacchetto per la centralina pu? essere direttamente integrato nell'immagine compilata.

I passi da seguire sono (assumo che avete gi? scaricato l'SVN di OpenWRT):

1. Aprire la cartella package
2. Nella cartella package creare una cartella chiamata: domotica (o come vi pare)
3. Copiare nella cartella "domotica" il mio makefile (come esempio) e poi modificatelo in base alle esigenze
4. Nella cartella "domotica" creare una nuova cartella chiamata: files
5. Copiare dentro la cartella "files" tutti i file che ci servono per il package
6. Aggiungere nel makefile le voci $(INSTALL_DIR) e $(INSTALL_DATA) o $(INSTALL_BIN) per ogni file da aggiungere nel package (quelli gi? aggiunti nella cartella "files")
7. Compilare il package o l'immagine completa

Il codice del makefile:
Codice: [Seleziona]
#
# Copyright (C) 2010-2011 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#

include $(TOPDIR)/rules.mk

PKG_NAME:=domotica
PKG_VERSION:=1
PKG_RELEASE:=12

include $(INCLUDE_DIR)/package.mk

define Package/domotica
  SUBMENU:=Domotica
  SECTION:=net
  CATEGORY:=Network
  TITLE:=Controllo domotico
  MAINTAINER:=Kylix <fpaliuc@gmail.com>
  PKGARCH:=all
endef

define Package/domotica/description
Gestione luci, prese, sensori di temperatura, SMS, Webcam.
endef

define Build/Compile
endef

define Build/Configure
endef

define Package/domotica/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) ./files/allarme.sh $(1)/usr/sbin/allarme.sh
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_DATA) ./files/cancellajpg $(1)/usr/sbin/cancellajpg
$(INSTALL_DIR) $(1)/usr/lib/webif
$(INSTALL_DATA) ./files/categories.awk.dom $(1)/usr/lib/webif/categories.awk.dom
$(INSTALL_DIR) $(1)/usr/lib/webif
$(INSTALL_DATA) ./files/webif.sh.dom $(1)/usr/lib/webif/webif.sh.dom
$(INSTALL_DIR) $(1)/www/images
$(INSTALL_DATA) ./files/cassaforte.jpg $(1)/www/images/cassaforte.jpg
endef

$(eval $(call BuildPackage,domotica))

I file eseguibili devono essere inseriti con $(INSTALL_BIN)

Ottimo prover?  :wink: