Gentoo Linux Italia

PERLE dalle GWN e non

Contenuti:

1.Resettare manualmente un servizio

Avete mai provato a far ripartire un servizio crashato e ricevuto il seguente messaggio di errore?

Esempio 1: Messaggio

    * WARNING: service name has already been started

In questo caso, potete manualmente resettare il servizio col seguente comando:

Esempio 2: Resettare un servizio

# /etc/init.d/service name zap

2.Ottenere informazioni sui pacchetti installati

I nuovi utenti di Gentoo spesso chiedono come ottenere una lista dei pacchetti installati dall'albero di Portage. Chi risponde dovrebbe conoscere l'abbondanza di strumenti che possono essere utilizzati per ottenere tali informazioni. A partire dal pkglist di Portage, a qpkg e epm (una sorta di clone di rpm), che sono parte di gentoolkit, fino a scorrere da soli l'albero di directory in /var/db/pkg/, ci sono certamente diverse possibilità di scelta. Mostriamo qui due modi di elencare tutti i pacchetti installati, il primo usando pkglist (che si trova in /usr/lib/portage/bin/, spesso non incluso in $PATH), ed il secondo lanciando un find in /var/db/pkg/:

Esempio 3: Elencare i pacchetti installati

# pkglist
# find /var/db/pkg/ -mindepth 2 -maxdepth 2 -printf "%P\n"

Oppure, se volete sapere a quale pacchetto appartenga un file, ci sono un paio di modi di procedere utilizzando gli strumenti messi a disposizione dall'ebuild gentoolkit:

Esempio 4: A quale pacchetto appartiene un file

# epm -qf /usr/bin/xpmtoppm
    netpbm-9.12-r4
    qpkg -f /usr/bin/namei
    sys-apps/util-linux *

E' anche possibile sapere quali USE flag sono stati usati per la compilazione di un pacchetto usando il seguente comando:

Esempio 5: Quali USE flag usati per la compilazione di un pacchetto

# etcat -u pacchetto

Quali file sono stati installati insieme ad un pacchetto? Potete scoprirlo col seguente comando:

Esempio 6: Quali file compongono un pacchetto

# ectat -f pacchetto

3.Aggiornare Gentoo

La maggior parte deli utenti di Gentoo sono abituati ad usare Portage per installare software. Una delle funzionalità che potreste non essere abituati ad usare è quella che permette di aggiornare l'intero sistema con un solo comando. Questa procedura è nota come 'update world'. Per fare un update world, usate il seguente comando:

Esempio 7: Aggiornare il sistema

# emerge --update world

Tuttavia, certe volte, in questo modo non vengono considerati tutti i pacchetti. Per rendere l'aggiornamento ancora più completo, usate l'opzione --deep.

Esempio 8: Aggiornamento completo

# emerge --update --deep world

Questa opzione considera anche tutte le dipendenze delle dipendenze in modo che tutto sia effettivamente portato nello stato più aggiornato.

4.Tenere traccia di emerge world

Gli ebuilds di Gentoo richiedono all'utente di completare la configurazione. Tipicamente questi ebuilds spiegano esattamente quali comandi utilizzare a tale scopo. Tuttavia, quando si esegue un emerge update world, queste indicazioni scompaiono dallo schermo molto rapidamente e sono perse una volta che si passa all'installazione dei pacchetti successivi. Per aggirare questo problema, l'output di emerge può essere indirizzato in un file di log. Per fare ciò, possiamo usare il comando 'tee', che permette di osservare emerge in azione mentre l'output viene anche scritto su file.

Esempio 9: Completare la configurazione

// Si potrebbe usare anche l'opzione --deep
# emerge --update world 2>&1 | tee -a /tmp/emerge.log

Nota: Il costrutto 2>&1 specifica di loggare si l'output che gli eventuali errori. per maggiori informazioni sulla redirezione di input/output leggete qui.

5.Usare GnuPG per firmare la posta elettronica

GNU Privacy Guard (GnuPG) una versione open source del software commerciale per la creazione di firme digitali Pretty Good Privacy (PGP). Questa sezione di GWN questa settimana mostrerà come creare una chiave, come esportare tale chiave su un public keyserver, ed infine come aggiungere la propria firma digitale alle email.

