# Gentoo mi chiede di aggiungere mysql alle USE ??? [risolto]

## Kernel78

Forse sono solo rimbambito dal sonno ma tentando di aggiornare mi becco questo messaggio

```
# emerge -uDavN @world

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

Calculating dependencies ... done!

emerge: there are no ebuilds built with USE flags to satisfy ">=x11-libs/qt-sql-4.5.0:4[sqlite,mysql]".

!!! One of the following packages is required to complete your request:

- x11-libs/qt-sql-4.5.2 (Change USE: +mysql)

(dependency required by "app-office/akonadi-server-1.2.1" [ebuild])

(dependency required by "kde-base/kdepimlibs-4.3.1" [ebuild])

(dependency required by "kde-base/krdc-4.3.1" [ebuild])

(dependency required by "@world" [argument])
```

la cosa divertente è che qt-sql è già compilato con le seguenti USE

```
# emerge -av1 qt-sql

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

Calculating dependencies ... done!

[ebuild   R   ] x11-libs/qt-sql-4.5.2  USE="iconv postgres qt3support sqlite -debug (-firebird) -mysql -odbc -pch" 0 kB

```

Qualche suggerimento ?

Aspetto di svegliamri meglio prima di affrontare la questione ?

----------

## !equilibrium

 *Kernel78 wrote:*   

> emerge: there are no ebuilds built with USE flags to satisfy ">=x11-libs/qt-sql-4.5.0:4[sqlite,mysql]".
> 
> !!! One of the following packages is required to complete your request:
> 
> - x11-libs/qt-sql-4.5.2 (Change USE: +mysql)

 

 *Kernel78 wrote:*   

> la cosa divertente è che qt-sql è già compilato con le seguenti USE
> 
> [ebuild   R   ] x11-libs/qt-sql-4.5.2  USE="iconv postgres qt3support sqlite -debug (-firebird) -mysql -odbc -pch" 0 kB
> 
> Qualche suggerimento ?

 

direi che il messaggio è chiaro, devi abilitare la use mysql per x11-libs/qt-sql che tu NON hai abilitato; evidentemente ti sei svegliato male oggi   :Wink: 

----------

## Kernel78

 *!equilibrium wrote:*   

> direi che il messaggio è chiaro, devi abilitare la use mysql per x11-libs/qt-sql che tu NON hai abilitato; evidentemente ti sei svegliato male oggi  

 

lo so che non ho abilitato quella USE e porca zozza non voglio abilitarla, ho già postgres e sqlite e mi vanno più che bene, non voglio avere nulla a che fare con mysql ...

Inoltre che senso ha mettere una USE se poi non posso disabilitarla ???

----------

## !equilibrium

 *Kernel78 wrote:*   

> lo so che non ho abilitato quella USE e porca zozza non voglio abilitarla, ho già postgres e sqlite e mi vanno più che bene, non voglio avere nulla a che fare con mysql

 

... che non era la tua domanda iniziale.

 *Kernel78 wrote:*   

> Inoltre che senso ha mettere una USE se poi non posso disabilitarla ???

 

al 99.9% è richiesta esplicitamente da qualche pacchetto, altrimenti portage non si sognerebbe nemmeno di segnalerti il problema sulle USE. vediamo se riesco a darti un'imbeccata visto che il messaggio iniziale di portage era abbastanza chiaro in merito alla soluzione:

 *Quote:*   

> [ebuild   R   ] kde-base/kdepimlibs-4.3.2  USE="ldap (-aqua) -debug -handbook (-kdeprefix) -test" 0 kB [0]
> 
> [ebuild   R   ] app-office/akonadi-server-1.2.1  USE="-mysql -sqlite" 0 kB [1=>0]
> 
> [ebuild   R   ] x11-libs/qt-sql-4.5.3  USE="iconv postgres sqlite -debug -firebird -mysql -odbc -pch -qt3support" 0 kB [0]

 

----------

## Kernel78

Ho dovuto forzare tra le USE -mysql, questo mi portava al fatto che veniva richiesta la USE mng (che ho abilitato) e poi sql e webkit (per PyQt4) ... che giro malato ...

----------

## Scen

 *Kernel78 wrote:*   

> Ho dovuto forzare tra le USE -mysql, questo mi portava al fatto che veniva richiesta la USE mng (che ho abilitato) e poi sql e webkit (per PyQt4) ... che giro malato ...

 

No, bastava disabilitare la use mysql per il pacchetto app-office/akonadi-server  :Razz: 

