# [Gelöst] Update von perl 5.34.0 auf 5.34.0-r3 schlägt fehl

## bearpaw

Hallo zusammen,

ich versuche schon seit längerem ein Update von perl 5.34.0 auf 5.34.0-r3 zu machen.

Hierzu nutze ich folgende Befehle:

```
perl-cleaner --all

MAKEOPTS="-j1" emerge --update perl
```

An ein world-Update ist nur zu denken, wenn ich perl maskiere.

Emerge bricht mit folgenderer Meldung ab:

```
make[1]: Leaving directory '/var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/Digest-SHA'

LD_LIBRARY_PATH=/var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0 /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/preload /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/libperl.so.5.34.0 ./miniperl -Ilib make_ext.pl lib/auto/Encode/Encode.so  MAKE="make" LIBPERL_A=libperl.so.5.34.0 LINKTYPE=dynamic

ERROR from evaluation of /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/Encode/Byte/Makefile.PL: Can't locate File/Spec/Functions.pm in @INC (you may need to install the File::Spec::Functions module) (@INC contains: /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/AutoLoader/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/dist/Carp/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/dist/PathTools /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/dist/PathTools/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/ExtUtils-Install/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/ExtUtils-MakeMaker/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/ExtUtils-Manifest/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/File-Path/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/ext/re /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/dist/Term-ReadLine/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/dist/Exporter/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/ext/File-Find/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/Text-Tabs/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/dist/constant/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/version/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/Getopt-Long/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/Text-ParseWords/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/ExtUtils-PL2Bat/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/Encode .) at ./Makefile.PL line 4.

BEGIN failed--compilation aborted at ./Makefile.PL line 4.

Unsuccessful Makefile.PL(cpan/Encode): code=512 at make_ext.pl line 532.

make: *** [makefile:575: lib/auto/Encode/Encode.so] Error 2
```

Hier die Ausgabe von gcc -V:

```
Es werden eingebaute Spezifikationen verwendet.

COLLECT_GCC=gcc

COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/10.3.0/lto-wrapper

Ziel: x86_64-pc-linux-gnu

Konfiguriert mit: /var/tmp/portage/sys-devel/gcc-10.3.0-r2/work/gcc-10.3.0/configure --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/10.3.0 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/10.3.0/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/10.3.0 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/10.3.0/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/10.3.0/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/10.3.0/include/g++-v10 --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/10.3.0/python --enable-languages=c,c++,fortran --enable-obsolete --enable-secureplt --disable-werror --with-system-zlib --enable-nls --without-included-gettext --disable-libunwind-exceptions --enable-checking=release --with-bugurl=https://bugs.gentoo.org/ --with-pkgversion='Gentoo Hardened 10.3.0-r2 p3' --enable-esp --enable-libstdcxx-time --disable-libstdcxx-pch --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-multilib --with-multilib-list=m32,m64 --disable-fixed-point --enable-targets=all --enable-libgomp --disable-libssp --disable-libada --disable-systemtap --disable-vtable-verify --disable-libvtv --without-zstd --enable-lto --without-isl --enable-default-pie --enable-default-ssp

Thread-Modell: posix

Unterstützte LTO-Kompressionsalgorithmen: zlib

gcc-Version 10.3.0 (Gentoo Hardened 10.3.0-r2 p3)
```

Meine Vermutung war ein fehlen des Perl-Module File::Spec::Functions.

Allerdings gibt der Befehl 

```
perl -e 'use File::Spec::Functions;'
```

 keinen Fehler aus.

Hat jemand eine Idee, wie es funktionieren könnte?

Sollten noch Angaben fehlen, so liefere ich die gerne nach.

Viele Grüße

bearpawLast edited by bearpaw on Sun Jan 16, 2022 5:44 pm; edited 2 times in total

----------

## mike155

Bitte poste die Ausgabe von 

```
emerge --info dev-lang/perl
```

Es wäre auch gut, wenn wir das vollständige Build-Log hätten. Vielleicht kannst Du es über wgetpaste posten? Hintergrund ist, dass Probleme häufig schon viel früher entstehen - und die eigentliche Fehlermeldung dann nur die Folge eines ganz anderen Problems ist.

----------

## Marlo

 *bearpaw wrote:*   

> Hallo zusammen,
> 
> ich versuche schon seit längerem ein Update von perl ...

 

Ich kann mich jetzt beim besten Willen nicht daran erinnern jemals

Probleme mit perl gehabt zu haben.

Was mir nicht klar ist, warum in deinem hardened noch der gcc-10

vorhanden ist? Hast du den maskiert und wenn Nein, warum machst du

kein normales emerge und lässt das durchlaufen, anstatt perl vorzuziehen?

Grüße

Ma

----------

## Marlo

 *mike155 wrote:*   

> ..., dass Probleme häufig schon viel früher entstehen - und die eigentliche Fehlermeldung dann nur die Folge eines ganz anderen Problems ist.

 

Ah, hallo mike155,

sehe ich auch so, ist ein unsauberes System, dass seit 2 Monaten nicht mehr gewartet worden ist.

----------

## bearpaw

Die Ausgabe von 

```
emerge --info dev-lang/perl
```

 findet ihr unter folgendem Link: https://dpaste.com/93UYJ9SKA