Esempio 10: Installazione GnuPG


# emerge gnupg

Esempio 11: Create la directory .gnupg

$  mkdir $HOME/.gnupg

Esempio 12: Creazione di una nuova chiave

#  gpg --gen-key
gpg (GnuPG) 1.2.1; Copyright (C) 2002 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Please select what kind of key you want:
   (1) DSA and ElGamal (default)
   (2) DSA (sign only)
   (5) RSA (sign only)
Your selection? 1

About to generate a new ELG-E keypair.
              minimum keysize is  768 bits
              default keysize is 1024 bits
    highest suggested keysize is 2048 bits
What keysize do you want? (1024) 1024

Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
Is this correct (y/n)? y

You need a User-ID to identify your key; the software constructs the user id
from Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

Real name: John Doe
Email address: john.doe@example.com
Comment:

You selected this USER-ID:
	"John Doe <john.doe@example.com>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.

// Assicuratevi di scegliere una buona password e NON DIMENTICATELA
Enter passphrase: secret
Repeat passphrase: secret

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.

gpg: /home/johndoe/.gnupg/trustdb.gpg: trustdb created
public and secret key created and signed.
key marked as ultimately trusted.

// La stringa di otto caratteri è la vostra Key ID (A268D066)
pub  1024D/A268D066 2003-01-17 John Doe <john.doe@example.com>
     Key fingerprint = D435 4979 610B 0BAB F107  64F8 FAF5 94E0 A268 D066
sub  1024g/AB3B30AF 2003-01-17

Ora che la chiave è stata generata, bisogna esportarla su un public keyserver. Pur non essendo obbligatorio, questo è il modo più semplice per permettere ad altre persone di ottenere la parte pubblica della vostra chiave e di controllare la vostra firma digitale. Per inviare la vostra chiave dovete conoscerne il Key ID.

Esempio 13: Ottenere il proprio Key ID

// Il vostro Key ID è la stringa di otto caratteri dopo 1024D/
% gpg --list-keys
/home/johndoe/.gnupg/pubring.gpg
-------------------------------
pub  1024D/A268D066 2003-01-17 John Doe <john.doe@example.com>
sub  1024g/AB3B30AF 2003-01-17

Adesso potete esportare la vostra chiave.

Esempio 14: Esportazione della chiave su un public keyserver


