# [TOOL] Gestione pulita degli overlay con EMERGE-OVERLAY

## mouser

Download: http://mouser.altervista.org/software/gentoo/emerge-overlay-0.1.1.tar.bz2

Installazione

Ok, per installare il pacchetto fate in questo modo:

```
# cd /tmp/

# wget http://mouser.altervista.org/software/gentoo/emerge-overlay-0.1.1.tar.bz2

# tar jxvf emerge-overlay-0.1.1.tar.bz2

# cd emerge-overlay-0.1.1

# ./eoinstall
```

Vi installerà emerge-overlay direttamente in /usr/bin

Descrizione

Che dire, dopo settimane di lavoro/test/problemi ecco finalmente in versione ALPHA emerge-overlay

ovvero "Come usare layman mantenendo il sistema pulito".

Per esempio perchè se devo installare xmms (ebuild nell'overlay zugaina di layman) di un totale di 5 ebuilds

necessari alla compilazione, mi devo tirare dietro 14M di files, directory, ecc?

Non sarebbe più logico avere in locale solo gli ebuild che mi permettono di compilare quel programma?

Questo è quello che fa emerge overlay.

```
# emerge-overlay -h

usage: ./emerge-overlay [-h|--help] [-V|--version] [-d|--debug]

                         [-s|--sync] [-P "<options>"]

                         [-f|--fetchonly] <software>

   -h|--help        This help

   -V|--version     Print version and informations

   -d|--debug       Activating debug mode

   -s|--search      Show package info and selected overlay

   --sync           Update eix overlay's database

   -P "<options>"   Options to pass to portage (example: "-av")

   -f|--fetchonly   Only create local overlay with directory and

                    ebuilds instead of install software
```

Quindi in pratica quando lancio

```
# emerge-overlay xmms
```

lo script esegue queste operazioni:

q 

- controlla la presenza di un overlay locale; se non c'è chiede all'utente dove metterlo e si occupa di aggiornare il make.conf per far funzionare l'overlay locale

- controlla l'overlay di provenienza dell'ebuild e lo sincronizza con layman

- estrae la lista degli overlay di appartenenza di tutte le dipendenze e, mano a mano, sincronizza layman con eventuali overlay aggiuntivi

- copia tutti gli overlay necessari all'emerge nell'overlay locale, ricreando la stessa struttura di directory

- elimina tutti gli overlay di portage

- esegue l'emerge  :Cool: 

Di seguito riporto la ToDo List tradotta in italiano:

* Creare la possibilità (o modificare l'algoritmo di estrazione delle versioni

  per selezionare qualsiasi pacchetto. Attualmente non funziona con tutti gli

  ebuild (ad esempio, php non va  :Rolling Eyes: )

* Testare il più grande numero possibile di ebuild da overlay per assicurarsi

   che la regexp di sed che elimina le versioni dai nomi dei pacchetti funzioni

   a dovere

* Includere il supporto all'update di software

* Ottimizzare il codice.

ah, premetto che questo script necessita sia di eix che di layman.

Nel mio sistema funziona perfettamente con

```
app-portage/eix

     Installed versions:  0.8.8(10:18:00 02/08/07)(-sqlite)

app-portage/layman

     Installed versions:  1.0.6
```

ed, ovviamente, la presenza di

```
source "/usr/portage/local/layman/make.conf"
```

nel /etc/make.conf (seguite comunque l'howto su layman che viene spiegato tutto benissimo)

Signori, quindi a noi il testing....... può essere utile come script quindi in caso di bug ecc.

Non esistate a segnalarlo che vedo di riuscire a fare qualcosina.

Ciriciao

mouser  :Wink: 

Changelog

* 2007-02-25: Corretto bug all'interno dello script di installazione (eoinstall)

* 2007-02-21: Pacchetto ufficialmente aggiunto al Gechi Overlay; info su http://www.gechi.it

* 2007-02-21: Aggiunta informativa sulla licenza (GPLv2) - Aggiunto script di installazione.

* 2007-02-19: Eliminato il sed ed utilizzata l'opzione "--columns" di portege per estrarre i nomi dei pacchetti senza versione.Last edited by mouser on Sun Feb 25, 2007 11:00 am; edited 6 times in total

----------

## Bionicle

Wow, ti ringrazio oggi lo provo é proprio quello che cercavo, adesso tutte quelle operazioni le facevo a mano ma con uno script del genere la gestione degli overlay é notevolmente velocizzata.

Grazie ancora

----------

## mouser

 *Bionicle wrote:*   

> Wow, ti ringrazio oggi lo provo é proprio quello che cercavo, adesso tutte quelle operazioni le facevo a mano ma con uno script del genere la gestione degli overlay é notevolmente velocizzata.

 

De nada  :Cool: 

Mi aspetto bug report a manetta da te  :Very Happy: 

Ciriciao

mouser  :Wink: 

----------

## zolar czakl

Non ho ancora provato ma leggendo lo script (entro i miei limiti  :Sad:  ),

mi sorge un dubbio.

Come viene gestita la presenza di eclass custom?

----------

## Bionicle

ciao ecco ho fatto un paio di test.

Non si può fare automaticamente l'update di eix? mettere un avviso Yes/No? lanciare il comando "update-eix-remote update" automaticamente?

Non per essere pignoli ma perché scrive 2 volte il messaggio?

```
Your database-file uses an obsolete format (17, current is 21).

Please run 'update-eix' and try again.

Your database-file uses an obsolete format (17, current is 21).

Please run 'update-eix' and try again.

[--] Package present only in current portage, not into any overlay.

[--] Sorry, today you can't break your gentoo :D
```

ho provato ad installare networkmanager e beryl, allora con networkmanager non riesce a trovarlo.

```

eix networkmanager:

[D] net-misc/networkmanager

     Available versions:  [M](~)0.6.4_pre20061028 [M](~)0.6.4_pre20061028-r1 [M](~)0.6.4_pre20061223[3] [M](~)0.6.4_pre20070122-r1[3] [M](~)0.6.4_pre20070122-r2[3] [M]*0.6.4_pre20070208[3] [M](~)0.6.4_pre20070213[3] [M](~)0.6.4[2] [M](~)0.6.4-r1[1] [M](~)0.6.4-r1[2]

     Installed versions:  0.6.4_pre20070213(14:35:06 14/02/2007)(crypt -debug -doc -gnome)

     Homepage:            http://people.redhat.com/dcbw/NetworkManager/

     Description:         Network configuration and management in an easy way. Desktop env independent
```

```
./emerge-overlay -s networkmanager

[--] Package present only in current portage, not into any overlay.

[--] Sorry, today you can't break your gentoo :D

```

EDIT debug:

```
./emerge-overlay -d networkmanager

[--] Creating local overlay with ebuilds...

[--] (local_overlay_build) Getting overlay from program name

[!!] (get_overlay) OVERLAY_NUMBER is empty. Returning -1

[!!] (local_overlay_build) Error during overlay extracting

[!!] Error during local overlay creation!
```

Mentre con beryl lo riconosce ma non riesce a copiare le cartelle e files:

```
./emerge-overlay -s beryl

[I] x11-wm/beryl

     Available versions:  (~)0.1.3 (~)0.1.3-r1[1] (~)0.1.4 (~)0.1.4[1] (~)0.1.99.2[1] (~)0.1.9999.1[1] (~)0.1.9999.1[2] (~)0.1.9999.2[1] (~)0.1.9999.2[2] (!)9999[2]

     Installed versions:  9999(11:44:07 10/02/2007)(-gnome kde)

     Homepage:            http://beryl-project.org

     Description:         Beryl window manager for AiGLX and XGL (meta)

[1] (layman/sabayon)

[2] (layman/xeffects)

[--] Overlay selected for package beryl - xeffects

```

se lo voglio installare:

```
./emerge-overlay  beryl

[--] Creating local overlay with ebuilds...

[!!] You don't have declared any local overlay into /etc/make.conf

[--] What directory do you want for local overlay [/usr/local/portage]?

[--] Overlay directory /usr/local/portage created and added variable to /etc/make.conf

[!!] (local_overlay_build) Error during ebuild directory copying

[!!] Error during local overlay creation!

```

EDIT aggiungo il debug:

```
./emerge-overlay -d beryl

[--] Creating local overlay with ebuilds...

[--] (local_overlay_build) Getting overlay from program name

[--] (local_overlay_build) Overlay getted xeffects

[--] (local_overlay_build) Check/Create for local overlay

[--] (check_local_overlay) Extracting overlay from /etc/make.conf...

[--] (check_local_overlay) Found current local overlay at /usr/local/portage

[--] (check_local_overlay) Overlay directory selected /usr/local/portage

[--] (local_overlay_build) Local overlay checked... OK

[--] (local_overlay_build) Getting remote overlay

[--] (sync_remote_overlay) Retrieving list of overlay from layman...

[--] (sync_remote_overlay) Overlay list retrieved by layman

[--] (sync_remote_overlay) Getting remote overlay...

[--] (sync_remote_overlay) Remote overlay acquired

[--] (local_overlay_build) Overlay xeffects acquired!

[--] (local_overlay_build) Extracting dependency

[--] Program beryl require this dependency: x11-wm/beryl

[--] (local_overlay_build) Extraced dependency = "x11-wm/beryl "

[--] (local_overlay_build) Extracing dependency's (beryl) overlay name

[--] (local_overlay_build) Overlay for dependency beryl is xeffects

[--] (local_overlay_build) Checking if dependency's remote overlay xeffects it's syncronized

[--] Checking xeffects into syncronized overlays...

[--] Overlay xeffects not yet syncronized!

[--] (local_overlay_build) Dependency beryl overlay not synched. Syncing...

[--] (sync_remote_overlay) Retrieving list of overlay from layman...

[--] (sync_remote_overlay) Overlay list retrieved by layman

[--] (sync_remote_overlay) Getting remote overlay...

[--] (sync_remote_overlay) Remote overlay acquired

[--] (local_overlay_build) Copying dependency's beryl ebuild dir into local overlay /usr/local/portage

[!!] (copy_ebuild_dir) Error during extraction of software name

[!!] (local_overlay_build) Error during ebuild directory copying

[!!] Error during local overlay creation!

```

mi dispiace ma purtroppo ti posso solo segnalare eventuali problemi perché non me ne intendo molto di bash (ho guardato il codice e non ho capito molto)

un'altra cosa quando parli di "- elimina tutti gli overlay di portage " cosa intendi?

Ciao e grazie ancora!

[ADD] se do il comando con -P mi da sempre questo

```
./emerge-overlay -d -P xmms

[--] Creating local overlay with ebuilds...

[!!] (local_overlay_build) Error... haven't passed any argument

[!!] Error during local overlay creation!

```

----------

## Luca89

Piccola idea:

Perchè invece di scaricare e poi rimuovere gli overlay di layman, non si scaricano tutti quelli che servono e poi si creano dei link simbolici solo per alcuni pacchetti in un overlay locale? Non so se mi sono spiegato bene, però potrebbe essere una buona idea, in questa maniera basta aggiornare layman e tutti gli ebuild sono aggiornati. Per meglio capire vi faccio uno schema di directory:

/usr/portage/local/layman/sunrise/sys-apps/portage/

/usr/portage/local/layman/sunrise/net-misc/foo/

/usr/portage/local/my/sys-apps/portage/ -> symlink to ../../../layman/sunrise/sys-apps/portage/

PORTDIR_OVERLAY="/usr/portage/local/my" e portage vede solo un pacchetto dell'overlay sunrise anziché tutti.  :Smile: 

----------

## Bionicle

L'idea é veramente geniale.

Ho provato questa mattina e funziona alla perfezione!

Quello che si dovrebbe fare:

cercare le dipendenze del pacchetto

creare la cartella corretta in locale /usr/local/portage

creare i symlink

Con questo sistema posso semplicemente aggiornare gli overly con layman ed é tutto ok, dunque si risolve anche il ToDO 

"* Includere il supporto all'update di software "

Ciao

----------

## Bionicle

ciao,

ho provato ad implementare il sistema dei symlink e sembra che funziona (l'ho testato)

ho fatto in modo che gli overlay alla fine non si cancellano (ho commentato il codice) 

e poi ho notato la cartella principale di layman non si trova sotto /usr/portage/local  ma su /usr/local/ ... non so se é possibile che la riconosca automaticamente

ti lascio qui le modifiche.

I miglioramenti che restano sono quelli sulla ricerca delle dipendenze... vedo cosa riesco a fare

 emerge-overlay-diff.diff

CIao

----------

## mouser

Il fatto che gli overlay alla fine non si cancellino e che vengano creati i symlink va proprio contro a quello che vuole fare questo script   :Rolling Eyes:   :Rolling Eyes: 

Questo script è fatto per non doversi, sempre facendo l'esempio di xmms, tenersi 14M di ebuild in un'overlay per usarne semplicemente 4 (ebuilds, non mega  :Very Happy: ). Il fatto che vengano mantenuti gli overlay e creati i symlink, quindi, non verrà implementato poichè va proprio contro a quello che intendevo fare..... Tra l'altro quello che avete proposto è una ridondanza immesa. Se già ho gli overlay di layman, tanto vale che mi tengo quelli.... creare i symlink è abbastanza inutile.

Per gli altri problemi......

Mi sono dimenticato di specificare il file di conf.

E' possibile creare un file in /etc/portage/package.overlay.keywords in cui specificare la versione del pacchetto che si intende creare. Questo script va ad estrarre l'ultima versione stabile del programma. Se non esistono versioni stabili, allora dirà che il programma non ha ebuild in nessun overlay.

Se si desidera installare la versione in tilde, basterà inserire

```
# echo "x11-wm/beryl ~x86" >> /etc/portage/package.overlay.keywords
```

se si desidera la versione mascherata, invece

```
# echo "x11-wm/beryl [M]" >> /etc/portage/package.overlay.keywords
```

nel caso si voglia installare da cvs

```
# echo "x11-wm/beryl -*" >> /etc/portage/package.overlay.keywords
```

inoltre, è possibile forzare l'installazione di una particolare versione tramite

```
# echo "x11-wm/beryl versione" >> /etc/portage/package.overlay.keywords
```

.

Ovviamente queste entry sono mutue esclusive  :Wink: 

Per l'opzione "-P".

Dall'help:

```
# ./emerge-overlay -h

...

 -P "<options>"   Options to pass to portage (example: "-av")

...
```

Quindi inserire il '-P' e basta non ha significato. Si pùo fare

```
# ./emerge-overlay -P "-Dv" xmms
```

per, una volta costruito l'overlay locale, fargli eseguire un

```
# emerge -Dv xmms
```

.

Ora cerco di guardare un'attimino i bachi segnalati e di correggere  :Very Happy: 

In ogni caso, grazie mille per i test

Ciriciao

mouser  :Wink: 

edit: Dimenticavo un'ultima cosa...... Questo script, attualmente ho avuto modo di testarlo solo su x86. Nel caso abbiate un'altra architettura (ex. amd64), dovrete modificare la variabile ARCH nelle prime righe del programma con la vostra arch.

riedit: Ah, per il sync, è possibile lanciare

```
# ./emerge-overlay --sync
```

 per syncare eix. L'ho aggiunta come opzione perchè si potrebbe anche non voler aggiornare eix  :Very Happy: 

----------

## mouser

Guardavo il problema con networkmanager.

E' dovuto alla strana nomenclatura che hanno le versioni dei pacchetti:

La doppia keyword richiesta fa incasinare lo script:

```
# eix -e networkmanager

 net-misc/networkmanager

     Available versions:  {M}(~)0.6.4_pre20061028 {M}(~)0.6.4_pre20061028-r1 {M}(~)0.6.4_pre20061223[3] {M}(~)0.6.4_pre20070122-r1[3] {M}(~)0.6.4_pre20070122-r2[3] {M}*0.6.4_pre20070208[3] {M}(~)0.6.4_pre20070213[3] {M}(~)0.6.4[2] {M}(~)0.6.4-r1[1] {M}(~)0.6.4-r1[2]

...
```

Ma di solito la flag masked non è tra parentesi quadre???   :Confused: 

E poi??? sia masked che in tilde.... uff che sbatti!!!

Comunque aggiungo questo programma alla lista dei casi particolari

Per quanto riguarda la posizione degli overlay di layman, io ho usato e tutt'ora uso layman e i suoi overlay sono sempre stati in /usr/portage/local/layman/. non so se il tuo è un caso particolare o hanno spostato gli overlay.... bah

Thanxxxx

Ciriciao

mouser  :Wink: 

----------

## Bionicle

grazie per averi chiarito come usarie i pacchetti  :Wink: .

ho fatto ancora altri test su beryl e knetworkmanager.

con knetworkmanager: funziona tutto solo che cerca di installare non l'ultima versione presente su sabayon la 0.1-r2

```
eix -e knetworkmanager

* kde-misc/knetworkmanager [1]

     Available versions:  ~0.1 ~0.1_p20061029

     Homepage:            http://en.opensuse.org/Projects/KNetworkManager

     Description:         A NetworkManager front-end for KDE

[I] net-misc/knetworkmanager [2]

     Available versions:  (~)0.1-r2

     Installed versions:  0.1-r2(13:47:29 07/02/2007)(arts -debug -elibc_FreeBSD -xinerama)

     Homepage:            http://en.opensuse.org/Projects/KNetworkManager

     Description:         A NetworkManager front-end for KDE

[1] (layman/gentopia)

[2] (layman/sabayon)
```

ecco come si presenta:

```
./emerge-overlay-2  -d -s knetworkmanager

* kde-misc/knetworkmanager [1]

     Available versions:  ~0.1 ~0.1_p20061029

     Homepage:            http://en.opensuse.org/Projects/KNetworkManager

     Description:         A NetworkManager front-end for KDE

[I] net-misc/knetworkmanager [2]

     Available versions:  (~)0.1-r2

     Installed versions:  0.1-r2(13:47:29 07/02/2007)(arts -debug -elibc_FreeBSD -xinerama)

     Homepage:            http://en.opensuse.org/Projects/KNetworkManager

     Description:         A NetworkManager front-end for KDE

[1] (layman/gentopia)

[2] (layman/sabayon)

Found 2 matches.

[--] Overlay selected for package knetworkmanager - gentopia

```

ho notato una cosa che si ripercuote sull'installazione di beryl, ed é questa:

alcuni pacchetti con eix riportano la * mentre altri la [I]

```
* kde-misc/knetworkmanager [1]

o

[I] net-misc/knetworkmanager [2]

```

nel codice dello script fa questo controllo ma non vede i pacchetti che sono come [I] (ho cercato nel man di eix e non ho trovato cosa significa)

```

copy_ebuild_dir ()

{

...

# Extracting package name

   PACKAGE_NAME="`eix -e $1 | grep '*' | head -1 | awk '{print $2}'`"
```

con beryl non funziona perché c'é solo il pacchetto con l'impostazione [I], il pacchetto lo strova se faccio un -s ma poi si blocca durante la risoluzione del nome.

OK ho provato a modificare il grep ed il risultato é questo:

```
./emerge-overlay-2  -d beryl

[--] Creating local overlay with ebuilds...

[--] (local_overlay_build) Getting overlay from program name

[--] (local_overlay_build) Overlay getted sabayon

[--] (local_overlay_build) Check/Create for local overlay

[--] (check_local_overlay) Extracting overlay from /etc/make.conf...

[--] (check_local_overlay) Found current local overlay at /usr/local/portage

[--] (check_local_overlay) Overlay directory selected /usr/local/portage

[--] (local_overlay_build) Local overlay checked... OK

[--] (local_overlay_build) Getting remote overlay

[--] (sync_remote_overlay) Retrieving list of overlay from layman...

[--] (sync_remote_overlay) Overlay list retrieved by layman

[--] (sync_remote_overlay) Getting remote overlay...

[--] (sync_remote_overlay) Remote overlay acquired

[--] (local_overlay_build) Overlay sabayon acquired!

[--] (local_overlay_build) Extracting dependency

[--] Program beryl require this dependency: x11-wm/beryl-core x11-misc/beryl-manager x11-wm/emerald x11-plugins/beryl-plugins x11-misc/beryl-settings x11-wm/beryl x11-plugins/beryl-dbus x11-themes/emerald-themes

[--] (local_overlay_build) Extraced dependency = "x11-wm/beryl-core x11-misc/beryl-manager x11-wm/emerald x11-plugins/beryl-plugins x11-misc/beryl-settings x11-wm/beryl x11-plugins/beryl-dbus x11-themes/emerald-themes "

[--] (local_overlay_build) Extracing dependency's (beryl-core) overlay name

[--] (local_overlay_build) Overlay for dependency beryl-core is xeffects

[--] (local_overlay_build) Checking if dependency's remote overlay xeffects it's syncronized

[--] Checking xeffects into syncronized overlays...

[--] Overlay xeffects not yet syncronized!

[--] (local_overlay_build) Dependency beryl-core overlay not synched. Syncing...

[--] (sync_remote_overlay) Retrieving list of overlay from layman...

[--] (sync_remote_overlay) Overlay list retrieved by layman

[--] (sync_remote_overlay) Getting remote overlay...

[--] (sync_remote_overlay) Remote overlay acquired

[--] (local_overlay_build) Copying dependency's beryl-core ebuild dir into local overlay /usr/local/portage

[--] (check_local_overlay) Extracting overlay from /etc/make.conf...

[--] (check_local_overlay) Found current local overlay at /usr/local/portage

[--] (check_local_overlay) Overlay directory selected /usr/local/portage

[--] (copy_ebuild_dir) Moving ebuild directory of beryl-core from layman overlay to local... OK[0m]

[--] (local_overlay_build) Dependency beryl-core directory copied!

[--] (local_overlay_build) Extracing dependency's (beryl-manager) overlay name

[--] (local_overlay_build) Overlay for dependency beryl-manager is xeffects

[--] (local_overlay_build) Checking if dependency's remote overlay xeffects it's syncronized

[--] Checking xeffects into syncronized overlays...

[--] Overlay xeffects not yet syncronized!

[--] (local_overlay_build) Dependency beryl-manager overlay not synched. Syncing...

[--] (sync_remote_overlay) Retrieving list of overlay from layman...

[--] (sync_remote_overlay) Overlay list retrieved by layman

[--] (sync_remote_overlay) Getting remote overlay...

[--] (sync_remote_overlay) Remote overlay acquired

[--] (local_overlay_build) Copying dependency's beryl-manager ebuild dir into local overlay /usr/local/portage

[--] (check_local_overlay) Extracting overlay from /etc/make.conf...

[--] (check_local_overlay) Found current local overlay at /usr/local/portage

[--] (check_local_overlay) Overlay directory selected /usr/local/portage

[--] (copy_ebuild_dir) Moving ebuild directory of beryl-manager from layman overlay to local... OK[0m]

[--] (local_overlay_build) Dependency beryl-manager directory copied!

[--] (local_overlay_build) Extracing dependency's (emerald) overlay name

[--] (local_overlay_build) Overlay for dependency emerald is xeffects

[--] (local_overlay_build) Checking if dependency's remote overlay xeffects it's syncronized

[--] Checking xeffects into syncronized overlays...

[--] Overlay xeffects not yet syncronized!

[--] (local_overlay_build) Dependency emerald overlay not synched. Syncing...

[--] (sync_remote_overlay) Retrieving list of overlay from layman...

[--] (sync_remote_overlay) Overlay list retrieved by layman

[--] (sync_remote_overlay) Getting remote overlay...

[--] (sync_remote_overlay) Remote overlay acquired

[--] (local_overlay_build) Copying dependency's emerald ebuild dir into local overlay /usr/local/portage

[--] (check_local_overlay) Extracting overlay from /etc/make.conf...

[--] (check_local_overlay) Found current local overlay at /usr/local/portage

[--] (check_local_overlay) Overlay directory selected /usr/local/portage

[--] (copy_ebuild_dir) Moving ebuild directory of emerald from layman overlay to local... OK[0m]

[--] (local_overlay_build) Dependency emerald directory copied!

[--] (local_overlay_build) Extracing dependency's (beryl-plugins) overlay name

[--] (local_overlay_build) Overlay for dependency beryl-plugins is xeffects

[--] (local_overlay_build) Checking if dependency's remote overlay xeffects it's syncronized

[--] Checking xeffects into syncronized overlays...

[--] Overlay xeffects not yet syncronized!

[--] (local_overlay_build) Dependency beryl-plugins overlay not synched. Syncing...

[--] (sync_remote_overlay) Retrieving list of overlay from layman...

[--] (sync_remote_overlay) Overlay list retrieved by layman

[--] (sync_remote_overlay) Getting remote overlay...

[--] (sync_remote_overlay) Remote overlay acquired

[--] (local_overlay_build) Copying dependency's beryl-plugins ebuild dir into local overlay /usr/local/portage

[--] (check_local_overlay) Extracting overlay from /etc/make.conf...

[--] (check_local_overlay) Found current local overlay at /usr/local/portage

[--] (check_local_overlay) Overlay directory selected /usr/local/portage

[--] (copy_ebuild_dir) Moving ebuild directory of beryl-plugins from layman overlay to local... OK[0m]

[--] (local_overlay_build) Dependency beryl-plugins directory copied!

[--] (local_overlay_build) Extracing dependency's (beryl-settings) overlay name

[--] (local_overlay_build) Overlay for dependency beryl-settings is xeffects

[--] (local_overlay_build) Checking if dependency's remote overlay xeffects it's syncronized

[--] Checking xeffects into syncronized overlays...

[--] Overlay xeffects not yet syncronized!

[--] (local_overlay_build) Dependency beryl-settings overlay not synched. Syncing...

[--] (sync_remote_overlay) Retrieving list of overlay from layman...

[--] (sync_remote_overlay) Overlay list retrieved by layman

[--] (sync_remote_overlay) Getting remote overlay...

[--] (sync_remote_overlay) Remote overlay acquired

[--] (local_overlay_build) Copying dependency's beryl-settings ebuild dir into local overlay /usr/local/portage

[--] (check_local_overlay) Extracting overlay from /etc/make.conf...

[--] (check_local_overlay) Found current local overlay at /usr/local/portage

[--] (check_local_overlay) Overlay directory selected /usr/local/portage

[--] (copy_ebuild_dir) Moving ebuild directory of beryl-settings from layman overlay to local... OK[0m]

[--] (local_overlay_build) Dependency beryl-settings directory copied!

[--] (local_overlay_build) Extracing dependency's (beryl) overlay name

[--] (local_overlay_build) Overlay for dependency beryl is sabayon

[--] (local_overlay_build) Checking if dependency's remote overlay sabayon it's syncronized

[--] Checking sabayon into syncronized overlays...

[--] Overlay sabayon not yet syncronized!

[--] (local_overlay_build) Dependency beryl overlay not synched. Syncing...

[--] (sync_remote_overlay) Retrieving list of overlay from layman...

[--] (sync_remote_overlay) Overlay list retrieved by layman

[--] (sync_remote_overlay) Getting remote overlay...

[--] (sync_remote_overlay) Remote overlay acquired

[--] (local_overlay_build) Copying dependency's beryl ebuild dir into local overlay /usr/local/portage

[--] (check_local_overlay) Extracting overlay from /etc/make.conf...

[--] (check_local_overlay) Found current local overlay at /usr/local/portage

[--] (check_local_overlay) Overlay directory selected /usr/local/portage

[--] (copy_ebuild_dir) Moving ebuild directory of beryl from layman overlay to local... OK[0m]

[--] (local_overlay_build) Dependency beryl directory copied!

[--] (local_overlay_build) Extracing dependency's (beryl-dbus) overlay name

[!!] (get_overlay) OVERLAY_NUMBER is empty. Returning -1

[!!] (get_overlay) OVERLAY_NUMBER is empty. Returning -1

[!!] (local_overlay_build) Error during dependency's overlay name extracting

[!!] Error during local overlay creation!
```

in package.overlay.keywords ho inserito x11-wm/beryl 9999, ho provato con ** e -* ma non funzionava mi ritornava questo:

```
[!!] (get_overlay) OVERLAY_NUMBER is empty. Returning -1

[--] Package present only in current portage, not into any overlay.

[--] Sorry, today you can't break your gentoo :D

```

la cosa strana é che ha trovato come dipendenza beryl-dbus ma questa non esiste più nelle nuove versioni ed é per quello che si blocca visto che nel overly non c'é.

Ciao, e scusa delle mia ignoranza nel campo, molto probabilmente sono io ad avere sbagliato qualche cosa

----------

## mouser

Il problema sta nel fatto che, invece che avere segnato la ~ come versione di test, beryl utilizza il (~), quindi probabilmente lo fa un pò scazzare con i campi... hai provato ad inserire

```
# echo "x11-wm/beryl !9999" >> /etc/portage/package.overlay.keywords
```

???

Le versioni di quel pacchetto fanno un pò impazzire lo scrippete..... magari stasera (quando, da casa, potrò usare layman) vedo di fare anch'io un pò di test.

 *Bionicle wrote:*   

> ... scusa delle mia ignoranza nel campo ...

 

Non preoccuparti, siamo tutti ignoranti finchè non si impara  :Very Happy: 

Comunque stai facendo molto test, e questo è mooolto importantissimo (se mi passi lo stravolgimento della linga  :Razz: )

Ciriciao

mouser  :Wink: 

----------

## Bionicle

ciao, 

ho visto che la versione é passata alla 0.1.1

ho notato una cosa se voglio installare beryl da overly non deve andare a cercare le dipendenze usando emerge, infatti trova le dimendenze della versione 0.1.4 quella in portage e non quelle della 9999.

ho visto che hai modificato la riga:

```
#for SOFTWARE in `emerge --pretend $1 | cut -d']' -f2 | awk '{print $1}' | grep '/' | sed -re 's|-[0-9]+[^-]*(-r[0-9]+)?$||'`; do

   for SOFTWARE in `emerge --pretend --columns $1 2> /dev/null | awk '{print $2}'`; do
```

secondo me andava meglio prima  :Wink: 

```
emerge --pretend --columns beryl

These are the packages that would be merged, in order:

Calculating dependencies... done!

[ebuild     UD] x11-wm/beryl-core                                      [0.1.4]                      [9999]  USE="-debug%"

[ebuild     UD] x11-misc/beryl-manager                                 [0.1.4]                      [9999]  USE="-debug%"

[ebuild     UD] x11-wm/emerald                                         [0.1.4]                      [9999]

[ebuild     UD] x11-plugins/beryl-plugins                              [0.1.4]                      [9999]  USE="-debug%"

[ebuild     UD] x11-misc/beryl-settings                                [0.1.4]                      [9999]  USE="-debug%"

[ebuild     UD] x11-wm/beryl                                           [0.1.4]                      [9999]

[ebuild  N    ] x11-plugins/beryl-dbus                                 [0.1.4]  

[ebuild     UD] x11-themes/emerald-themes                              [0.1.4]                      [9999]

```

ecco cosa trova:

```
emerge --pretend --columns beryl 2> /dev/null | awk '{print $2}'

are

dependencies

UD]

UD]

UD]

UD]
```

anche modificando con print $3 non va:

```
emerge --pretend --columns beryl 2> /dev/null | awk '{print $3}'

the

.....

x11-wm/beryl-core

x11-misc/beryl-manager

x11-wm/emerald

x11-plugins/beryl-plugins

x11-misc/beryl-settings

x11-wm/beryl

]

x11-themes/emerald-themes

UD]

UD]

N

UD]
```

ciao

----------

## mouser

 *Bionicle wrote:*   

> secondo me andava meglio prima 
> 
> ```
> emerge --pretend --columns beryl
> 
> ...

 

Ma si può essere più stupidi di me!!!!  :Crying or Very sad: 

Mapporca, in effetti in questo modo cambiano i campi..... bon, allora tornerò alla ver. precedente!

Ciriciao e grazie mille!

mouser  :Wink: 

[edit]

Questo script è stato ufficialmente aggiunto al gechi-overlay  :Cool: 

----------

## mouser

 *zolar czakl wrote:*   

> Come viene gestita la presenza di eclass custom?

 

Mi potresti spiegare meglio il dubbio che hai???

Se il tuo dubbio è riguardo la compilazione, lo script utilizza portage, quindi una volta lanciato l'emerge dell'ebuild, viene fatto riferimento a quello (e alle eclass che richiama);

Per caso intendevi per quanto riguarda le eclass custom degli overlay?

Ciriciao

mouser  :Wink: 

----------

## drizztbsd

ehm io ti avevo consigliato di usare emerge --quiet --columns 2>/dev/null (senza spazio), hai dimenticato il --quiet che è sicuramente meglio della regexp nel sed

```
drizzt@janeway ~ $ emerge --pretend --quiet --columns beryl 2>/dev/null | awk '{print $2}'

x11-wm/beryl-core

x11-misc/beryl-manager

x11-wm/emerald

x11-plugins/beryl-plugins

x11-misc/beryl-settings

x11-wm/beryl

x11-plugins/beryl-dbus

x11-themes/emerald-themes

drizzt@janeway ~ $       
```

----------

## mouser

 *Drizzt Do` Urden wrote:*   

> ehm io ti avevo consigliato di usare emerge --quiet --columns 2>/dev/null (senza spazio), hai dimenticato il --quiet che è sicuramente meglio della regexp nel sed

 

Ok, ho ufficialmente bisogno di sonno  :Rolling Eyes: 

Nel frattempo, ho cambiato la disposizione del software. Leggete il primo post per info sull'installazione

Ciriciao

mouser  :Wink: 

----------

## Bionicle

Riformulo quello che ho notato visto che é passato inosservato:   :Very Happy: 

se voglio emergere beryl lo script cerca le dipendenze ma il problema principale é che le cerca nel portage "stabile" (non ci sono ancora gli ebuild copiati in locale) e quindi trova le dipendenze della versine 0.1.4 che sono differenti da quelle della SVN!!,  questo penso che abbia anche influsso con altri pacchetti.

Non saprei come si potrebbe risolvere ma bisognerebbe leggere le dipendenze all'interno del ebuild nel overlay e creare una struttura ad albero, alla fine controllare quelle che bisogna ancora installare.

CIao

----------

## mouser

 *Bionicle wrote:*   

> Riformulo quello che ho notato visto che é passato inosservato:  
> 
> se voglio emergere beryl lo script cerca le dipendenze ma il problema principale é che le cerca nel portage "stabile" (non ci sono ancora gli ebuild copiati in locale) e quindi trova le dipendenze della versine 0.1.4 che sono differenti da quelle della SVN!!,  questo penso che abbia anche influsso con altri pacchetti.

 

Questo viene fatto per mantenere la compatibilità di quegli ebuild in overlay che hanno come dipendenze software presenti anche nel portage stabile.

Questo script, per estrarre le dipendenze prende l'output di eix (alla voce "Available version") ed estrae, come dicevo, l'ultima stabile e così via.

Questo prevede che portage sia già configurato per installare la versione che risulta presente nell'overlay esterno; inoltre il /etc/make.conf deve essere configurato per accedere ad eventuali ebuild presenti negli overlay scaricati da layman; esattamente ci deve essere questa riga

```
# cat /etc/make.conf | grep -1 layman

# Source for layman overlay

source "/usr/portage/local/layman/make.conf"
```

E, nel caso particolare di beryl, visto che vuoi installare la versione da CVS dovrai avere anche:

```
# echo "=x11-wm/beryl-9999" >> /etc/portage/package.keywords
```

In modo che l'eventuale comando emerge --pretend beryl cerchi di installare proprio la versione !9999.

Facendo così lo script funzionerà poichè:

```
# emerge --quit --pretend beryl 2> /dev/null | awk '{print $2}'
```

andrà ad estrarre le dipendenze della versione !9999

Dopodichè, se queste dipendenze sono presenti nello stesso overlay bon, altrimenti le scarica e va avanti così.

Spero di essermi spiegato abbastanza bene..... è molto più semplice farlo che spiegarlo  :Rolling Eyes: 

Ciriciao

mouser  :Wink: 

----------

## Ic3M4n

Per quanto riguarda le eclass custom attualmente in molti overlay sono presenti anche le eclass che vanno a sostituire quelle di portage. quindi nel momento in cui vai ad utilizzare layman per aggiungere un ebuild dovresti tener presente che potrebbe esserci un eclass custom che viene importata in portage al posto di quella standard.

----------

## mouser

 *Ic3M4n wrote:*   

> ...

 

Argh, non ne avevo proprio tenuto conto........

Adesso vedo di studiarmi qualcosa  :Very Happy: 

Grazie

edit:

Ho guardato un pò gli ebuild in giro e volevo fare una domandina, visto che non mi sono chiare alcune cose...

1) Come vengono gestite le eclass custom??? Si trovano riferimenti direttamente all'interno degli ebuild o è portage che si occupa di controllare se sono presenti?

2) Come vengono gestiti? Ovvero, se un ebuild utilizza eclass custom, semplicemente all'interno dell'overlay si troverà la directory eclass/ con all'interno file file <nomesw>.eclass?

3) Nel caso può capitare che uno di questi file .eclass fa riferimeno ad altri file .eclass? Se si, come si trova questo riferimento?

Grazie a chiunque mi illumini

Ciriciao

mouser  :Wink: 

----------

## zolar czakl

 *mouser wrote:*   

> 1) Come vengono gestite le eclass custom??? Si trovano riferimenti direttamente all'interno degli ebuild o ï¿½ portage che si occupa di controllare se sono presenti?

 Il riferimento nell'ebuild e'  inherit

