¿Por qué debería mover todo a / opt?

16

Cada vez que leo los consejos para instalar un SDK, IDE, alguna extensión, etc., dice que debería descomprimirlos en la /optcarpeta. ¿Por qué necesito hacer eso?

Cuando estaba instalando Ubuntu, leí que debería configurar solo 10-20 GiB para el /sistema de archivos y el espacio restante establecido para /home. Entonces, ¿debo extender el espacio para la carpeta raíz o dejar todo en /home? ¿Hay alguna diferencia?

Praytic
fuente
1
Tienes dos preguntas aquí. Solo se permite una pregunta por publicación. Edite su publicación y, si lo desea, puede publicar otra pregunta sobre el tamaño o la carpeta de inicio
Sergiy Kolodyazhnyy

Respuestas:

20

Primero, comprenda que cualquier directorio que no sea explícitamente un punto de montaje para una partición separada (o un subdirectorio de dicho punto de montaje) se almacena en la /partición root ( ). Por lo tanto, si tiene root ( /) y /home, y ninguna otra partición, su /optdirectorio es simplemente un directorio en root ( /). Del mismo modo para /tmp, /sbiny cualquier otra cosa. Por lo tanto, la pregunta inicial se basa en la premisa falsa de que necesita particiones separadas para cada directorio que sale de root ( /), por lo que no se puede responder directamente.

En segundo lugar, /optse utiliza para software de terceros, que en el contexto de Ubuntu, significa software precompilado que no se distribuye a través de paquetes Debian. Ocasionalmente verá la documentación oficial del programa que hace referencia /opt, pero hay paquetes de Debian disponibles que eliminan estos archivos en otro lugar. En tales casos, debe ignorar la documentación oficial, o al menos ignorar sus referencias de ubicación de archivos, cuando utiliza el paquete Debian. Además, si tiene la opción de usar un paquete precompilado a través de un paquete tar o un paquete Debian, generalmente es mejor usar el paquete Debian. En general, el uso de /optes bastante raro en estos días. Si todavía cree que necesita colocar archivos /opt, puede hacer bien en nombrar el software, ya que la gente aquí puede saber si hay un paquete de Debian disponible para ese software.

Finalmente, combinando los dos puntos anteriores, es muy raro que las instalaciones de Ubuntu se dividan /opten una partición separada porque es raro que grandes cantidades de datos se almacenen allí. La mayoría del software de Ubuntu entra /usry otras ubicaciones. Alguna vez fue común dividirse /usren una partición separada, pero esa práctica es bastante rara hoy en día. Si necesita instalar una gran cantidad de software /opt, entonces crear una partición separada para él podríatiene sentido, pero en muchos casos esto realmente no será útil. Las particiones separadas tienen sentido si necesita manejar la seguridad de manera diferente, si diferentes características del sistema de archivos serán útiles, para compartir datos a través de múltiples instalaciones del sistema operativo en una configuración de arranque múltiple, y por otras razones. Es probable que la instalación de software de rutina no se beneficie de una partición separada; de hecho, la creación de una partición separada /optpodría causar problemas si el tamaño consumido por el software almacenado allí cambia, o si obtiene una estimación del tamaño incorrecta inicialmente.

Rod Smith
fuente
1
Re "el uso de / opt es bastante raro en estos días" ¿Estás seguro?
Pacerier
@Pacerier por alguna razón / opt parece volver, / usr / local fue sin duda más popular en Ubuntu hace unos años. En cualquier caso, en mi humilde opinión, / opt y / usr / local son equivalentes. Ver también linuxjournal.com/magazine/pointcounterpoint-opt-vs-usrlocal y tldp.org/LDP/Linux-Filesystem-Hierarchy/html/usr.html "En estos días, '/ usr / local' es ampliamente considerado como un buen lugar en el que mantener programas autocompilados o de terceros ".
Panther
8

¿Vos si?

El hecho es que no necesitas hacerlo. Usar /optes una convención. Recomendaría usarlo, pero no es estrictamente necesario.

De la jerarquía del sistema de archivos de Linux: Capítulo 1. Jerarquía del sistema de archivos de Linux :

1.13. /optar

Este directorio está reservado para todos los paquetes de software y complementos que no forman parte de la instalación predeterminada. Por ejemplo, los paquetes StarOffice, Kylix, Netscape Communicator y WordPerfect normalmente se encuentran aquí. Para cumplir con el FSSTND, todas las aplicaciones de terceros deben instalarse en este directorio. Cualquier paquete que se instale aquí debe ubicar sus archivos estáticos (es decir, fuentes adicionales, imágenes prediseñadas, archivos de base de datos) deben ubicar sus archivos estáticos en un árbol de directorio / opt / 'package' u / opt / 'provider' separado (similar a la forma en el que Windows instalará un nuevo software en su propio árbol de directorios C: \ Windows \ Archivos de programa \ "Nombre del programa"), donde "paquete" es un nombre que describe el paquete de software y "proveedor" es el nombre registrado de LANANA del proveedor.

