Namcap (Italiano)

This article or section needs to be
translated
.
Notes:
No updates since 2014 (Discuss in
Talk:Namcap (Italiano)
)
Namcap è uno strumento per controllare pacchetti binari ed codice sorgente di PKGBUILD alla ricerca di errori comuni nella pacchettizzazione; lo si può anche abilitare in modalità automatica. Namcap è stato scritto da
Jason Chu
.
Cambiamenti
: Il file
NEWS
nei repository git contiene le novità introdotte dalla versione precedente.
Sezione di sviluppo
:
https://gitlab.archlinux.org/pacman/namcap
Per
segnalare un bug
o
richiedere nuove funzionalità
per namcap, inviare un bug nella sezione
Packages:Extra
di Arch Linux
bugtracker
specificandone priorità ed importanza. Quando si segnalano bug è importante fornire esempi concreti dei pacchetti dove si verificano gli errori e non si dimentichi di comunicare il numero di versione.
Se si possono fornire delle patch (per correzione di bug o per nuovi moduli namcap), è possibile inviarle alla mailing list
arch-projects
. Lo sviluppo di Namcap viene gestito con git, quindi sono preferibili le patch in formato git.
Installazione
Installare
il pacchetto
namcap
dagli
official repositories
.
Come usarlo
Per lanciare namcap su un PKGBUILD o su un pacchetto binario pkg.tar.xz:
$ namcap FILENAME
Per visualizzare messaggi con ulteriori informazioni, invocare namcap con la flag
-i
:
$ namcap -i FILENAME
Si può anche consultare il manuale namcap(1) digitando
man namcap
dalla riga di comando.
Comprendere il significato dell'output
Namcap usa un sistema di
tags
per classificare gli output. Attualmente, i tags sono di tre tipi,
errors
(identificati da E),
warnings
(identificati da W) e
informational
(identificati da I). Gli errori sono importanti e dovrebbero essere corretti immediatamente; nella maggior parte dei casi sono relativi ad un insufficiente livello di sicurezza, licenze mancanti o problemi di permessi.
Normalmente namcap stampa una spiegazione "umanamente comprensibile" (talvolta con suggerimenti per la risoluzione dei problemi). Se si preferisce un output che possa essere facilmente interpretato da un programma aggiungere la flag -m (
machine-readable
) a namcap (questa funzionalità è attualmente in fase di sviluppo).
Tags
Link simbolici
symlink-found
(
informational
) Segnala ogni
link simbolico
presente nel pacchetto.
hardlink-found
(
informational
) Segnala ogni
link reale
presente nel pacchetto.
dangling-symlink
(
error
) Segnala le inesattezze dei link simbolici che si dirigono verso un file che non è presente nel pacchetto.
dangling-hardlink
(
error
) Segnala le inesattezze dei link reali che si dirigono verso un file che non è presente nel pacchetto.
Dipendenze
link-level-dependence
(
informational
) Fornisce informazioni su una libreria verso la quale un pacchetto punta il link dinamicamente.
dependency-is-testing-release
(
warning
) La dipendenza del pacchetto elencata è nei repository [core-testing] o [extra-testing]. I pacchetti vengono compilati per i repository ufficiali di Arch Linux (core e extra), mentre
non dovrebbero venir compilati
i pacchetti di [core-testing] o [extra-testing]. Per i pacchetti [core] e [extra], la compilazione degli appartenenti a [core-testing] o [extra-testing] dovrebbero essere messi nei repository [core-testing] o [extra-testing].
dependency-covered-by-link-dependence
(
informational
) Dipendenza coperta da altre dipendenze dal relativo link. Può essere definita una dipendenza ridondante.
dependency-detected-not-included
(
error
) Il file ha una dipendenza non elencata nell'array delle dipendenze. Ignorare l'errore se la dipendenza è elencata nella stringa delle dipendenze opzionali.
dependency-already-satisfied
(
warning
) La dipendenza è già installata (come dipendenza di qualche altro pacchetto, per esempio) e quindi ridondante. Si può usare lo strumento
pactree
da
pacman
per vedere l'albero delle dipendenze del pacchetto.
dependency-not-needed
(
warning
) Questa dipendenza non è richiesta da nessun file presente nel programma (entro i limiti di ciò che namcap può dedurre). Non funziona ancora bene con gli script (come per  pacchetti python o perl); in tal caso bisognerà fare il calcolo delle dipendenze da soli.
depends-by-namcap-sight
(
informational
) Una lista di dipendenze d'accordo con lo standard di namcap.
Licenze
missing-license
(
error
) A questo pacchetto manca una licenza. Le licenze dovrebbero essere messe nella stringa
license=()
del PKGBUILD. Consultare
Arch package guidelines
per ulteriori informazioni. È
molto importante
correggere questo errore il prima possibile, dal momento che non includere una licenza è in molti casi una violazione del copyright.
missing-custom-license-dir
(
error
) La licenza specificata è
custom
ma non è stata trovata la cartella della licenza in
/usr/share/licenses/
come specificato nelle linee guida del pacchetto.
missing-custom-license-file
(
error
) La licenza specificata è
custom
ma non è stato trovato il file con la licenza in
/usr/share/licenses/$pkgname
.
not-a-common-license
(
error
) La licenza specificata
non
è
custom
e non è presente nel pacchetto
licenses
incluso nella distribuzione Arch Linux.
File
Questa sezione descrive i tag relativi alle autorizzazioni non corrette dei file, o ai file non installati in conformità alle linee guida di FHS.
script-link-detected
(
informational
) Il seguente file è uno script.
file-in-non-standard-dir
(
warning
) Il seguente file è in una directory non standard rispetto a quelle definite dalle
FHS guidelines
[
link interrotto
2020-08-04]
. Le directory permesse sono:
bin/
,
etc/
,
usr/bin/
,
usr/sbin/
,
usr/lib
,
usr/include/
,
usr/share/
,
opt/
,
lib/
,
sbin/
,
srv/
,
var/lib/
,
var/opt/
,
var/spool/
,
var/lock/
,
var/state/
,
var/run/
,
var/log/
.
elffile-not-in-allowed-dirs
(
error
) I file ELF dovrebbero stare solo in queste directory:
/lib
,
/bin
,
/sbin
,
/usr/bin
,
/usr/sbin
,
/lib
,
/usr/lib
,
/opt/$pkgname/
.
empty-directory
(
warning
) La seguente directory nel pacchetto è vuota.
non-fhs-man-page
(
error
) Il pacchetto installa le pagine di manuale in un luogo diverso da
/usr/share/man
che è la directory per le pagine di manuale in base a
FHS guidelines
.
potential-non-fhs-man-page
(
warning
) Questo file sembra essere una pagina di manuale che non è installato in
/usr/share/man
anche se namcap non è troppo sicuro a riguardo.
non-fhs-info-page
(
error
) Il pacchetto installa le pagine informative in una posizione diversa da
/usr/share/info
che è dove devono essere installati i dati indipendenti dall'architettura secondo le
FHS guidelines
.
potential-non-fhs-info-page
(
warning
) Questo file sembra essere una pagina di informazioni che non è installata in
/usr/share/info
anche se namcap non è troppo sicuro a riguardo.
incorrect-permissions
(
error
) Questo file ha permessi non corretti. I file in pacchetti binari dovrebbero appartenere a
root/root
.
file-not-world-readable
(
warning
) Il file non è leggibile da tutti; di solito non dovrebbe essere così.
file-world-writable
(
warning
) Chiunque può scrivere su questo file; anche in questo caso, non è la norma.
directory-not-world-executable
(
warning
) La directory non ha impostato il bit eseguibile. Questo non consente l'accesso alla directory per i programmi in esecuzione con privilegi di utente.
incorrect-library-permissions
(
warning
) Il file della libreria non ha il permesso 644 (lettura e scrittura da root, lettura da chiunque altro).
libtool-file-present
(
warning
) Questo file è di tipo libtool (.la) e di norma non dovrebbe essere presente. Si può utilizzare l'opzione
!libtool
nella stringa
opzioni
del PKGBUILD per rimuovere questi file automaticamente.
perllocal-pod-present
(
error
) I file perllocal.pod non dovrebbero essere presenti in un pacchetto perl; consultare
Perl package guidelines
per ulteriori informazioni.
scrollkeeper-dir-exists
(
error
) Una directory scrollkeeper è stata trovata nel pacchetto. scrollkeeper non dovrebbe essere eseguito fino al post {install,upgrade,remove}.
info-dir-file-present
(
error
) Il file della directory info /usr/share/info/dir è stato trovato nel pacchetto. Questo file non dovrebbe essere presente.
gnome-mime-file
(
error
) Il file è del tipo autogenerato da GNOME mime e non dovrebbe essere presente nel pacchetto.
Varie
mime-cache-not-updated
(
error
) Il pacchetto installa i file mime, ma non richiama update-mime-database per aggiornarli.
hicolor-icon-cache-not-updated
(
error
) Ci sono file in /usr/share/icons/hicolor ma la cache delle icone hicolor non è stata aggiornata. Si dovrebbe usare
gtk-update-icon-cache
(per i pacchetti dipendenti da gtk) o
xdg-icon-resource
per aggiornare la cache delle icone. Se si utilizza
xdg-icon-resource
allora si dovrebbe dichiarare una dipendenza da
xdg-utils
.
insecure-rpath
(
error
) Un RPATH (per un eseguibile) è al di fuori di
/usr/lib
. Un RPATH in una posizione non sicura è un potenziale problema di sicurezza. Consultare
FS#14049
[
link interrotto
2020-08-04]
.
PKGBUILDs
Questi sono i tag relativi ai PKGBUILD. Alcuni di questi possono essere applicati anche per i pacchetti binari.
variable-not-array
(
warning
) La variabile dovrebbe essere un array di bash, invece di una stringa. Queste sono le variabili che devono essere scritte come array:
arch
,
license
,
depends
,
makedepends
,
optdepends
,
provides
,
conflicts
,
replaces
,
backup
,
source
,
noextract
,
md5sums
.
backups-preceding-slashes
(
error
) Il file menzionato nell'array di backup inizia con una barra (/).
package-name-in-uppercase
(
error
) Non ci dovrebbe essere nessuna lettera maiuscola nei nomi dei pacchetti.
specific-host-type-used
(
warning
) Invece di utilizzare un host specifico (come i686 o x86_64) utilizzare la variabile generica $CARCH.
extra-var-begins-without-underscore
(
warning
) La variabile non è standard come definito nel manuale PKGBUILD poiché non inizia con un underscore.
file-referred-in-startdir
(
error
) È stato fatto riferimento a un file in
$startdir
, al di fuori di
$startdir/pkg
e
$startdir/src
.
missing-md5sums
(
error
) Mancano gli MD5sum corrispondenti ai file sorgente. Questi possono essere aggiunti al PKGBUILD con
updpkgsums
.
not-enough-md5sums
(
error
) Ci sono più file sorgente che MD5sum forniti nel PKGBUILD.
too-many-md5sums
(
error
) Ci sono più MD5sum che file sorgente nel PKGBUILD.
improper-md5sum
(
error
) È stato trovato un MD5sum incorretto. Gli MD5sum sono di 32 caratteri di lunghezza.
specific-sourceforge-mirror
(
warning
) PKGBUILD usa un mirror sourceforge specifico. Bisognerebbe usare
https://downloads.sourceforge.net
.
using-dl-sourceforge
(
warning
) Il dominio deprecato
http://dl.sourceforge.net
viene usato nell'array sorgente. Dovrebbe essere usato
https://downloads.sourceforge.net
al suo posto.
missing-contributor
(
warning
) Manca il tag del fornitore.
missing-maintainer
(
warning
) Manca il tag del maintainer.
missing-url
(
error
) Il pacchetto non dispone di un upstream homepage. Utilizzare la variabile
url
.
pkgname-in-description
(
warning
) La descrizione non dovrebbe contenere il nome del pacchetto.
recommend-use-pkgdir
(
informational
)
$startdir/pkg
è deprecato, usare
$pkgdir
.
recommend-use-srcdir
(
informational
)
$startdir/src
è deprecato, usare
$srcdir
.
Unreleased
Attualmente non ci sono nuovi tag nella versione di sviluppo.
Creazione di un modulo namcap
Questa sezione documenta namcap internamente e specifica come creare un nuovo modulo namcap.
Il programma principale di namcap, namcap.py, prende come parametri il nome del file di un pacchetto o un PKGBUILD e lo converte in un oggetto pkginfo, che lo passa ad un elenco di regole definite nel
__tarball__
e nel
__pkgbuild__
.
__tarball__
definisce le regole che elaborano pacchetti binari.
__pkgbuild__
definisce le regole che elaborano i PKGBUILDs.
Una volta che il modulo è finalizzato, ricordarsi di aggiungerlo all'array relativo (
__tarball__
o
__pkgbuild__
) definito in
Namcap/init.py
Un esempio di modulo namcap è questo (
Namcap/url.py
):
import pacman
class package:
 	def short_name(self):
