# Errore compilazione File-BaseDir

## GoraNz

Ciao a tutti. Ho una installazione gentoo amd64 sul mio pc fisso. Qualche giorno fa ho lanciato un aggiornamento completo del sistema col comando emerge -DNu world e il tutto si è piantato alla compilazione del pacchetto in oggetto. L'errore che mi da l'emerge è il seguente:

```
perl: warning: Setting locale failed.

perl: warning: Please check that your locale settings:

   LANGUAGE = (unset),

   LC_ALL = (unset),

   LC_COLLATE = "C",

   LANG = "it_IT@euro"

    are supported and installed on your system.

perl: warning: Falling back to the standard locale ("C").

 [32;01m*[0m Using Module::Build

 [32;01m*[0m perl Build.PL --installdirs=vendor --libdoc= --destdir=/var/tmp/portage/dev-perl/File-BaseDir-0.30.0/image/ --create_packlist=0

perl: warning: Setting locale failed.

perl: warning: Please check that your locale settings:

   LANGUAGE = (unset),

   LC_ALL = (unset),

   LC_COLLATE = "C",

   LANG = "it_IT@euro"

    are supported and installed on your system.

perl: warning: Falling back to the standard locale ("C").

version version 0.87 required--this is only version 0.82 at /usr/lib64/perl5/vendor_perl/5.12.4/Module/Metadata.pm line 20.

BEGIN failed--compilation aborted at /usr/lib64/perl5/vendor_perl/5.12.4/Module/Metadata.pm line 20.

Compilation failed in require at /usr/lib64/perl5/vendor_perl/5.12.4/Module/Build/ModuleInfo.pm line 10.

Compilation failed in require at /usr/lib64/perl5/vendor_perl/5.12.4/Module/Build/Base.pm line 23.

BEGIN failed--compilation aborted at /usr/lib64/perl5/vendor_perl/5.12.4/Module/Build/Base.pm line 23.

Compilation failed in require at /usr/lib64/perl5/vendor_perl/5.12.4/Module/Build.pm line 15.

BEGIN failed--compilation aborted at /usr/lib64/perl5/vendor_perl/5.12.4/Module/Build.pm line 15.

Compilation failed in require at Build.PL line 3.

BEGIN failed--compilation aborted at Build.PL line 3.

 [31;01m*[0m ERROR: dev-perl/File-BaseDir-0.30.0 failed (configure phase):

 [31;01m*[0m   Unable to build!

 [31;01m*[0m 

 [31;01m*[0m Call stack:

 [31;01m*[0m     ebuild.sh, line   85:  Called src_configure

 [31;01m*[0m   environment, line 2202:  Called perl-module_src_configure

 [31;01m*[0m   environment, line 1918:  Called perl-module_src_prep

 [31;01m*[0m   environment, line 1984:  Called die

 [31;01m*[0m The specific snippet of code:

 [31;01m*[0m           perl Build.PL "$@" <<< "${pm_echovar}" || die "Unable to build!";

 
```

anche provando a ricompilare il pacchetto perl, tutto si blocca allo stesso errore e non riesco a capire come risolverlo. Nella seguente riga poi, 

```
perl: warning: Falling back to the standard locale ("C").

version version 0.87 required--this is only version 0.82 at /usr/lib64/perl5/vendor_perl/5.12.4/Module/Metadata.pm line 20.
```

 mi chiede di installare la versione 0.87 che è richiesta dal Metadata.pm, ma questa versione che richiede a quale pacchetto si riferisce?

Posto anche l'emerge --info =dev/perl/File-BaseDir-0.30.0