Da  man 5 ebuild

```
inherit

              Inherit  is  portageâs  maintenance of extra classes of functions that are external to ebuilds and provided as inheritable

              capabilities and data. They define functions and set data types as drop-in replacements, expanded, and simplified routines

              for extremely common tasks to streamline the build process.  Inherit may only be called once in an ebuild and it may never

              be wrapped within any conditionals of any kind.  Specification of the eclasses  contains  only  their  name  and  not  the

              .eclass extension.  Also note that the inherit statement must come before other variable declarations.
```

 *mouser wrote:*   

> 2) Come vengono gestiti? Ovvero, se un ebuild utilizza eclass custom, semplicemente all'interno dell'overlay si troverï¿½ la directory eclass/ con all'interno file file <nomesw>.eclass?

 La prima che hai detto. Ovvero anche nella classica /usr/local/portage. 

 *mouser wrote:*   

> 3) Nel caso puï¿½ capitare che uno di questi file .eclass fa riferimeno ad altri file .eclass? Se si, come si trova questo riferimento?

 Esempio pratico

```
grep inherit /usr/portage/eclass/gnome2.eclass

inherit fdo-mime libtool gnome.org gnome2-utils
```

Praticamente una matriosca  :Smile: 

----------

## mouser

 *zolar czakl wrote:*   

