Ubicaciones de bibliotecas Perl y Protección de integridad del sistema

2

Mi sistema perl parece tener un montón de cruft de instalaciones anteriores:

% 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
    .

Entre las cosas en /System/Library/Perl/Extras/5.18/darwin-thread-multi-2level hay una versión antigua de Moose.pm que no funciona, así que quiero deshacerme de ella:

% 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

Sin embargo, no puedo:

% 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

Estoy adivinando de que en mis diversas actualizaciones de SO a lo largo de los años, Apple ha movido algunos de mis módulos instalados por el usuario a este directorio /System/Library/Perl/Extras , pero luego lo ha protegido con la Protección de integridad del sistema, así que ahora no puedo deshacerme de él (fácilmente). ¿Eso suena probable?

Si es así, ¿cómo diablos llegaron estas cosas? De acuerdo con ¿Qué es la función "sin raíz" en El Capitán? , ¿en serio? , cualquier basura adicional en /System que Apple no deseaba debería haberse movido a /Library/SystemMigration/History/Migration-(some UUID)/QuarantineRoot , ¿verdad? Nunca he deshabilitado SIP en esta máquina.

Entonces, ¿cuál es la mejor manera de lidiar con esto? Puedo desactivar temporalmente el SIP y eliminar /System/Library/Perl/Extras/5.18 o lo que sea, pero me gustaría tener la seguridad de que esto no es algo que Apple realmente espera que esté allí. ¿Hay una lista definitiva de lo que debería estar presente en /System en mi sistema operativo (que es High Sierra, 10.13.4 (17E199))?

    
pregunta Ken Williams 25.06.2018 - 06:25

1 respuesta

3

Un par de ideas:

  • Examine el manifiesto en el último instalador de High Sierra o realice una instalación limpia en el disco de repuesto y compárelo con su sistema
  • Verifique las fechas en los diversos directorios

Un par de comentarios:

  • Cuando hago una actualización 10.x, es decir, de Sierra a High Sierra, siempre hago una instalación limpia que consiste en hacer una copia de seguridad de mi directorio de inicio, reformatear la unidad, luego instalar el sistema operativo y reinstalar aplicaciones y restaurar mis archivos. Elimina la suciedad de las versiones anteriores.
  • Para cualquier trabajo de desarrollo (perl, python, java, shell scripts, etc.) en mi Mac, nunca uso las versiones suministradas por Apple, siempre uso algo como MacPorts o instalo y compilo el mío si es necesario, de esa manera puede administre las versiones que usa y también evite el rediseño de Apple de las ubicaciones estándar para bibliotecas, incluya archivos, etc. Vaya un paso más allá y use la ventana acoplable y la ventana acoplable si realmente desea evitar este problema.
respondido por el tunecrew 25.06.2018 - 07:14

Lea otras preguntas en las etiquetas