Und hier das Build-Log: https://dpaste.com/257BWSVFA

Merkwürdig das es sich um ein veraltetes System handelt. Ich führe etwa einmal pro Woche ein Update durch.

Aber ich habe gerade gesehen, dass ebenfalls gcc in der Version 11.2.0 installiert ist. Es wird anscheinend aber nicht angewendet. Danke für den Hinweis. Ich versuche es dann auch nochmal mit der neueren Version von gcc.

Das Update von Perl habe ich vorgezogen, da ein 

```
emerge --update --deep @world
```

 beim update von Perl fehlschlägt. Hier wird die Installation von Perl bei  *Quote:*   

> Updating 'mktables.lst'

  abgebrochen. Die Variable MAKEOPTS ist bei mir standardmäßig auf 

```
-j12
```

 gesetzt.

----------

## Marlo

 *bearpaw wrote:*   

>  Ich führe etwa einmal pro Woche ein Update durch.
> 
> 

 

Ja ich hab gesehen, der letzte Timestamp ist von gestern.

Ich würde dein System erst einmal bereinigen.

```
emerge @preserved-rebuild && emerge --depclean --ask --verbose && revdep-rebuild && emerge @preserved-rebuild && eclean --deep packages && env-update && eix-sync -0 && perl-cleaner --all 
```

Du sagtest oben, das "perl-cleaner --all" durchläuft, also sollte es bis dahin keine Probleme geben.

Danach das System syncen und die Datenbanken aktualisieren.

 *Quote:*   

> emaint sync -A && emaint --fix cleanresume && eupdatedb && emerge --oneshot --update portage -av

 

Portage ist nur zur Sicherheit mit drinn.

Und jetzt gucken was beim update angezeigt wird und bevor du y eingibst hier posten:

 *Quote:*   

> emerge --ask --verbose --deep --with-bdeps=y --changed-use --update --keep-going @world 

 

----------

## mike155

Ich habe mir das Build Log angesehen: bis auf den Fehler sieht es gut aus.

Ich habe Perl mit den gleichen USE Flags gebaut und mein Build Log mit Deinem Buuild Log verglichen. Bis zu dem Fehler sind die einzigen Unterschiede die GCC Optimierungs-Flags und ein paar zusätzliche Warnmeldungen, die durch meinen GCC 11.2 entstehen.

Ich sehe nichts, was da verkehrt ist. Ich sehe auch keinen Grund für die Fehlermeldung "Can't locate File/Spec/Functions.pm". Diese Datei wird im Perl-Paket mitgeliefert - und wenn sie tatsächlich fehlen würde, gäbe es schon früher einen Fehler.

Es muss also irgendein Meta-Problem sein.

Ich würde an dieser Stelle Folgendes machen:

Überlegen, ob ich irgendwo etwas Besonderes konfiguriert hätte, was zu derartigen Fehlern führen kann

Aufräumen, wie von @Marlo beschrieben

Paket überspringen, Rest des Systems bauen und dann noch einmal probieren

Das Paket ohne die beiden Sanxbox-Features bauen. Hilft auch manchmal 

Wenn das alles nicht helfen sollte, bitte noch einmal melden.

----------

## pietinger

 *bearpaw wrote:*   

> Aber ich habe gerade gesehen, dass ebenfalls gcc in der Version 11.2.0 installiert ist. Es wird anscheinend aber nicht angewendet. 

 

Wenn Du bei einem Update auf @world einen neuen GCC bekommst, wird der alte GCC solange weiterverwendet bis Du:

1. einen "emerge -c" machst (dann stellt emerge auf den Neuen um), oder

2. manuell umstellst mit "gcc-config" (oder halt mit "eselect gcc ...")

----------

## bearpaw

 *Marlo wrote:*   

> 
> 
> ```
> emerge @preserved-rebuild && emerge --depclean --ask --verbose && revdep-rebuild && emerge @preserved-rebuild && eclean --deep packages && env-update && eix-sync -0 && perl-cleaner --all 
> ```
> ...

 

Erstmal Danke für Euren Einsatz.

Nach Durchführung von 

```
emerge @preserved-rebuild && emerge --depclean --ask --verbose
```

 bekomme ich folgende Ausgabe:

 *Quote:*   

> * Dependencies could not be completely resolved due to
> 
>  * the following required packages not being installed:
> 
>  * 
> ...

 

Wenn ich jetzt 

```
emerge --update --deep --with-bdeps=y --newuse world -p
```

 eingebe, dann sollen folgende Pakete gebaut werden:

 *Quote:*   

> These are the packages that would be merged, in order:
> 
> Calculating dependencies... done!
> 
> [ebuild     U  ] dev-lang/perl-5.34.0-r3:0/5.34::gentoo [5.34.0:0/5.34::gentoo] USE="-berkdb -debug -doc -gdbm -ithreads -minimal" 0 KiB
> ...

 

Nun hängt es wieder an Perl   :Rolling Eyes:  Irgendwie drehe ich mich gerade im Kreis.

----------

## mike155

Na, dann gib doch ein:

```
emerge --update --deep --with-bdeps=y --newuse --exclude="dev-lang/perl" -av @world
```