return "url"
	def long_name(self):
		return "Verifies url is included in a PKGBUILD"
	def prereq(self):
		return ""
	def analyze(self, pkginfo, tar):
		ret = [[],[],[]]
		if not hasattr(pkginfo, 'url'):
			ret[0].append(("missing-url", ()))
		return ret
	def type(self):
		return "pkgbuild"
Fondamentalmente, il codice si spiega da sé. Di seguito viene riportato l'elenco dei metodi che ogni modulo namcap deve avere:
short_name
(self) Restituisce una stringa contenente un nome breve del modulo. Di solito, questo equivale al nome di base del file modulo.
long_name
(self)  Restituisce una stringa contenente una descrizione sintetica del modulo. Tale descrizione è utilizzata quando si elencano tutte le regole con
namcap -r list
.
prereq
(self) Restituisce una stringa contenente i prerequisiti necessari al modulo per funzionare correttamente. Solitamente "" per moduli di elaborazione PKGBUILD e "tar" per moduli di elaborazione di file pacchetto. "extract" deve essere specificato se il contenuto del pacchetto deve essere estratto in una directory temporanea prima di procedere.
analyze
(self, pkginfo, tar) Dovrebbe restituire un elenco che comprende, a sua volta tre elenchi: errore di tag, etichette di avvertimento e di informazione. Ogni membro di questi elenchi tag deve essere una tupla composta da due componenti:
la forma breve con trattini
del tag con gli appropriati specificatori di formato (%s, etc.) La prima parola di questa stringa deve essere il nome del tag. La forma "umanamente" leggibile del tag deve essere messa nel file tags. Il formato del file tags è descritta di seguito; i
parametri
che dovrebbero sostituire il formato specifico rimangono nell'output finale.
type
(self) "pkgbuild" per un modulo di elaborazione dei PKGBUILDs, "tarball" per un modulo di elaborazione di un pacchetto binario.
Il file dei tag è costituito da righe che riportano la forma "umanamente" leggibile dei tag a fianco della forma scritta coi trattini del codice namcap. Una riga che inizia con un '#' viene considerata commentata. In caso contrario, il formato del file è:
machine-parseable-tag %s :: This is machine parseable tag %s
Si noti che un "doppio due punti" (::) è utilizzato per separare i tag scritti con trattini dalla descrizione leggibile.
Namcap reports
namcap-reports
è un report generato automaticamente ed ottenuto dopo l'esecuzione di namcap rispetto a core e extra.
Come funziona:
namcap viene eseguito rispetto all'intero albero
ABS
per generare
namcap.log
.
I pacchetti in core e extra vengono messi in file chiamati core e extra (usando
pacman -Slq
).
namcap-report.py
prende il codice e prepara il report e i feed RSS, per essere poi copiato nel server web.