> ...
> 
> Praticamente una matriosca 

 

Ma che bello!!! Come sono felice  :Rolling Eyes: 

Comunque, a parte questo, credo che con una funzioncina che funzioni come quella per la gestione della copia degli ebuild dovrebbe essere risolta.

Ora sto combattendo contro alcuni bachetti minori (lo script si incazza se nel /etc/portage/package.overlay.keywords trova due match per pacchetto).... appena risolvo questo vedo di occuparmi delle eclass.

Grazie mille  :Very Happy: 

Ciriciao

mouser  :Wink: 

----------

## richard77

 *mouser wrote:*   

> 
> 
> Installazione
> 
> Ok, per installare il pacchetto fate in questo modo:
> ...

 

Ci sono un paio di errori: il comando è

```
# tar jxvf emerge-overlay-0.1.1.tar.bz2
```

(manca .tar.bz2)

Inoltre lo script eoinstall cerca di copiare ~/emerge-overlay in /usr/bin/ invece di ./emerge-overlay.

----------

## mouser

Grazie mille richard77 per la segnalazione. Ho corretto il bug nello script di installazione e modificato il primo post  :Very Happy: 

Ciriciao

mouser  :Wink: 

----------

## RollsAppleTree

l'ebuild dell'overlay gechi è corrotto.. mi pare che dia problemi nel digest ...