```
Portage 2.1.10.52 (default/linux/amd64/10.0/desktop, gcc-4.5.3, glibc-2.14.1-r2, 3.1.0-gentoo-r1 x86_64)

=================================================================

                        System Settings

=================================================================

System uname: Linux-3.1.0-gentoo-r1-x86_64-AMD_Athlon-tm-_64_X2_Dual_Core_Processor_5200+-with-gentoo-2.1

Timestamp of tree: Thu, 29 Mar 2012 22:00:01 +0000

app-shells/bash:          4.2_p24

dev-lang/python:          2.7.2-r3, 3.2.2

dev-util/cmake:           2.8.7-r5

dev-util/pkgconfig:       0.26

sys-apps/baselayout:      2.1

sys-apps/openrc:          0.9.9.3

sys-apps/sandbox:         2.5

sys-devel/autoconf:       2.13, 2.68

sys-devel/automake:       1.11.3

sys-devel/binutils:       2.22-r1

sys-devel/gcc:            4.5.3-r2

sys-devel/gcc-config:     1.6

sys-devel/libtool:        2.4.2

sys-devel/make:           3.82-r3

sys-kernel/linux-headers: 3.3 (virtual/os-headers)

sys-libs/glibc:           2.14.1-r2

Repositories: gentoo

ACCEPT_KEYWORDS="amd64 ~amd64"

ACCEPT_LICENSE="* -@EULA"

CBUILD="x86_64-pc-linux-gnu"

CFLAGS="-march=k8 -O2 -pipe"

CHOST="x86_64-pc-linux-gnu"

CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt"

CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"

CXXFLAGS="-march=k8 -O2 -pipe"

DISTDIR="/usr/portage/distfiles"

FEATURES="assume-digests binpkg-logs distlocks ebuild-locks fixlafiles news parallel-fetch protect-owned sandbox sfperms splitdebug strict unknown-features-warn unmerge-logs unmerge-orphans userfetch"

FFLAGS=""

GENTOO_MIRRORS="http://distfiles.gentoo.org"

LANG="it_IT@euro"

LDFLAGS="-Wl,-O1 -Wl,--as-needed"

LINGUAS="it"

MAKEOPTS="-j3"

PKGDIR="/usr/portage/packages"

PORTAGE_CONFIGROOT="/"

PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/usr/portage"

PORTDIR_OVERLAY=""

SYNC="rsync://rsync.gentoo.org/gentoo-portage"

USE="R X a52 aac acl acpi alsa amd64 berkdb bluetooth branding bzip2 cairo cdda cdr cli consolekit cracklib crypt cups cxx dbus debug dri dts dvd dvdr emboss encode exif fam firefox flac fortran gdbm gdu gif gpm gtk handbook iconv ipv6 jpeg kde lcms ldap libnotify mad mmx mng modules mp3 mp4 mpeg mudflap multilib ncurses nls nptl nptlonly nvidia ogg opengl openmp pam pango pcre pdf png policykit ppds pppd qt3support qt4 readline sdl session spell sql sse sse2 ssl startup-notification svg sysfs tcpd tiff truetype udev unicode usb vorbis webkit x264 xcb xml xorg xulrunner xv xvid zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="it" PHP_TARGETS="php5-3" RUBY_TARGETS="ruby18" USERLAND="GNU" VIDEO_CARDS="nvidia" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"

Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS

```

Vi ringrazio anticipatamente per le risposte. Se necessitate di altri output per aiutarmi non esitate a chiedere.

----------

## Massimog

ciao, puoi postare 

```
locale
```

----------

## GoraNz

eccoti l'output:

```

locale: cannot set LC_CTYPE to default locale: No such file or directory

locale: cannot set LC_MESSAGES to default locale: No such file or directory

locale: cannot set LC_ALL to default locale: No such file or directory

LANG=it_IT@euro

LC_CTYPE="it_IT@euro"

LC_NUMERIC="it_IT@euro"

LC_TIME="it_IT@euro"

LC_COLLATE=C

LC_MONETARY="it_IT@euro"

LC_MESSAGES="it_IT@euro"

LC_PAPER="it_IT@euro"

LC_NAME="it_IT@euro"

LC_ADDRESS="it_IT@euro"

LC_TELEPHONE="it_IT@euro"

LC_MEASUREMENT="it_IT@euro"

LC_IDENTIFICATION="it_IT@euro"

LC_ALL=
```

----------

## Massimog

posta anche 

```
cat /etc/env.d/02locale
```

----------

## GoraNz

```
LANG="it_IT@euro"

LC_COLLATE= "C"
```

io personalmente non credo che sia un problema legato alla localizzazione. Credo piuttosto che ci sia qualcosa che non va nelle lib64 in /usr/lib64: è li (nella cartella perl5 precisamente) che va a pescare tutti i moduli per la compilazione, e poi fallisce. Tutti gli errori relativi alla localizzazioni sono warning e non hanno determinato il fallimento della compilazione del pacchetto, o sbaglio? é possibile ricompilare da capo tutte le lib64 con qualche comando apposito?

----------

## k01

da root:

```
echo "it_IT@euro ISO-8859-15" >> /etc/locale.gen && locale-gen
```

ma fossi in te passerei direttamente a UTF-8

poi con queste impostazioni

```
ACCEPT_KEYWORDS="amd64 ~amd64" 
```

è normale che qualcosa prima o poi vada storto

----------

## GoraNz

Oltre alla modifica della localizzazione mi consigli quindi ti togliere l'accept_keywords dal make.conf? Non ricordo con precisione per quale pacchetto ho fatto quel settaggio nel make.conf, però in sostanza vorrei sapere cosa comporta toglierlo. Avrei un sistema sicuramente più stabile, giusto?