----------

## Kernel78

 *Scen wrote:*   

>  *Kernel78 wrote:*   Ho dovuto forzare tra le USE -mysql, questo mi portava al fatto che veniva richiesta la USE mng (che ho abilitato) e poi sql e webkit (per PyQt4) ... che giro malato ... 
> 
> No, bastava disabilitare la use mysql per il pacchetto app-office/akonadi-server 

 

... e già la mia domanda sarebbe: PERCHÈ ???

io non avevo la USE mysql nel make.conf e emerge --info non me la riportava quindi che cavolo voleva akonadi-server ???

io ero rimasto che se emerge --info non mi riporta una USE allora nessun pacchetto la userà mentre io l'ho dovuta disabilitare esplicitamente ... (a questo punto l'ho negata in make.conf così non rischio altre anomalie)  :Confused: 

----------

## Scen

 *Kernel78 wrote:*   

> io non avevo la USE mysql nel make.conf e emerge --info non me la riportava quindi che cavolo voleva akonadi-server ???
> 
> io ero rimasto che se emerge --info non mi riporta una USE allora nessun pacchetto la userà mentre io l'ho dovuta disabilitare esplicitamente ... (a questo punto l'ho negata in make.conf così non rischio altre anomalie) 

 

Eh... Sei rimasto un pochino indietro  :Wink: 

/usr/portage/app-office/akonadi-server/akonadi-server-1.2.1.ebuild

```

...

IUSE="+mysql sqlite"

...

```

Fa parte delle nuove funzionalità introdotte nel Package Manager Specifications (aka PMS), classificate come EAPI.

In questo caso la funzionalità si chiama "IUSE default", e serve per (dis)abilitare in modo predefinito determinate USE flag direttamente all'interno dell'ebuild, per vari motivi e necessità. In questo caso in akonadi-server viene "consigliata" l'attivazione del supporto a mysql.

----------

## Kernel78

 *Scen wrote:*   

>  *Kernel78 wrote:*   io non avevo la USE mysql nel make.conf e emerge --info non me la riportava quindi che cavolo voleva akonadi-server ???
> 
> io ero rimasto che se emerge --info non mi riporta una USE allora nessun pacchetto la userà mentre io l'ho dovuta disabilitare esplicitamente ... (a questo punto l'ho negata in make.conf così non rischio altre anomalie)  
> 
> Eh... Sei rimasto un pochino indietro 
> ...

 

hai notato anche tu ... avessi il tempo per seguire tutto le giornate sarebbero di almeno 240 ore  :Laughing: 

 *Quote:*   

> 
> 
> /usr/portage/app-office/akonadi-server/akonadi-server-1.2.1.ebuild
> 
> ```
> ...

 

Ok, allora torno a rivalutare il mio antico sistema di specificare in positivo e negativo tutte le USE per evitare scherzi come questo  :Wink: 

Grazie mille

P.S. in ogni caso mi sfugge la logica del suggerire una USE per un bacchetto e bloccare l'emerge perchè quella USE viene richiseta in altri pacchetti ... se è suggerita e attiva di default allora dovrebbe essere ereditata dove serve ... altrimenti tanto vale scrivere nell'elog che è suggerito compilare con quella USE e l'utente si regola ...

----------

## oRDeX

Penso che un conto sia abilitarla per se stessi ed un conto è abilitarla in modo tacito su nmila pacchetti senza dirti niente   :Razz: 

----------

## Kernel78

 *oRDeX wrote:*   

> Penso che un conto sia abilitarla per se stessi ed un conto è abilitarla in modo tacito su nmila pacchetti senza dirti niente  

 

ok ma se la abiliti per te e poi mi blocchi tutto se non la abilito per un altro pacchetto mi sembra una cosa non particolarmente logica ...

a questo punto lancio ufed e mi scorro tutte le USE decidendo se abilitarle o disabilitarle così non corro rischi

----------

## Scen

 *Kernel78 wrote:*   

> ok ma se la abiliti per te e poi mi blocchi tutto se non la abilito per un altro pacchetto mi sembra una cosa non particolarmente logica ...

 

Ti stai impuntando su un ragionamento un pò troppo "ma come si permettono i devel di Gentoo di decidere per me?!?!?"   :Razz:  e non vedi la questione dal punto di vista più corretto, ovvero:

(prendo come esempio questo caso specifico):

akonadi-server ha il supporto ai database mysql e sqlite

nell'ebuild viene abilitato come default il primo, la motivazione tecnica non so dirti qual'è ma ci sarà; oltretutto è anche un modalità "sicura", in quanto potrebbe succedere che l'utente non ha specificato nè "mysql" nè "sqlite" nelle proprie USE (globalmente o sul pacchetto), e se così fosse il pacchetto non funzionerebbe, vedi pkg_posinst nel caso non sia stata abilitata nessuna delle due USE:

```