----------

## bearpaw

 *Quote:*   

> 
> 
> [blocks B      ] sys-libs/glibc[crypt(+)] ("sys-libs/glibc[crypt(+)]" is soft blocking sys-libs/libxcrypt-4.4.25)
> 
> 

 

Danke mike155. Das --exclude kannte ich noch nicht. Das gleiche Ergebnis erziele ich in dem Fall aber auch, wenn ich Perl maskiere.

Ich verabschiede mich erstmal und schaue morgen nochmal rein.

Bis dann.

----------

## mike155

 *bearpaw wrote:*   

> 
> 
> ```
> [blocks B      ] sys-libs/glibc[crypt(+)] ("sys-libs/glibc[crypt(+)]" is soft blocking sys-libs/libxcrypt-4.4.25)
> ```
> ...

 

Okay, diese Meldung zeigst Du uns jetzt aber zum allerersten Mal! 

Wie sieht es mit diesem News Item aus: https://www.gentoo.org/support/news-items/2021-10-18-libxcrypt-migration-stable.html?

Hast Du irgendetwas davon gemacht? Oder hast Du es gar nicht beachtet? Letzteres wäre NICHT schlimm. Schlimm wäre, wenn Du Teile davon gemacht hättest - und jetzt Überbleibsel in Deinen Config-Dateien stehen und für Durcheinander sorgen.

----------

## Marlo

 *Quote:*   

> * Dependencies could not be completely resolved due to
> 
>  * the following required packages not being installed:
> 
>  * 
> ...

 

Es ist Kontraproduktiv wenn du die Ausgaben oben und unten beschneidest. So bekommen wir nicht alles zu sehen.

Die obige Ausgabe erscheint, wenn kein emerge --depclean durchgeführt wurde, obwohl die Aufforderung dazu nach fast jedem emerge kommt.

Zum obigen Inhalt kann man nur sagen, das das vor Monaten angekündigt wurde mit Umstellung zum 01.11.21.

"eselect news list" zeigt 

```
2021-10-18  migrating from glibc[crypt] to libxcrypt in stable

```

Dadrin steht auch, dass die make.conf kontrolliert werden soll auf:

```
It is also recommended that users do _not_ have

FEATURES="collision-protect" enabled because it is

aggressive in protecting even orphaned files. Instead,

use FEATURES="unmerge-orphans" which is almost identical

in behaviour.

```

Wenn die make.conf angepasst ist, dann 

```
 emerge --update --newuse --deep --with-bdeps=y --keep-going=y @world
```

Sollte das nicht gehen:

```
In some cases, Portage may schedule a rebuild of certain packages in an

incorrect order [2]. If building a package fails, please try upgrading

Python itself to help avoid spurious build failures, and then

libcrypt and libxcrypt first:

# emerge -v1 --ignore-built-slot-operator-deps=y dev-lang/python:3.8 dev-lang/python:3.9

# emerge -v1 virtual/libcrypt sys-libs/libxcrypt

And then continue the world upgrade with Portage's "--keep-going=y".
```

Es ist also nicht ein Fehler mit perl. Dort taucht er nur auf.

----------

## Marlo

 *Quote:*   

> 
> 
> ..., wenn ich Perl maskiere.
> 
> 

 

Na ja, wenn du jedesmal wenn etwas nicht gleich funktionierst das Problem in die package.mask schreibst,

wird dein System im laufe der Zeit unbenutzbar und eine Fehlerkorrektur unmöglich.

----------

## bearpaw

 *Marlo wrote:*   

>  *Quote:*   * Dependencies could not be completely resolved due to
> 
>  * the following required packages not being installed:
> 
>  * 
> ...

 

Guten Morgen Mario,

ich habe mich auch gewundert, aber mehr wurde im Terminal nicht angezeigt.

In der Tat kann ich mich dunkel dran erinnern, Schritte gemacht zu haben. Das System lief auch ohne zu murren. Nun ist das mit Perl wohl wieder hochgekommen.

----------

## bearpaw

 *Marlo wrote:*   

>  *Quote:*   
> 
> ..., wenn ich Perl maskiere.
> 
>  
> ...

 

Das Problem mit Perl hatte ich im Vorfeld schon mal. Aus lauter Verzweiflung habe ich den Rechner neu aufgesetzt.

Der Rechner lief dann ja   :Very Happy:  Als ein Update von Perl anstand hatte ich das gleiche Problem. Um das zu Umgehen habe ich das Paket dann maskiert, da mir auch die Suche im Netz nicht geholfen hatte.

Maskierung ist jedoch mein letztes Mittel zur Wahl.

Ich kann mich nur Ärgern, dass ich mich nicht im Vorfeld an das Forum gewendet habe.   :Embarassed:   Dann hätte ich meinen Rechner nicht so durcheinander gebracht.

----------

## bearpaw

Folgende Schritte zur Aktualisierung des Systems habe ich jetzt durchgeführt:

```
# emerge -v1 --ignore-built-slot-operator-deps=y dev-lang/python:3.8 dev-lang/python:3.9

# emerge @preserved-rebuild

# emerge -v1 virtual/libcrypt sys-libs/libxcrypt

# emerge --update --deep --with-bdeps=y --newuse --keep-going=y --ignore-built-slot-operator-deps=y --exclude="dev-lang/perl" -av @world

# echo "=virtual/libcrypt-2" > /etc/portage/package.mask/virtual/libcrypt

# emerge --update --deep --newuse --exclude="dev-lang/perl" -av @world –keep-going=y

# emerge @preserved-rebuild

# emerge --depclean --ask –verbose

# revdep-rebuild && emerge @preserved-rebuild && eclean --deep packages && env-update && eix-sync -0 && perl-cleaner --all 

# emaint sync -A && emaint --fix cleanresume && updatedb && emerge --oneshot --update portage -av

# emerge --ask --verbose --deep --with-bdeps=y --changed-use --update --keep-going @world
```

 *Quote:*   

> 
> 
> These are the packages that would be merged, in order:
> 
> Calculating dependencies... done!
> ...

 

Beim Bauen von Perl bekomme ich wieder die bekannte Fehlermeldung.

```
# emerge -C virtual/libcrypt
```

Zum Update auf Update auf glibc-2.33-r7 

```
# emerge glibc
```

```
# emerge --update @world --deep -av
```

 *Quote:*   

> These are the packages that would be merged, in order:
> 
> Calculating dependencies... done!
> 
> [ebuild     UD ] sys-libs/glibc-2.33-r1:2.2::gentoo [2.33-r7:2.2::gentoo] USE="(crypt*) multiarch (multilib) (ssp) (static-libs) -audit -caps (-cet) -compile-locales -custom-cflags -doc -gd -headers-only -multilib-bootstrap -nscd -profile (-selinux) -static-pie -suid -systemtap -test (-vanilla) (-systemd%)" 0 KiB
> ...

 

```
# rm /etc/portage/package.mask/virtual/libcrypt
```

--> Hier war noch libcrypt-2 maskiert.

```
# emerge --update @world -av
```

 *Quote:*   

> These are the packages that would be merged, in order:
> 
> Calculating dependencies... done!
> 
> [ebuild  N     ] sys-libs/libxcrypt-4.4.25:0/1::gentoo  USE="(compat) (split-usr) (system) -static-libs -test" ABI_X86="(64) -32 (-x32)" 0 KiB
> ...

 

```
# emerge --update --deep --newuse --exclude="dev-lang/perl" -av @world --keep-going=y
```

 *Quote:*   

> These are the packages that would be merged, in order:
> 
> Calculating dependencies... done!
> 
> !!! Multiple package instances within a single package slot have been pulled
> ...

 Last edited by bearpaw on Sun Nov 14, 2021 9:27 am; edited 1 time in total

----------

## bearpaw

Um den Konflikt zwischen ldd-12 und ldd-13 aufzulösen habe ich nun folgende Schritte unternommen:

```
# mkdir /etc/portage/package.accept_keywords/mail-client

# echo ">=mail-client/thunderbird-91.3.0 ~amd64" > /etc/portage/package.accept_keywords/mail-client/thunderbird

# emerge thunderbird -av
```

 *Quote:*   

> These are the packages that would be merged, in order:
> 
> Calculating dependencies... done!
> 
> [ebuild     UD ] sys-libs/glibc-2.33-r1:2.2::gentoo [2.33-r7:2.2::gentoo] USE="(crypt*) multiarch (multilib) (ssp) (static-libs) -audit -caps (-cet) -compile-locales -custom-cflags -doc -gd -headers-only -multilib-bootstrap -nscd -profile (-selinux) -static-pie -suid -systemtap -test (-vanilla) (-systemd%)" 0 KiB
> ...

 

```
# dispatch-conf

# emerge –depclean
```

 *Quote:*   

> >>> Calculating removal order...
> 
> >>> These are the packages that would be unmerged:
> 
>  sys-devel/clang
> ...

 

```
# emerge --update world --deep -av --exclude="dev-lang/perl"
```

 *Quote:*   

> These are the packages that would be merged, in order:
> 
> Calculating dependencies... done!
> 
> Total: 0 packages, Size of downloads: 0 KiB
> ...

 

```
# revdep-rebuild
```

 *Quote:*   

>  * This is the new python coded version
> 
>  * Please report any bugs found using it.
> 
>  * The original revdep-rebuild script is installed as revdep-rebuild.sh
> ...

 

```
# emerge @preserved-rebuild
```

 *Quote:*   

> These are the packages that would be merged, in order:
> 
> Calculating dependencies... done!
> 
> Total: 0 packages, Size of downloads: 0 KiB
> ...

 

Zurück bleibt jetzt erstmal der Konflikt zwischen libcrypt und glibc.

Wenn ich es richtig sehe, dann steht jetzt erstmal die Behebung an, bevor ich mit Perl weitermache. Richtig?

Viele Grüße

bearpaw

----------

## mike155

 *bearpaw wrote:*   

> Zurück bleibt jetzt erstmal der Konflikt zwischen libcrypt und glibc. Wenn ich es richtig sehe, dann steht jetzt erstmal die Behebung an, bevor ich mit Perl weitermache. Richtig?

 

Prinzipiell richtig - aber leider hängen die beiden Probleme zusammen: Die neue Version der glibc kann erst installiert werden, wenn Perl aktualisiert werden kann.

