Introducción a las convenciones de directorio del sistema OSX


4

Estoy usando Mac desde hace 8 años y tengo experiencia en informática. Sé que al instalar software, OSX no es tan desagradable como Windows. Es decir, en lugar de tratar con bibliotecas dll y cosas que están instaladas en algún lugar del sistema, las aplicaciones en osx generalmente, por convención, solo deberían usar carpetas como "Soporte de aplicaciones" y "Preferencias" para sus cosas.

Dado que hay aplicaciones que no siguen las convenciones que me gustaría saber, qué estructura es alentada por el sistema y qué no. Entonces puedo saber, por ejemplo, qué carpetas ~/Library/puedo eliminar sin sacrificar la estabilidad del sistema.

Por ejemplo, en mi carpeta user-lib tenía cosas como "MonoAndroid" de las cuales sé de dónde provienen (xamarin) y de las cuales sé si quiero eliminarlas, porque ya no estoy usando la aplicación asociada con eso. .

Supongo que los directorios de usuarios no son un gran problema para eliminar cosas, pero siempre existe esta aplicación, que mantiene los archivos también en directorios superiores (como dijo xamarin).

Además, quiero limpiar el mac de un amigo, y como no estaba usando eso, me gustaría tener una intuición de "qué pertenece dónde" y qué no.

¿Hay una guía o algo? ¿O una buena documentación sobre dónde deben ir las cosas y qué carpetas no se deben tocar? Busqué eso, pero realmente no encontré nada bueno. Hasta ahora he basado mi conocimiento sobre osx en conocimiento sobre Unix y medio conocimiento del uso.

Respuestas:


1

El conocimiento de Unix ayudará mucho siempre que no siga Linux u otras convenciones exactamente (Linux es como Unix, mientras que OSX es un Unix basado en BSD)

Apple proporciona alguna descripción en esta documentación para desarrolladores (el enlace no parece ser exacto, pero busca la parte OSX no IOS). Hay varias secciones que son demasiado largas para enumerarlas aquí.

Uno es para directorios específicos de UNIX, pero me sorprende ver "/ usr: contiene binarios de línea de comandos no esenciales, bibliotecas, archivos de encabezado y otros datos". Puede que no sean esenciales, pero eliminar esto se romperá mucho: solo debe cambiar las cosas en / usr / local

Otro es The Library Directory Stores Archivos específicos de la aplicación Las secciones principales son

  • Soporte de aplicaciones: archivos de datos de aplicaciones, excepto los asociados con los documentos del usuario
  • Cachés: archivos de soporte específicos de la aplicación que su aplicación puede volver a crear fácilmente.
  • Frameworks: marcos que deben compartir varias aplicaciones
  • Preferencias: los archivos de preferencias específicos de la aplicación utilizan la clase NSUserDefaults o la API CFPreferences

Trate esto como una guía ya que muchas aplicaciones (¿La mayoría?) No siguen este 100%.

En el pasado, Mono ha colocado las cosas en el lugar equivocado, por ejemplo, en / usr / bin. Otras aplicaciones usan Preferencias no a través de la API. Otras aplicaciones usan directorios en ~ / Library, por ejemplo, Mail.app


¡Muchas gracias por esta respuesta concisa y útil!
ruffy

Me sorprendió (¿no?) Ver la frase "Todo el contenido de este directorio [Soporte de aplicaciones] debe colocarse en un subdirectorio personalizado cuyo nombre sea el del identificador de paquete de su aplicación o su empresa". pero casi ninguna aplicación sigue esta regla. Al menos ahora sé :-)
qwerty_so

@ThomasKilian Creo que ese comentario no estaba en versiones anteriores, pero era lo más obvio desde el principio, pero también después de haber leído las pautas de la aplicación de Windows, muchos (¿la mayoría?) Desarrolladores no parecen poder leerlo
Mark

Cuando llegué a ese punto ahora, pensé que era obvio que uno debería usar el identificador de paquete y con sandboxing esta convención debería haber convertido en una restricción difícil. Pero sé que Windoze es aún peor ;-)
qwerty_so
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.