System: Haiku
License: Creative Commons LicenseAttribution-NonCommercial 4.0 International (CC BY-NC 4.0)



Il sistema operativo Haiku è al momento nello stato di alpha, e nonostante la stabilità raggiunta è ancora in una fase di continuo cambiamento; infatti basta scaricare una delle nightly image per rendersi conto delle varie novità rispetto all'ultima release ufficiale l'alpha 4.1 . Una delle principali novità è l'introduzione del package management, incluso per la prima volta nella nightly image hrev46113.

HPKG è il formato utilizzato per i package in Haiku ed è stato realizzato affinché il package-fs di Haiku possa accedere velocemente alla struttura dei file e contenuti in modo da facilitare il montaggio delle cartelle contenenti questi package.

Quello che accade se montate una cartella piena di file *.hpkg è che il package-fs combina tutti questi package per costruire una gerarchia di file e cartelle (di sola lettura) e tale gerarchia è live nel senso che cambia immediatamente aggiungendo o togliendo i package.

Tutto ciò ha richiesto di modificare la struttura gerarchica in cui erano prima organizzati i dati sotto Haiku.

Prima del Package Management la struttura del filesystem di Haiku si ispirava a BeOS che a sua volta ricalcava quella dei sistemi POSIX, con una directory principale /boot e varie sotto directory:

/boot/apps
/boot/common
/boot/develop
/boot/home
/boot/optional
/boot/preferences
/boot/system

Essenzialmente rispetto a BeOS era cambiato per motivi di copyright /boot/beos che in Haiku è diventato /boot/system , inoltre era stata aggiunta la cartella common mentre erano state tolte le cartelle demos e tmp.

In Haiku quello che riguardava il sistema era contenuto in /boot/system mentre quello che riguardava l'utente in /boot/home tuttavia nulla impediva all'utente di mettere le mani in /boot/system cosa che non è più possibile con l'arrivo del Package Management.

Con la comparasa del Package Management in Haiku la situazione è la seguente:

/boot/home
/boot/system

Quindi attualmente la directory principale ha solo due sottocartelle e /boot/system ora è una cartella di sola lettura.

Per quanto riguarda la directory /boot/home la struttura è rimasta identica

/boot/home/config
/boot/home/Desktop
/boot/home/mail
/boot/home/queries

mentre per quanto riguarda la directory /boot/system alla struttura originaria

/boot/system/add-ons
/boot/system/apps
/boot/system/bin
/boot/system/boot
/boot/system/data
/boot/system/demos
/boot/system/documentation
/boot/system/lib
/boot/system/preferences
/boot/system/serves

sono state aggiunte le seguenti cartelle

/boot/system/non-packaged
/boot/system/package-links
/boot/system/packages
/boot/system/settings
/boot/system/var

ed inoltre sono state spostate sotto /boot/system anche le cartelle

/boot/system/develop
/boot/system/optional

A partire dalla revisione del sistema hrev46391 è possibile fare in modo che un package non sia estratto in fase di boot dal package file system. Come abbiamo visto alcune directory sono di sola lettura per cui non è possibile disattivare un driver semplicemente cancellandolo. Per risolvere il problema esiste una Blacklist per crearla inserite un file di testo dal nome 'packages' in /boot/system/settings (nel caso di package di sistema) oppure in /boot/home/config/settings/global (nel caso di package utente). Il testo da inserire nel file è il seguente:

Package 'packagename' { 
EntryBlacklist { 
'entrypath' 
... 
}}

Dove 'packagename' è il nome del package senza versione ed 'entrypath' è il percorso dove è installato il package, in questo modo il package-fs ingnorerà i package inseriti nella blacklist ed essi non appariranno nel file system. Ad esempio se vogliamo eliminare il driver broadcom570x , dovremo inserire in /boot/system/settings il file packages con il seguente testo:

Package haiku { 
EntryBlacklist { 
add-ons/kernel/drivers/bin/broadcom570x 
}}

al riavvio il package verrà montato di nuovo ed il file indicato verrà ignorato dal package-fs



Un package (file con estensione .hpkg) può essere installato automaticamente utilizzando HaikuDepot una nuova applicazione presente nel sistema, oppure una volta scaricato dal web può essere installato inserendolo in /boot/home/config/packages , se il package inserito contiene un applicazione al riavvio comparirà in /boot/home/config/apps. Naturalmente continua ad essere possibile l'installazione di applicazioni contenute in file .zip che possono essere decompressi dove volete in /boot/home/

Cos'è un Haiku Package (.hpkg) ?

Si tratta di un formato di file creato per un efficiente uso da parte dell'Haiku package file system e si ispira al formato XAR anche se non contiene un XML per il TOC. Un file hpkg consiste di 4 parti:

Header che identifica il file come un hpkg e fornisce l'accesso alle altre sezioni

Heap fornisce un contenitore per dati arbitrari

TOC contiene la struttura dei dati con riferimenti a quanto contenuto nell'heap

Package Attributes è una sezione simile alla TOC che specifica i meta data del package

In sostanza un file hpkg è un archivio come un file zip o tar che in più contiene informazioni sul package in una sezione separata.

Esempio: per creare un file .hpkg dell'applicazione BePodder bisogna innanzitutto creare una "nuova cartella" contenente la sottocartella "apps" ed eventuali altre sottocartelle se necessarie, poi inserire in apps l'applizazione BePodder. A questo punto bisogna creare il file ".PackageInfo" nella cartella princiale "nuova cartella". La sintassi esatta del file ".PackageInfo" la trovate nel PM wiki http://dev.haiku-os.org/wiki/PackageManagement/BuildingPackages

Se apriamo un .hpkg con Expander il file ".PackageInfo" apparirà più o meno così:

name BePodder 
version 1.2.9-1 
architecture x86_gcc2 

summary "A media aggregator" 
description "BePodder is a media aggregator (and more) for Haiku..." 

packager "Giuseppe Gargaro <Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.>" 
vendor "Funkyideasoftware" 

copyrights "2007-2013 Funkyideasoftware" 
licenses "MIT" 

provides { 
BePodder = 1.2.9-1 
} 

requires { 
haiku >= r1~alpha4_pm-1 
} 

user-settings-files { 
"settings/" directory 
}

La licenza MIT esiste già sotto /system/data/licenses/ ma potete comunque crearne una vostra se necessario.

Per finire creiamo il file .hpkg aprendo un terminale e dando i seguenti comandi (che volendo possono essere inseriti in uno script):

cd /boot/home/Desktop/Nuova\ cartella/ 
package create -b bepodder.hpkg 
package add bepodder.hpkg apps

Una volta creato il file bepodder.hpkg per installare l'applicazione basterà inserire questo package in ~/config/packages e l'applicazione BePodder apparirà in ~/config/apps/

Tutorial By Giuseppe Gargaro, 2013
Made available by BeSly, the Haiku, BeOS and Zeta knowledge base.