----------

## Luca89

Corretto, avevo modificato l'ebuild senza rifare il digest, scusatemi.

----------

## crisandbea

sarà che oggi non è una bella giornata per me, ma non capisco una cosa, dopo aver scaricato ed installato il tool in questione, bisogna fare altro prima di lanciare

l'emerge-overlay?

quando lo lancio o sempre i seguenti errori:

```

sudo emerge-overlay -av knetworkmanager

[--] Creating local overlay with ebuilds...

[!!] Error during local overlay creation!

```

nb:premetto che ho già installato layman, in precedenza per installare compiz-fusion,  ma non credo dipenda da ciò, visto che tale tool richiede layman.

ciauz

----------

## mouser

 *crisandbea wrote:*   

> sarà che oggi non è una bella giornata per me, ma non capisco una cosa, dopo aver scaricato ed installato il tool in questione, bisogna fare altro prima di lanciare
> 
> l'emerge-overlay?
> 
> quando lo lancio o sempre i seguenti errori:
> ...

 

Hmmm, non ho mai provato ad utilizzare il mio tool tramite sudo.... dovrei fare un pò di test per saperti dire meglio.

Comunque, riguardo al tuo problema, quell'errore viene generato in caso si verifichino due differenti situazioni:

1) Il tool non riesce a creare la directory /usr/local/portage

2) Il tool non rileva e non riesce a fare una entry nel make.conf.

Ti direi di procedere in questo modo:

```
# mkdir /usr/local/portage
```

Se non esiste già.

Successivamente prova ad inserire nel make.conf la entry:

```
PORTDIR_OVERLAY="$PORTDIR_OVERLAY /usr/local/portage"
```

Se per caso hai già dichiarato quella variabile, prova ad inserire il path assoluto di quella directory all'interno della variabile che hai già dichiarato.

Infine prova a rilanciare il comando  :Very Happy: 

Ciriciao

mouser  :Wink: 

----------

## mouser

Ok, dopo un periodo sabbatico, ho implementato anche la gestione delle custom eclass. Questa sera inizio a fare un pò di prove giusto per testare il codice che ho scritto.

Se tutto fila liscio rilascio una nuova versione.

Ciriciao

mouser  :Wink: 

----------