----------

## k01

non puoi toglierlo per tutto il sistema ora, avresti problemi con il downgrade di glibc. se ti servono singoli pacchetti usa /etc/portage/package.keywords, non ha senso mettere tutto il sistema in ~

----------

## GoraNz

E non potrei semplicemente settare le glibc in ~amd64 nel package.keywords, risistemare il resto del sistema, e alla fine effettuare il downgrade delle glibc?

----------

## k01

se ne è già parlato altre volte di questo problema, cerca nel forum  :Wink:  ad esempio: https://forums.gentoo.org/viewtopic-t-883800.html

----------

## GoraNz

ok ho trovato un paio di guide che esordiscono con un bel: *Quote:*   

> WARNING: DO NOT DO THIS EXCEPT IF YOU CLEARLY UNDERSTAND THAT YOUR GENTOO WILL BE BROKEN ! 

 e la cosa mi affascina! xD Provo a sistemare un pò le cose e poi vedere se riesco a fare il downgrade delle glibc all'ultima versione stabile..vi farò sapere!

----------

## djinnZ

cerca nella sezone documentazione che ho spiegato come fare, mi manca solo il pollastro che si decide a far da cavia.

il downgrade brutale resta una cosa imbecille da fare, devi sempre passare per thinderbox.

----------

## GoraNz

Ho letto i tuoi post al riguardo e sarei disposto anche a farti da "pollastro"...ma credo che il mio sistema sia veramente incasinato. 

Quello che avevo in mente di fare è di riportare da ~am64 a stable tutti i pacchetti che mi permettono di farlo senza intoppi (lasciando le glibc in ~amd64 nel package.keywords), e poi dedicarmi al downgrade delle glibc. I problemi sono due(almeno per il momento):

- incontro errori di dipendenze ovunque se tolgo brutalmente l'accept_keywords dal make.conf.

- ho letto in una guida che, per avere qualche possibilità di successo nel downgrade delle glibc, è preferibile riportare il sistema ad una versione stabile che sia stata installata precedentemente nel sistema. Il problema è che io non so quale versione, tra quelle stabili, era installata sul mio sistema, prima che la mia mente malata da n00b decidesse di mettere tutto il sistema in ~.

Arrivando ora alle domande volevo sapere se il modus operandi descritto sopra è giusto ma se soprattutto è fattibile. Se lo è, esiste un modo meno brutale del togliere semplicemente l'accept_keywords dal make.conf?

Per quanto riguarda il secondo problema, è PREFERIBILE sapere quale versione stabile delle glibc era installata prima dell'aggiornamento, oppure è proprio INDISPENSABILE? 

Grazie per le risposte.Last edited by GoraNz on Sat Mar 31, 2012 2:49 pm; edited 2 times in total

----------

## djinnZ

su thindebox ci sono i pacchetti aggiornati delle librerie principali, si parte dal rimpiazzarli.

Altrimenti reinstalli ex novo su una nuova partizione e rimpiazzi (giusto per conservare le configurazoni, in ogni caso devi sempre ricompilare praticamente tutto).

Se qualcuno vuol esser cortese ed estendere il mio intervento sarebbe meglio. Lo spunto te lo ho indicato ed nopn posso fare altro.

----------

## GoraNz

Per reinstallare il tutto in una nuova partizione, intendi fare il chroot (eventualmente da livecd) su una nuova partizione, installare lo stage e poi settare questa nuova partizione come partizione di sistema? Che in pratica è come reinstallare tutto da capo, e non c'è un downgrade vero e proprio, giusto?

EDIT: ho letto con attenzione lo script postato da te in questo topic. Se ho ben capito bene quello script fa in modo che, settando un'opportuna directory tramite la variabile PKGDIR nel make.conf, si ricompili tutto il sistema ex-novo (riscaricando un nuovo stage e scompattandolo). Tramite il comando quickpkg fa in modo poi di mettere nella directory settata in PKGDIR tutti i pacchetti appena installati e compilati, rendendoli già pronti per essere installati nel portage. A questo punto dovremmo lanciare i due comandi "letali":

```
emerge -eDNu @world

emerge -eDNu @system
```

Se le mie intuizioni fin qui sono tutte giuste(e perfavore correggimi se non lo sono, altrimenti rischio di fare un casotto xD), l'unica cosa che non mi torna è: 

- come se li pesca l'emerge i pacchetti dalla PKGDIR che ho settato io, dopo che ho fatto tutta la menata tramite il quickpkg?

grazie ancora per le dritte.

EDIT2: è il -K che si tira giu tutti i binari. scusate la domanda scema! comunque provo a fare questa cosa e vi faccio sapere.

----------