ewarn "You have decided to build akonadi-server with both"

ewarn "'mysql' and 'sqlite' USE flags disabled."

ewarn "akonadi-server will not be functional."

```

se l'utente non ha disabilitato a livello globale o per questo specifico la USE "mysql", essa ovviamente verrà abilitata, per questo pacchetto

se viene abilitata, entra in gioco un'altra EAPI, che trovi nella variabile RDEPEND, dove viene specificato che se la USE mysql è attiva per il pacchetto che si sta per compilare, anche il pacchetto dipendenza x11-libs/qt-sql deve essere compilato con tale USE abilitata (e se noti è la stessa cosa anche per sqlite), altrimenti, suppongo, akonadi-server non potrà compilare/fnuzionare correttamente

```

RDEPEND="

...

        >=x11-libs/qt-sql-4.5.0:4[mysql?,sqlite?]

...

```

Una volta, prima dell'introduzione di queste comodissime EAPI, ci sarebbe stato un controllo IF-THEN-ELSE, che avrebbe fatto lo stesso controllo dettagliato nel punto precedente, e ti avrebbe bloccato comunque tutto con un bel

```

die "Pregasi compilare x11-libs/qt-sql con la USE 'mysql'"

```

 :Wink: 

A me sembra tutto perfettamente logico.

----------

## Kernel78

 *Scen wrote:*   

>  *Kernel78 wrote:*   ok ma se la abiliti per te e poi mi blocchi tutto se non la abilito per un altro pacchetto mi sembra una cosa non particolarmente logica ... 
> 
> Ti stai impuntando su un ragionamento un pò troppo "ma come si permettono i devel di Gentoo di decidere per me?!?!?"   e non vedi la questione dal punto di vista più corretto, ovvero:
> 
> 

 

diciamo che non capisco e sono alla ricerca di una motivazione  :Wink: 

 *Quote:*   

> 
> 
> (prendo come esempio questo caso specifico):
> 
> [list]
> ...

 

fino a qui ci siamo

 *Quote:*   

> 
> 
> [*]nell'ebuild viene abilitato come default il primo, la motivazione tecnica non so dirti qual'è ma ci sarà; oltretutto è anche un modalità "sicura", in quanto potrebbe succedere che l'utente non ha specificato nè "mysql" nè "sqlite" nelle proprie USE (globalmente o sul pacchetto), e se così fosse il pacchetto non funzionerebbe, vedi pkg_posinst nel caso non sia stata abilitata nessuna delle due USE:
> 
> ```
> ...

 

ok ma io avevo abilitato globalmente sqlite quindi akonadi-server si sarebbe dovuto accontentare di questa USE e non rompere con mysql (a mio vedere)

 *Quote:*   

> 
> 
> [*]se l'utente non ha disabilitato a livello globale o per questo specifico la USE "mysql", essa ovviamente verrà abilitata, per questo pacchetto
> 
> 

 

ma se al pacchetto ne basta una (e io abilito sqlite) non capisco che senso ha abilitare anche l'altra ...

 *Quote:*   

> A me sembra tutto perfettamente logico.

 

se il punto fosse: "invece di bloccarsi con un die è meglio abilitare localmente una USE non esplicitamente disabilitata", sarei perfettamente d'accordo ma così mi sono ritrovato con un sistema che offriva già la possibilità di compilare i pacchetti in modo funzionale (con sqlite invece di mysql) ma questo non è stato ritenuto sufficiente perchè non avevo ESPLICITAMENTE disabilitato mysql ...

Capisci il mio punto di vista ?

----------

## Scen

 *Kernel78 wrote:*   

> Capisci il mio punto di vista ?

 

Capisco ma non condivido, anche perchè trai delle conclusioni errate, IMHO.

 *Kernel78 wrote:*   

> 
> 
> ok ma io avevo abilitato globalmente sqlite quindi akonadi-server si sarebbe dovuto accontentare di questa USE e non rompere con mysql (a mio vedere)
> 
> 

 