Aunque la mayoría de las distribuciones no crean los directorios / opt / bin, / opt / doc, / opt / include, / opt / info, / opt / lib y / opt / man, están reservados para uso del administrador del sistema local. Los paquetes pueden proporcionar archivos "frontales" destinados a ser colocados en (al vincular o copiar) estos directorios reservados por el administrador del sistema, pero deben funcionar normalmente en ausencia de estos directorios reservados. Los programas a ser invocados por los usuarios se encuentran en el directorio / opt / 'package' / bin. Si el paquete incluye páginas de manual de UNIX, se encuentran en / opt / 'package' / man y se debe utilizar la misma subestructura que / usr / share / man. Los archivos de paquete que son variables deben instalarse en / var / opt. Los archivos de configuración específicos del host se instalan en / etc / opt.

Bajo ninguna circunstancia existen otros archivos de paquete fuera de las jerarquías / opt, / var / opt y / etc / opt, excepto aquellos archivos de paquete que deben residir en ubicaciones específicas dentro del árbol del sistema de archivos para funcionar correctamente. Por ejemplo, los archivos de bloqueo del dispositivo en / var / lock y los dispositivos en / dev. Las distribuciones pueden instalar software en / opt, pero no deben modificar o eliminar el software instalado por el administrador del sistema local sin el consentimiento del administrador del sistema local.

El uso de / opt para el software adicional es una práctica bien establecida en la comunidad UNIX. La interfaz binaria de la aplicación System V [AT&T 1990], basada en la definición de la interfaz System V (tercera edición) y el estándar de compatibilidad binaria Intel v. 2 (iBCS2) proporciona una estructura / opt muy similar a la que se define aquí.

En general, todos los datos necesarios para admitir un paquete en un sistema deben estar presentes en / opt / 'package', incluidos los archivos destinados a copiarse en / etc / opt / 'package' y / var / opt / 'package', así como directorios reservados en / opt. Las restricciones menores en las distribuciones que usan / opt son necesarias porque es posible que haya conflictos entre la distribución instalada y el software instalado localmente, especialmente en el caso de nombres de ruta fijos que se encuentran en algún software binario.

La estructura de los directorios a continuación / opt / 'proveedor' se deja al empaquetador del software, aunque se recomienda que los paquetes se instalen en / opt / 'proveedor' / 'paquete' y sigan una estructura similar a las pautas para / opt / paquete. Una razón válida para divergir de esta estructura es para los paquetes de soporte que pueden tener archivos instalados en / opt / 'provider' / lib o / opt / 'provider' / bin.

Torrien
fuente
Esto es extraño, porque la mayoría de las personas recomiendan dividir un espacio pequeño en el directorio raíz y pensé que no se cambiará mucho. ¿Parece que necesito recordar esos consejos para seguir las convenciones?
Praytic
2
@Praytic No realmente. En el pasado /opt, a menudo era un disco separado. Se usaría para instalar software propietario, que a menudo tenía enormes requisitos de espacio en disco debido a la agrupación de todas las bibliotecas requeridas y otros recursos. En los tiempos modernos, las unidades son tan grandes que es factible y más fácil usar una sola raíz en una sola unidad.
Bain
4

/optse usa para aplicaciones externas (a veces propietarias) que no se consideran parte de la distribución de Linux. Estas aplicaciones pueden tener rutas codificadas y, por lo tanto, solo se ejecutarán correctamente cuando se instalen /opt, pero si no hay rutas codificadas, entonces podría instalarlas en cualquier ruta. Se supone que un programa instalado /optestá autocontenido.

La razón principal para usar /optes proporcionar una ruta estándar común donde se pueda instalar software externo sin interferir con el resto del sistema instalado. /optno aparece en el compilador estándar o en las rutas de enlace ( gcc -print-search-dirso /etc/ld.so.confetc.), por lo que los encabezados y bibliotecas instalados allí están algo aislados del sistema principal y no deberían interferir con los programas ya instalados.

El uso de /optestá especificado por el Estándar de jerarquía del sistema de archivos : / opt , que señala que /optoriginalmente provino de Unix.

/ opt: paquetes de software de aplicación complementarios

Propósito

/ opt está reservado para la instalación de paquetes de software de aplicación complementarios.

Un paquete que se instalará en / opt debe ubicar sus archivos estáticos en un árbol de directorios / opt / <package> u / opt / <provider>, donde <package> es un nombre que describe el paquete de software y <provider> es el nombre registrado de LANANA del proveedor.

Requisitos

Los directorios / opt / bin, / opt / doc, / opt / include, / opt / info, / opt / lib y / opt / man están reservados para uso del administrador del sistema local. Los paquetes pueden proporcionar archivos "frontales" destinados a ser colocados en (al vincular o copiar) estos directorios reservados por el administrador del sistema local, pero deben funcionar normalmente en ausencia de estos directorios reservados.

Los programas a ser invocados por los usuarios deben estar ubicados en el directorio / opt / <package> / bin o bajo la jerarquía / opt / <provider>. Si el paquete incluye páginas de manual de UNIX, deben ubicarse en / opt / <package> / share / man o bajo la jerarquía / opt / <provider>, y debe usarse la misma subestructura que / usr / share / man.