```
FEATURES="-network-sandbox -sandbox -usersandbox" emerge --oneshot dev-lang/perl
```

Tritt der Fehler bei Perl wieder auf? Oder kann Perl auf diese Weise installiert werden?

Hinweis und Warnung: Abschalten der Sandbox ist eine ganz schlechte Idee und auch keine Problemlösung. Mich interessiert das Ergebnis aus diagnostischen Gründen. Falls Perl so installiert werden kann, müssen wir hinterher auf jeden Fall die Ursache für das Problem suchen.

----------

## bearpaw

 *mike155 wrote:*   

> 
> 
> ```
> FEATURES="-network-sandbox -sandbox -usersandbox" emerge --oneshot dev-lang/perl
> ```
> ...

 

Hallo mike155,

dies brachte leider kein Erfolg. Das build log habe ich hier abgelegt: https://dpaste.com/49MY4EWFQ

----------

## mike155

Okay, dann liegt es nicht an der Sandbox. Ich bin jetzt erst mal ratlos. Werde nachher mal überlegen, was es noch sein könnte...

----------

## Josef.95

Hm, bezüglich dem perl Abbruch - liegen eventuell noch Leichen in /usr/local/* ?

Schau bitte mal was 

```
emerge -n app-text/tree && tree /usr/local/
```

 dazu ausgibt.

----------

## bearpaw

tree /usr/local/ zeigt etwas aus dem steam-overlay. Erkennen kann ich zumindest keine Leichen.

 *Quote:*   

> >>> Installing (1 of 1) app-text/tree-1.8.0::gentoo
> 
>  * checking 7 files for package collisions
> 
> >>> Merging app-text/tree-1.8.0 to /
> ...

 

----------

## bearpaw

Sollte ich vielleicht den Cache von ccache leeren?

Edit: Ach nee. Auf ccache habe ich ja diesmal verzichtet.

----------

## Josef.95

Ich bin mir nicht ganz sicher, aber deinem Perl fehlt anscheinend das Crypt-Zeugs

Aus deinem perl configure: 

```
Checking for optional libraries...

What libraries to use? [-lgdbm -ldl -lm -lutil -lc -lgdbm_compat]

[...]

Checking to see if your system supports struct cmsghdr...

copysign() found.

copysignl() found.

crypt() NOT found.

crypt() NOT found.

<crypt.h> NOT found.

crypt_r() NOT found.
```

Hier schaut die Zeile so aus: 

```
Checking for optional libraries...

What libraries to use? [-lgdbm -ldl -lm -lcrypt -lutil -lc -lgdbm_compat]
```

Vorschlag:

Maskiere mal bitte virtual/libcrypt:0/1 (diese Version ist mit dem neuen libxcrypt nicht kompatibel)

und merge dann: 

```
emerge -av1 glibc sys-libs/libxcrypt virtual/libcrypt:0/2 --ignore-built-slot-operator-deps=y
```

und versuche dann ein normales 

```
emerge -avuDU @world --backtrack=100
```

 Update.

Wie weit kommst du da?

----------

## bearpaw

 *Josef.95 wrote:*   

> 
> 
> und versuche dann ein normales 
> 
> ```
> ...

 

Wieder bis Perl. Hier das build log: http://dpaste.com/2HQUX9FEV

----------

## Josef.95

Hm ok, dann versuche mit 

```
emerge --resume --skipfirst
```

 weiterzukommen.

----------

## mike155

Ich habe versucht, den Fehler nachzustellen. Dazu habe ich in meinem Makefile folgende Anweisungen eingefügt, kurz bevor "Encode.so" gebaut wird:

```
rm -f /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/lib/File/Spec/Functions.pm

rm -f /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/dist/PathTools/lib/File/Spec/Functions.pm
```

Ich erhalte dann folgende Fehlermeldung:

```
ERROR from evaluation of /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/Encode/Byte/Makefile.PL: Can't locate File/Spec/Functions.pm in @INC (you may need to install the File::Spec::Functions module) (@INC contains: /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/AutoLoader/lib /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/dist/Carp/lib /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/dist/PathTools /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/dist/PathTools/lib /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/ExtUtils-Install/lib /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/ExtUtils-MakeMaker/lib /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/ExtUtils-Manifest/lib /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/File-Path/lib /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/ext/re /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/dist/Term-ReadLine/lib /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/dist/Exporter/lib /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/ext/File-Find/lib /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/Text-Tabs/lib /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/dist/constant/lib /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/version/lib /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/Getopt-Long/lib /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/Text-ParseWords/lib /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/ExtUtils-PL2Bat/lib /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/lib /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/Encode .) at ./Makefile.PL line 4.
```

Vergleichen wir das mit der Fehlermeldung von @bearpaw:

```
ERROR from evaluation of /var/tmp/portage/dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/Encode/Byte/Makefile.PL: Can't locate File/Spec/Functions.pm in @INC (you may need to install the File::Spec::Functions module) (@INC contains: /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/AutoLoader/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/dist/Carp/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/dist/PathTools /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/dist/PathTools/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/ExtUtils-Install/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/ExtUtils-MakeMaker/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/ExtUtils-Manifest/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/File-Path/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/ext/re /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/dist/Term-ReadLine/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/dist/Exporter/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/ext/File-Find/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/Text-Tabs/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/dist/constant/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/version/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/Getopt-Long/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/Text-ParseWords/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/ExtUtils-PL2Bat/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/lib /dev-lang/perl-5.34.0-r3/work/perl-5.34.0/cpan/Encode .) at ./Makefile.PL line 4.

BEGIN failed--compilation aborted at ./Makefile.PL line 4.
```

Dann sehen wir, dass die Suchpfade von @bearpaw nicht stimmen. 

Meine Suchpfade beginnen mit "/var/tmp/portage/dev-lang". Die Suchpfade bei @bearpaw fangen an mit "/dev-lang". Also kein Wunder, dass "File/Spec/Functions.pm" bei @bearpaw nicht gefunden wird.

Jetzt ist die Frage: was führt dazu, dass bei @bearpaw die falschen Suchpfade verwendet werden?

@bearpaw: bitte überlege mal mit, was das sein könnte. Ist "/var/tmp/portage" bei Dir beispielsweise ein Link? Oder ist dort ein Volume mit Nicht-Standard-Optionen gemountet? Oder spielt ccache irgendwie rein? Bei der Ausgabe von "emerge --info" wird "ccache" ja ausgegeben. Es muss irgendetwas in dieser Richtung sein!

----------

## bearpaw

 *Josef.95 wrote:*   

> Hm ok, dann versuche mit 
> 
> ```
> emerge --resume --skipfirst
> ```
> ...

 

Ich konnte durch das maskieren von virtual/libcrypt:0/1 und der oberen Anweisung jetzt nachvollziehen, welche Pakete noch Abhängigkeiten hatten. Diese habe ich dann per emerge <Paketname> einzeln upgedatet.

Darunter war nun auch libxcrypt und glibc.

Zurück bleibt nur noch Perl.

Ich werde jetzt mal schauen, was ich zur Recherche von @mike155 beitragen kann.

 *mike155 wrote:*   

> Oder spielt ccache irgendwie rein? Bei der Ausgabe von "emerge --info" wird "ccache" ja ausgegeben.

 

Ist ccache bei portage nicht abgeschaltet?

```
emerge --info | grep ccache
```

 *Quote:*   

> ccache version 4.4.2 [disabled]
> 
> dev-util/ccache:          4.4.2::gentoo

 

----------

## Marlo

@bearpaw,

da du aus geheimen Gründen immer noch keine richtigen Fehler-/Zustandsberichte postest

und die Fehlerbehebung selbst erschwerst wird dir das wohl reichen: 

https://wiki.gentoo.org/wiki/Project:Toolchain/libcrypt_implementation#Perl_fails_when_trying_to_emerge_libxcrypt

----------

## bearpaw

 *Marlo wrote:*   

> @bearpaw,
> 
> da du aus geheimen Gründen immer noch keine richtigen Fehler-/Zustandsberichte postest
> 
> und die Fehlerbehebung selbst erschwerst wird dir das wohl reichen: 
> ...

 

@Mario:

Deine Bemerkung mit den geheimen Gründen kann ich nicht nachvollziehen. Was meinst Du mit "richtige Fehler-/Zustandsberichte"?

Ich bin im Umgang mit Foren nicht so versiert und habe keine Routine was zur Fehlersuche konkret benötigt wird. 

Und nein: Der Link reicht nicht.

@mike155:

Ich habe mir das Log auf Deinen Hinweis nochmal angeschaut und konnte den fehlerhaften Pfad nachvollziehen.

Daher bin ich nun auf einen Wiki-Eintrag (https://wiki.gentoo.org/wiki/Project:Perl/Dot-In-INC-Removal) mit folgendem Inhalt aufmerksam geworden:

 *Quote:*   

> Restoring . in Perl itself
> 
> This is suggested as an absolute last option for end users who are stuck in a situation where the number of failures pertaining to . in Gentoo Packages is too high and they have custom code and infrastructure outside Portage that relies on the old mechanic, and they have no time to fix the real problems, ... or they don't have the time to properly assess their production software for this issue, and want to avoid the risk of accidental failures.
> 
> This solution should be considered temporary at best as this option is likely to evaporate upstream in the near future, and this option globally reintroduces the security risk stated above.
> ...

 

Ich habe deshalb folgende Befehle ausgeführt:

```
# echo 'EXTRA_ECONF="-Udefault_inc_excludes_dot"' > /etc/portage/env/perl-dot-in-inc.conf

# echo '>=dev-lang/perl-5.34.0-r1 perl-dot-in-inc.conf' > /etc/portage/package.env/dev-lang/perl

# emerge --update --newuse --deep --with-bdeps=y @world -a
```

 *Quote:*   

> 
> 
> These are the packages that would be merged, in order:
> 
> Calculating dependencies... done!
> ...

 

Der Link zum build log: http://dpaste.com/DY8SCDN5DLast edited by bearpaw on Tue Nov 16, 2021 5:43 pm; edited 1 time in total

----------

## bearpaw

 *mike155 wrote:*   

> @bearpaw: bitte überlege mal mit, was das sein könnte. Ist "/var/tmp/portage" bei Dir beispielsweise ein Link? Oder ist dort ein Volume mit Nicht-Standard-Optionen gemountet? Oder spielt ccache irgendwie rein? Bei der Ausgabe von "emerge --info" wird "ccache" ja ausgegeben. Es muss irgendetwas in dieser Richtung sein!

 

Meine /etc/fstab sieht wie folgt aus:

 *Quote:*   

> # <fs>						<mountpoint>	<type>	<opts>	<dump/pass>
> 
> UUID=EB2E-E1DD					/boot		vfat	noauto,noatime				1 2
> 
> UUID=e40c0db6-b281-44cd-9f5c-15d2d32a766b	/		ext4	noatime,errors=remount-ro		0 1
> ...

 

Und hier die Ausgabe von emerge --info: https://dpaste.com/9DLBMD2WK

----------

## mike155

Irgendetwas ist kaputtkonfiguriert bei Dir...

Ich bin mir auch sicher, dass ich das Problem recht schnell finden würde, wenn ich vor Deinem Rechner sitzen würde. Aber über das Internet ist es extrem schwer.

Generell würde ich Dir empfehlen, Dein System wieder näher an die Default-Werte heranzuführen. Je näher Du bei den Gentoo Default-Werten bist, desto einfacher wird es. Also, Du solltest möglichst viele Deiner Änderungen wieder rückgängig machen.

Du könntest mal Folgendes probieren:

```
ln -s /var/tmp/portage/dev-lang /dev-lang
```

Kannst Du Perl dann installieren? Könnte funktionieren. Natürlich solltest Du den Link hinterher wieder entfernen - aber vielleicht reicht es aus, um Perl zumindest mal zu installieren und hinterher weiterarbeiten zu können. Einen Versuch ist's wert!   :Smile: 

----------

## firefly

Dein setup für ramdisk sieht merkwürdig aus.

Ich kenne persönlich so ein setup nicht woher kommt das?

tritt das problem nicht mehr auf wenn du stattdessen diese variante nutzt?

```
none /var/tmp/portage tmpfs defaults,uid=portage,gid=portage,size=10G 0 0
```

den size parameter natürlich so anpassen das es für deine RAM größe passt oder weglassen (wo dann AFAIK 50% genutzt wird als maximum)

----------

## bearpaw

 *mike155 wrote:*   

> Irgendetwas ist kaputtkonfiguriert bei Dir...
> 
> Ich bin mir auch sicher, dass ich das Problem recht schnell finden würde, wenn ich vor Deinem Rechner sitzen würde. Aber über das Internet ist es extrem schwer.
> 
> Generell würde ich Dir empfehlen, Dein System wieder näher an die Default-Werte heranzuführen. Je näher Du bei den Gentoo Default-Werten bist, desto einfacher wird es. Also, Du solltest möglichst viele Deiner Änderungen wieder rückgängig machen.
> ...

 

Perfekt. Der Tipp war gold wert.

Die Anpassungen in package.env habe ich rückgängig gemacht und Perl mit dem Link installiert.

Jetzt gibt 

```
perl -V
```

 folgendes aus:

 *Quote:*   

> Summary of my perl5 (revision 5 version 34 subversion 0) configuration:
> 
>   Platform:
> 
>     osname=linux
> ...

 

Wenn ich den Link wieder lösche, dann läuft emerge perl wieder in den Fehler.

Somit gibt es zumindest erstmal einen Workaround.

Als nächstes schaue ich mir mal das setup der /etc/fstab und den Hinweis von firefly an.

----------

## mike155

 *Quote:*   

> Dein setup für ramdisk sieht merkwürdig aus. 

 

Ja, das sieht in der Tat komisch aus. Ich habe bearpaws Einstellungen 

```
# tmpfs

tmpfs /dev/shm tmpfs rw,nosuid,noatime,nodev,mode=1777 0 0

/dev/shm /tmp none rw,bind 0 0

/dev/shm /var/tmp none rw,bind 0 0

/dev/shm /var/tmp/portage none rw,bind,nosuid,noatime,nodev,mode=755,uid=portage,gid=portage,x-mount.mkdir=755 0 0
```

gerade in meine fstab übernommen und rebootet. Den Fehler beim Compilieren von Perl konnte ich nicht reproduzieren - aber das heißt nicht, dass es an dieser Stelle nicht doch ein Problem gibt. 

/var/tmp sollte übrigens nicht auf einem tmpfs liegen. Dateien in diesem Verzeichnis sollten einen Reboot überleben. Siehe hier oder hier.

----------

## Max Steel

Gib bitte mal die Ausgabe von grep -ir perl /etc/portage/ hier aus.

----------

## flammenflitzer

Ich habe hier den Faden verloren. Hatte ein ähnliches Problem. emerge perl-5.34.0-r2 und r3 brach ab. Die letzte Meldung war meines Erachtens irgendwas mit DB. Ich habe dann das entsprechende Paket neu installiert und dann lief emerge perl durch. (Vorher hatte ich die Version in der /etc/package.mask und das system mit emerge@preserved-rebuild und perl-cleaner geprüft. Gab keine Fehler.) Wie ist denn die Ausgabe, an der Stelle wo das kompillieren abbricht? Habe ich hier nicht gefunden. Vielleicht fällt mir meine Lösung wieder ein wenn ich die Ausgabe sehe. Möglicherweise hilft es hier....

...Ich denke, das ich bei mir 

```
sys-libs/db-5.3.28-r8
```

 neu kompilleiert habe und danach konnte ich perl-5.34.0-r3 installieren....

----------

## bearpaw

Hallo,

ich werde wohl meinen Rechner nun neu aufsetzen.

Ich schreibe die Nachricht gerade mit dem Smartphone, da ich nun den NVIDIA-Treiber

nicht mehr installieren kann. X11 möchte eine neue Installation von x11-drivers/nvidia-drivers.

Wenn jemand eine Idee hat, wie ich ein Bild vom Bildschirm bereitstellen kann,

dann mache ich das gerne.

Ich soll nun ein 

```
make oldconfig && make prepare
```

machen.

Das habe ich gemacht. Aber das Paket nvidia-drivers-495.44-r2 lässt sich nicht installieren.

Wahrscheinlich ist das System echt durcheinander. Ich habe /var/tmp schon aus der fstab rausgenommen.

----------

## Josef.95

Hallo bearpaw,

make prepare reicht wahrscheinlich nicht.

Baue mit den Kernel-Sources mit denen du die nvidia-drivers Module bauen möchtest vorher am besten den Kernel,

also etwa wie folgt: 

```
make clean

make oldconfig

make -j12 && make modules_install

make install
```

Und dann den Bootloader noch für den neu installierten Kernel konfigurieren - für GRUB zb via 

```
grub-mkconfig -o /boot/grub/grub.cfg
```

Mit dem so gebauten Kernel sollte dann auch das bauen und installieren des nvidia-drivers Pakets funktionieren.

----------

## bearpaw

Hallo josef.95,

Kernel neu bauen mit Deiner Anleitung reicht leider nicht.

Das habe ich schon probiert.

----------

## Josef.95

Hm, magst mal das nvidia-drivers build.log mit posten?

(am besten mit MAKEOPTS=-j1 erzeugt - ist dann besser lesbar)

----------

## Josef.95

Zwischendurch noch mal ne andere Idee: Kann es sein das umask irgendwo abweichend von den defaults gesetzt wurde?

----------

## bearpaw

Hallo zusammen,

aus beruflichen und privaten Gründen kam ich die letzten zwei Monate nicht mehr dazu, mich mit meinem privaten PC zu beschäftigen.

Den angefangenen Beitrag möchte ich aber nicht so offen stehen lassen.

Mittlerweile habe ich Gentoo neu aufgesetzt. Offensichtlich hatte ich an zu vielen Stellschrauben gedreht. Dies ließ sich dann nicht mehr so einfach zurückdrehen.

Ein paar Frage sind hier aber noch offen geblieben, die ich noch beantworten möchte.

Viele Grüße

bearpaw

----------

## bearpaw

@firefly:

 *firefly wrote:*   

> Dein setup für ramdisk sieht merkwürdig aus.
> 
> Ich kenne persönlich so ein setup nicht woher kommt das?
> 
> tritt das problem nicht mehr auf wenn du stattdessen diese variante nutzt?
> ...

 

Ich habe in meinem PC nur SSD und NVMe als Festplattenspeicher verbaut.

In dem Wiki-Eintrag auf https://wiki.gentoo.org/wiki/Portage_TMPDIR_on_tmpfs habe ich gelesen, das Portage wie folgt konfiguriert werden soll, wenn /var/tmp als tmpfs eingebunden ist:

```
tmpfs /var/tmp         tmpfs rw,nosuid,noatime,nodev,size=4G,mode=1777 0 0

tmpfs /var/tmp/portage tmpfs rw,nosuid,noatime,nodev,size=4G,mode=775,uid=portage,gid=portage,x-mount.mkdir=775 0 0
```

----------

## bearpaw

Ansonsten hatte ich das Paket app-forensics/lynis installiert.

Darauf bin ich über Punkt 4 auf folgenden Blogbeitrag auf dem Kuketz-Blog gestoßen:

https://www.kuketz-blog.de/linux-systemhaertung-basis-linux-haerten-teil2/

Leider kann ich nicht mehr nachvollziehen, was ich daraus konkret umgesetzt habe.

Ich setze den Beitrag auf "gelöst"

----------

## mike155

/var/tmp sollte aber kein tmpfs sein, siehe beispielsweise: https://unix.stackexchange.com/questions/86297/what-can-go-wrong-if-var-tmp-is-on-a-temporary-filesystem

/tmp kann man als tmpfs mounten.

----------

## bearpaw

 *mike155 wrote:*   

> /var/tmp sollte aber kein tmpfs sein, siehe beispielsweise: https://unix.stackexchange.com/questions/86297/what-can-go-wrong-if-var-tmp-is-on-a-temporary-filesystem
> 
> /tmp kann man als tmpfs mounten.

 

Leider gehen die Meinungen im Web etwas auseinander.

Dank Euch bin ich ja dann auch auf den Beitrag auf unix.stackexchange.com gestoßen.

----------

