Ubicazioni librerie Perl e Protezione integrità sistema

2

Il mio sistema perl sembra avere un mucchio di cruft rimasto dalle installazioni precedenti:

% which perl
/usr/bin/perl

% perl -V | perl -ne 'print if /INC/...//'
  @INC:
    /Library/Perl/5.18/darwin-thread-multi-2level
    /Library/Perl/5.18
    /Network/Library/Perl/5.18/darwin-thread-multi-2level
    /Network/Library/Perl/5.18
    /Library/Perl/Updates/5.18.2/darwin-thread-multi-2level
    /Library/Perl/Updates/5.18.2
    /System/Library/Perl/5.18/darwin-thread-multi-2level
    /System/Library/Perl/5.18
    /System/Library/Perl/Extras/5.18/darwin-thread-multi-2level
    /System/Library/Perl/Extras/5.18
    .

Tra le cose in /System/Library/Perl/Extras/5.18/darwin-thread-multi-2level c'è una vecchia versione di Moose.pm che non funziona, quindi voglio liberarmene:

% perl -MMoose -e1
Invalid version format (version required) at /Library/Perl/5.18/Module/Runtime.pm line 396.
BEGIN failed--compilation aborted.

% perldoc -l Moose
/System/Library/Perl/Extras/5.18/darwin-thread-multi-2level/Moose.pm

Tuttavia, non posso:

% sudo rm /System/Library/Perl/Extras/5.18/darwin-thread-multi-2level/Moose.pm
Password:
override rw-r--r--  root/wheel restricted,compressed for /System/Library/Perl/Extras/5.18/darwin-thread-multi-2level/Moose.pm? y
rm: /System/Library/Perl/Extras/5.18/darwin-thread-multi-2level/Moose.pm: Operation not permitted

Sto indovinando che nei miei vari aggiornamenti del sistema operativo nel corso degli anni, Apple ha spostato alcuni dei miei moduli installati dall'utente in questa directory /System/Library/Perl/Extras , ma poi l'ho protetto con System Integrity Protection, quindi ora non posso liberarmene (facilmente). Sembra probabile?

Se è così - come diavolo è arrivata questa roba? Secondo Qual è la funzione "senza radici" in El Capitan , davvero? , qualsiasi altra roba in /System che Apple non voleva avrebbe dovuto essere spostata in /Library/SystemMigration/History/Migration-(some UUID)/QuarantineRoot , giusto? Non ho mai disabilitato SIP su questa macchina.

Quindi: qual è il modo migliore per affrontare questo? Posso disabilitare temporaneamente SIP e soffiare via /System/Library/Perl/Extras/5.18 o qualsiasi altra cosa - ma mi piacerebbe avere la certezza che questa non è una cosa che Apple si aspetta davvero di essere lì. C'è un elenco definitivo di cosa dovrebbe essere presente in /System sul mio sistema operativo (che è High Sierra, 10.13.4 (17E199))?

    
posta Ken Williams 25.06.2018 - 06:25
fonte

1 risposta

3

Un paio di idee:

  • Esamina il file manifest nell'ultimo programma di installazione di High Sierra o esegui un'installazione pulita sul disco di riserva e confrontalo con il tuo sistema
  • Controlla le date nelle varie directory

Un paio di commenti:

  • Quando eseguo un aggiornamento 10.x, da Sierra a High Sierra, eseguo sempre un'installazione pulita consistente nel backup della directory home, la riformattazione dell'unità, l'installazione del sistema operativo e la reinstallazione delle app e il ripristino dei file. Rimuove il crud dalle versioni precedenti.
  • Per qualsiasi lavoro di sviluppo (perl, python, java, script di shell, ecc.) sul mio Mac non uso mai le versioni fornite da Apple - utilizzo sempre qualcosa come MacPorts o installo e compilo da solo se necessario - in questo modo puoi gestisci le versioni che utilizzi ed evita la riprogettazione da parte di Apple di posizioni standard per le librerie, includi file, ecc. Fai un ulteriore passo avanti e usa docker e docker-compose se vuoi davvero evitare questo problema.
risposta data 25.06.2018 - 07:14
fonte

Leggi altre domande sui tag