Los archivos de paquete que son variables (cambio en el funcionamiento normal) deben instalarse en / var / opt. Consulte la sección sobre / var / opt para obtener más información.

Los archivos de configuración específicos del host deben instalarse en / etc / opt. Vea la sección sobre / etc para más información.

No pueden existir otros archivos de paquete fuera de las jerarquías / opt, / var / opt y / etc / opt, excepto aquellos archivos de paquete que deben residir en ubicaciones específicas dentro del árbol del sistema de archivos para funcionar correctamente. Por ejemplo, los archivos de bloqueo del dispositivo deben colocarse en / var / lock y los dispositivos deben ubicarse en / dev.

Las distribuciones pueden instalar software en / opt, pero no deben modificar o eliminar el software instalado por el administrador del sistema local sin el consentimiento del administrador del sistema local.

Razón fundamental

El uso de / opt para el software adicional es una práctica bien establecida en la comunidad UNIX. La interfaz binaria de la aplicación System V [AT&T 1990], basada en la definición de la interfaz System V (tercera edición), proporciona una estructura / opt muy similar a la que se define aquí.

El Estándar de compatibilidad binaria Intel v. 2 (iBCS2) también proporciona una estructura similar para / opt.

En general, todos los datos necesarios para admitir un paquete en un sistema deben estar presentes en / opt / <package>, incluidos los archivos destinados a copiarse en / etc / opt / <package> y / var / opt / <package>, así como directorios reservados en / opt.

Las restricciones menores sobre las distribuciones que usan / opt son necesarias porque son posibles conflictos entre el software instalado por distribución y el instalado localmente, especialmente en el caso de nombres de ruta fijos que se encuentran en algún software binario.

La estructura de los directorios a continuación / opt / <provider> se deja al empaquetador del software, aunque se recomienda que los paquetes se instalen en / opt / <provider> / <package> y sigan una estructura similar a las pautas para / opt / paquete. Una razón válida para divergir de esta estructura es para los paquetes de soporte que pueden tener archivos instalados en / opt / <provider> / lib u / opt / <provider> / bin.

baño
fuente
3

No tiene nada de sagrado /opt, es una práctica común colocar software precompilado que debería ser accesible para todos los usuarios de un sistema en este directorio. Si usted es el único usuario del sistema, no hay nada de malo en extraerlo en su directorio de inicio. E incluso si hay varios usuarios en el sistema que necesitan acceso a este software pero desea utilizar el espacio en su /homepartición, no hay nada de malo en crear un /home/softwarenamedirectorio de acceso público y extraer su software allí (la única advertencia es si sucede tener un usuario nombrado softwarename, no podrá usarlo en el directorio de inicio del usuario).

fkraiem
fuente
2

Las respuestas detalladas son muy buenas, pero (aparte del software que puede tener rutas absolutas codificadas, no es la mejor práctica de programación), el punto principal es que el software que no es de sistema / no distribución no debe almacenarse mezclado con el archivos regulares del sistema.

Poner cosas /opto /usr/localmantenerlas limpias y más seguras.

En particular, su ruta de búsqueda de software ($ PATH) determina el orden en el que se buscan las ubicaciones cuando busca un programa con un nombre particular para ejecutar. Por lo general, los lugares como /opty /usr/localestán al final de la lista.

Si instala un paquete que tiene un programa nombrado cp, el orden de búsqueda predeterminado que viene con su distribución encontrará el normal porque el directorio en el que se almacena se busca antes de lugares como /opt.

Si no funcionó de esa manera, quién sabe qué podría romper o abrir un agujero de seguridad si un programa llamado cpque hace algo más se ejecuta cuando cree que solo está tratando de copiar algunos archivos.

Si sucede algo como esto, puede pasar un tiempo antes de que alguien piense en ejecutar un comando como type cp(que podría no ser suficiente para mostrar que algo está mal) para descubrir que lo que se está ejecutando no es lo que usted piensa que es. Hasta ese momento, estás estancado en "¡Todo es exactamente como debería ser, aparte del pequeño detalle de que no funciona!"

Básicamente, ayuda a evitar que sucedan cosas inesperadas y también evita situaciones en las que las actualizaciones del sistema pueden eliminar o reemplazar algunos o todos sus paquetes instalados "personalizados". O, al revés, algunos programas "personalizados" pueden sobrescribir los programas suministrados por el sistema en los que pueden confiar muchos otros programas o scripts.

Desde un punto de vista administrativo, la combinación de programas / archivos "sistema" y "opcionales" en las mismas ubicaciones coloca su sistema en un estado "indefinido" o al menos "ambiguo".

Si tiene un problema con su sistema o programa y necesita ayuda, una de las primeras preguntas que se le hace es "¿Qué cambió?" y "¿Podemos desactivar temporalmente algunos de todos esos cambios para saber que estamos viendo el problema real y no solo un síntoma de otra cosa".

Con ubicaciones separadas, estos cambios se pueden identificar rápidamente y todo lo que tiene que hacer (al menos para los propios programas) es eliminar temporalmente sus directorios de la ruta.

Joe
fuente