Sì, ma nell'ebuild "mysql" viene forzatamente abilitato tramite il "+", per cui se tale USE non viene disabilitata globalmente o per pacchetto, scattano tutti i meccanismi che non ti hanno fatto dormire sonni tranquilli  :Wink:  Tieni presente che chi ha scritto l'ebuild non può conoscere a priori la situazione del sistema di ogni utente, per cui viene preso in considerazione il caso peggiore (entrambe le USE non abilitate), e impostandone una di default si assicura un corretto funzionamento del pacchetto.

 *Kernel78 wrote:*   

> ma se al pacchetto ne basta una (e io abilito sqlite) non capisco che senso ha abilitare anche l'altra ...

 

Sì, ne basta una, ma devi comprendere che l'ebuild è un semplice file di testo, che no npuò essere cambiato in modo dinamico, per cui non è possibile, per esempio "disabilitare al volo" la USE "mysql" se globalmente o per quel pacchetto è attivata sqlite.

 *Kernel78 wrote:*   

> se il punto fosse: "invece di bloccarsi con un die è meglio abilitare localmente una USE non esplicitamente disabilitata", sarei perfettamente d'accordo ma così mi sono ritrovato con un sistema che offriva già la possibilità di compilare i pacchetti in modo funzionale (con sqlite invece di mysql) ma questo non è stato ritenuto sufficiente perchè non avevo ESPLICITAMENTE disabilitato mysql ...

 

No, non è stato ritenuto sufficiente poichè, come dici tu, non lo avevi esplicitamente disabilitato!

Comunque ho trovato qualche info interessante a riguardo (poi chiudo qui  :Smile:  ):

app-office/akonadi-server-4.1.3 requires mysql

http://techbase.kde.org/Projects/PIM/Akonadi#Akonadi_FAQ (anche se mi pare non troppo aggiornato)

 *Quote:*   

> 
> 
> Which DBMS does Akonadi use?
> 
> So far only MySQL. There is some work on PostgreSQL support going on though. Basically, every database that is supported by QtSQL can be used, requiring minimal changes in the code at most. However, not all of them provide the features needed by Akonadi (see next two questions).
> ...

 

----------

## Kernel78

 *Scen wrote:*   

>  *Kernel78 wrote:*   Capisci il mio punto di vista ? 
> 
> Capisco ma non condivido, anche perchè trai delle conclusioni errate, IMHO.
> 
> 

 

a me piace cercare di capire, non pretendo mica di avere ragione  :Wink: 

 *Quote:*   

> 
> 
>  *Kernel78 wrote:*   
> 
> ok ma io avevo abilitato globalmente sqlite quindi akonadi-server si sarebbe dovuto accontentare di questa USE e non rompere con mysql (a mio vedere)
> ...

 

quindi è corretto quello che dico io: se voglio essere sicuro che una USE non sia mai usata devo sempre disabilitarla esplicitamente o rischio casi come questo ...

 *Quote:*   

> 
> 
>  *Kernel78 wrote:*   ma se al pacchetto ne basta una (e io abilito sqlite) non capisco che senso ha abilitare anche l'altra ... 
> 
> Sì, ne basta una, ma devi comprendere che l'ebuild è un semplice file di testo, che no npuò essere cambiato in modo dinamico, per cui non è possibile, per esempio "disabilitare al volo" la USE "mysql" se globalmente o per quel pacchetto è attivata sqlite.
> ...

 

ok, l'ebuild è un semplice file di testo, di per se non compila e non installa nulla, viene letto e interpretato dal emerge che provvede a fare quanto richiesto e che conosce tutta la situazione del mio sistema e quindi potrebbe adattarsi

 *Quote:*   

> 
> 
> No, non è stato ritenuto sufficiente poichè, come dici tu, non lo avevi esplicitamente disabilitato!
> 
> 

 

quindi la mia conclusione non è errata, se non voglio una USE sia usata DEVO assicurarmi

che sia esplicitamente disabilitata ...

 *Quote:*   

> 
> 
> Comunque ho trovato qualche info interessante a riguardo (poi chiudo qui  ):
> 
> 

 

le informazioni sono interessanti ma se sqlite non è supportato tanto vale togliere la USE o metterla mascherata ... una delle cose che dico è che se tu mi dai la possibilità di scegliere tra due USE mi sembra assurdo che oltre a abilitarne una devo disabilitare l'altra (mi sembra windows con i suoi "sei sicuro di voler ...")

----------