% gpg --send-keys --keyserver wwwkeys.pgp.net A268D066
gpg: success sending to `wwwkeys.pgp.net' (status=200)

Adesso che la vostra chiave e stata creata e resa pubblica, potete iniziare a firmare la posta elettronica. Per portare a termine questo passo dovrete ricordare il vostro Key ID. Se non lo ricordate, rileggete il paragrafo precedente. Seguite i seguenti passi per configurare la crittografia in Evolution:

Esempio 15: Configurazione su Evolution

   1. Cliccate su Tools->Settings.
   2. Selezionate il pulsante Mail Accounts e l'account per il quale
   userete la chiave.
   3. Cliccate Edit e quindi l'etichetta Security. Scrivete il vostro
   Key ID nel campo PGP/GPG Key ID.
   4. Cliccate OK.

Ora, quando scrivete un messaggio, selezionate Security->PGP Sign per aggiungere la vostra firma digitale all'email. Per configurare la crittografia in Mutt, aggiungete le seguenti opzione nel vostro file $HOME/.muttrc.

Esempio 16: Opzioni per GPG in ~/.muttrc


set pgp_decode_command="gpg %?p?--passphrase-fd 0? --no-verbose --batch \
	--output - %f"
set pgp_verify_command="gpg --no-verbose --batch --output - --verify %s %f"
set pgp_decrypt_command="gpg --passphrase-fd 0 --no-verbose --batch \
	--output - %f"
set pgp_sign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 \
	--armor --detach-sign --textmode %?a?-u %a? %f"
set pgp_clearsign_command="gpg --no-verbose --batch --output - \
	--passphrase-fd 0 --armor --textmode --clearsign %?a?-u %a? %f"
// Inserite il vostro Key ID dopo l'opzione --encrypt-to preceduto da 0x
set pgp_encrypt_only_command="gpg --batch --quiet --no-verbose --output - \
	--encrypt --textmode --armor --always-trust  \
	--encrypt-to 0xA268D066 -- -r %r -- %f"
set pgp_encrypt_sign_command="gpg --passphrase-fd 0 --batch --quiet \
	--no-verbose --textmode --output - --encrypt --sign %?a?-u %a? \
	--armor --always-trust --encrypt-to 0xA268D066 -- -r %r -- %f"
set pgp_import_command="gpg --no-verbose --import -v %f"
set pgp_export_command="gpg --no-verbose --export --armor %r"
set pgp_verify_key_command="gpg --no-verbose --batch --fingerprint \
	--check-sigs %r"
set pgp_list_pubring_command="gpg --no-verbose --batch --with-colons \
	--list-keys %r" 
set pgp_list_secring_command="gpg --no-verbose --batch --with-colons \
	--list-secret-keys %r" 
set pgp_autosign=yes
set pgp_sign_as=0xA268D066
set pgp_replyencrypt=yes
set pgp_timeout=1800
set pgp_good_sign="^gpg: Good signature from"

Quando scrivete un messaggio, premete p per firmare o crittografare. Per aggiungere solamente la firma, selezionate s. Ora potete inviare il vostro messaggio, che verrà firmato con la vostra firma digitale.

6.Impostare il titolo del terminale

Dato che molti utenti di Gentoo spesso usano i terminali (xterm, Eterm, ecc.) questo tip mostra come renderli più utili, aggiungendo delle informazioni alla barra del titolo. Possiamo aggiungere username, hostname e director y corrente al titolo del terminale, rendendo più facile capire dove ci si trova, soprattutto se il terminale è minimizzato. Invece di dover riaprire la finestra, una rapida occhiata alla taskbar è così più che sufficiente.

Se usate Bash, aggiungete le seguenti righe al vostro file ~/.bashrc.

Esempio 17: ~/.bashrc


SHORT_HOST=`hostname -s`

if [ "$SHELL" = '/bin/bash' ] || [ "$SHELL" = '/bin/sh' ]
then
    case $TERM in
        rxvt|*term)
        PROMPT_COMMAND='echo -ne "\033]0;${USER}@${SHORT_HOST}: ${PWD}\007"'
        ;;
    esac
fi

Se usate Zsh, aggiungete le seguenti righe al vostro file ~/.zshrc. Gli utenti di Zsh possono conoscere la directory attuale se si trovano al prompt o un qualunque comando se un programma è in esecuzione.

Esempio 18: ~/.zshrc


if [ "$SHELL" = '/bin/zsh' ]
then
    case $TERM in
        rxvt|*term)
            precmd() { print -Pn "\e]0;%n@%m - %~\a" }
            preexec () { print -Pn "\e]0;%n@%m - $1\a" }
            ;;
    esac
fi

7.Vedere quali variabili USE influenzano l'installazione di un pacchetto durante un emerge

Una delle funzionalità di Portage più richieste è la possibilità di sapere in modo semplice e rapido che effetto hanno le variabili USE durante la fase di emerge. Dalla versione 2.0.46-r12, Portage rende disponibile proprio questa funzionalità.

Per vedere l'effetto delle variabili USE, usate l'opzione -v:

Esempio 19: Mostra l'effetto delle variabili USE con l'opzione -v


# emerge -vp exim

These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild    U ] net-mail/exim-4.12 [4.10] -tcpd +ssl -postgres +mysql +ldap +pam

8.Comandi e trucchi per Bash

Praticamente ogni utente di Gentoo utilizza la riga di comando. Questa tip si concentra su alcuni comandi poco conosciuti per la 'navigazione', che potrebbero rendervi più facili le cose.

Esempio 20: Combinazioni di tasti per Bash


Alt+B   // Va indietro di una parola
Alt+F   // Va avanti di una parola
Ctrl+K  // Cancella tutto dal cursore fino alla fine della riga
Ctrl+U  // Cancella tutto dal cursore fino all'inizio della riga
Ctrl+Y  // Incolla nella posizione corrente i caratteri cancellati
Ctrl+H  // Cancella un carattere
Ctrl+L  // Pulisce lo schermo
Ctrl+P  // Va al precedente comando nella history
Ctrl+N  // Va al successivo comando nella history

Potete usare anche !parola per ri-eseguire l'ultimo comando che inizia con "parola".

Esempio 21: Utilizzo di !parola


$ gcc -o test test.c
$ !gcc
gcc -o test test.c
$

Siete sempre stanchi di dover scrivere lunghissimi nomi di directory? Provate ad usare lo stack di directory con i comandi pushd, popd, e dirs. Tale stack permette di memorizzare una lista di directory e di spostarvi tra di esse agevolmente.

Esempio 22: Lo stack di directory


// pushd aggiunge una directory
~:$ pushd /usr/portage
// dirs elenca tutte le directory dello stack
~:$ dirs
/usr/portage ~
// popd rimuove l'ultima directory inserita nello stack e ci si sposta
~:$ popd
/usr/portage:$

9.Mirror

Mentre cresce l'utenza di Gentoo una lamentela comune è la lentezza dei mirror primari. Molti nella community hanno risposto a questo aggiungendo ulteriori mirror per distribuire il carico. Dove dunque si trovano questi mirror? Un modo è di cercare sul sito presso http://www.gentoo.org/main/en/mirrors.xml. Un altro, più semplice è di usare il comodo strumento mirrorselect. MirrorSelect è una semplice interfaccia ncurses che vi consente di scegliere che mirror si vuole utilizzare per quella macchina.

MirrorSelect è disponibile in Portage e un semplice emerge è quindi tutto ciò che serve per installarlo.

Esempio 23: Installazione di MirrorSelect

# emerge mirrorselect

Per utilizzare MirrorSelect lanciate semplicemente il comando mirrorselect in un prompt e selezionate il vostro/i mirror preferito/i.

Esempio 24: Utilizzo di MirrorSelect


# mirrorselect

Una volta che avete selezionato i mirror selezionate OK e il vostro /etc/make.conf verrà aggiornato coi nuovi mirror.

10.Creare un Certificate Authority (CA)

Questo tip vi spiega come creare il vostro Certificate Authority da usare per firmare i certificati SSL.

Il primo passo consiste nel creare il vostro certificato CA.

Esempio 25: Creare certificati CA


# cd /etc/ssl
# ./misc/CA.pl -newca
CA certificate filename (or enter to create)

Making CA certificate ...
Using configuration from /etc/ssl/openssl.cnf
Generating a 1024 bit RSA private key
............++++++
............................................++++++
writing new private key to './demoCA/private/cakey.pem'
Enter PEM pass phrase:>la vostra password>
Verifying password - Enter PEM pass phrase:>la vostra password (ancora)>
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:>il vostro stato>
State or Province Name (full name) [Some-State]:>il vostro stato/provincia>
Locality Name (eg, city) []:>la vostra città>
Organization Name (eg, company) [Internet Widgets Pty Ltd]:>il nome della vostra
società>
Organizational Unit Name (eg, section) []:>il vostro dipartimento>
Common Name (eg, YOUR name) []:>il vostro nome>
Email Address []:>il vostro indirizzo email>

Ora avete la vostra CA con cui firmare i certificati. La chiave pubblica della CA è /etc/ssl/demoCA/cacert.pem e la chiave privata è /etc/ssl/demoCA/private/cakey.pem.

Nota: Quando usate un certificato firmato dalla vostra CA, potreste ottenere un errore a proposito di una CA non attendibile. In questo caso, avete bisogno di fornire al client la chiave pubblica della CA.



Ultimo aggiorn.:
12 Maggio 2003
Sommario: Questo doc contiene una collezione di perle prese dalle varie GWN di Gentoo, con alcune aggiunte.
- 2002 Gentoo.it - Domande, commenti e/o correzioni? Email gentoo-dev@gentoo.it.