¿Cómo instalo una aplicación por archivo DEB para un solo usuario?

33

Al instalar aplicaciones a través del centro de software o mediante un archivo DEB, generalmente se instalarán en todo el sistema para todos los usuarios.

¿Hay alguna manera de instalar una aplicación solo para un usuario?

Takkat
fuente

Respuestas:

5

Dependiendo de lo que desee lograr, puede haber diferentes formas de hacer que esto funcione (o al menos dar una apariencia de la funcionalidad que desea).

La instalación de software de muchas maneras se reduce a hacer que los recursos estén disponibles o permitir el acceso a cosas que ya están presentes en el sistema.

Ya sea que esté hablando de otorgar acceso a impresoras o permitir que un usuario ejecute programas en un determinado directorio, hay formas de lograr esto, y aunque pueden ser nativos de Ubuntu, este tipo de soluciones generalmente (por supuesto) van a se agregará después del hecho de una instalación .deb.

Aquí hay dos clases generales de control posterior a la instalación que se pueden agregar. Tenga en cuenta que, dado el entorno adecuado, por ejemplo, cuando existe una política de grupo estrictamente controlada, esto podría ser más fácil una vez que tenga el sistema básico. Este tipo de permiso incluso puede estar vinculado a LDAP o un sistema similar que puede proporcionar autenticación y autorización por usuario o grupo.

Control de visibilidad
He tenido una situación algo similar, pero en mi caso, los usuarios no eran (todavía) muy sofisticados (todos tenían menos de 7 años). Para mí, simplemente ocultar menús de Gnome y / o eliminar lanzadores de escritorio funcionó.

Eliminar el bit ejecutable de los directorios elimina la capacidad de los procesos para buscarlos o recorrerlos. Efectivamente puede hacerlos invisibles, y en cuanto al usuario, hacerlos no disponibles. Si tiene una política de sistema predeterminada que crea menús basados ​​en el acceso a archivos, por ejemplo, puede obtener este tipo de solución cosmética y luego hacer que funcione para instalaciones posteriores con poco esfuerzo adicional.


Control de ejecución El control del recurso se puede realizar a través de los permisos de Unix, los perfiles de apparmor, los permisos de SELinux, etc. Puede haber otros niveles de filtrado de control que pueden entrar en juego dependiendo de la aplicación. En ausencia de soluciones más específicas, es posible que tenga que escribir contenedores alrededor de ciertos programas para controlar el acceso de usuarios o procesos.

belacqua
fuente
3
+1 para separar la visibilidad y el aspecto del control de ejecución
Takkat
10

Bueno dpkg, no te ayudará, ya que este no es su objetivo de diseño. Quiere ser un censo exclusivo de paquetes instalados en un sistema.

Lo único que me viene a la mente es extraer el paquete e intentar colocar los archivos manualmente en el directorio de inicio.

Sin embargo, esto solo funcionará para algunas cosas. Muchos paquetes se dividen en fragmentos (ejecutables o scripts en /usr/bin, bibliotecas en /liby otro atuendo /usr/share, etc.) y estas ubicaciones están codificadas por los scripts de compilación. Por lo tanto, si intentas introducir algo como esto ~, se romperá. Podrías pasar horas relajando las dependencias, pero podrías estar haciendo algo útil con tu tiempo, como encontrar la cura para el cáncer o absorber algo de la belleza del mundo.

Sería mucho mejor simplemente obtener una versión no empaquetada de quien escriba el software. Casi todo el software gratuito está disponible en alguna forma de archivo comprimido como fuente, así que agárralo y solo compílalo. No haces el make installpaso. Su aplicación está construida, simplemente colóquela donde desee.

Oli
fuente
1
En cuanto a la última opción: me parece que puede ayudar en algunos casos (programas simples), pero generalmente el paquete, por ejemplo, instala scripts de inicio /etc/init, busca archivos de configuración /etco tiene algunas otras rutas codificadas.
organizar el
2
Los proyectos basados ​​en autoconf pueden permitir establecer un directorio de instalación personalizado a través de ./configure --prefix=$HOME/local.
Ingo Karkat
6

No sé demasiado acerca de este tema, pero parece de las otras respuestas que usted puede ser capaz de instalar un paquete a otro directorio en lugar de /con dpkg, utilizando el --rootparámetro, y luego hacer una chroota la dir el que el paquete era " instalado "en (que por supuesto puede ser un directorio en el directorio de inicio del usuario).

Para instalar un paquete para un usuario que no sea root, podría ser posible utilizar el proceso anterior con en fakechrootlugar de chroot.

Exención de responsabilidad : No intente esto, y no tienen mucha experiencia en el momento de escribir con dpkgo chroot, pero de lo que no sé acerca de estas herramientas, este proceso solo puede trabajar.

Enlaces que tienen información que puede ser útil para personas que desean lograr el efecto chrootsin rootcapacidades:

Actualizar

Ahora he hecho un poco con las cosas que tocan este tema, y ​​descubrí algo más ...

Fragmentos (bloques de construcción del entorno local):

  • Fakechroot - emulachroot(1)
  • Debootstrap : crea otra jerarquía del sistema de archivos de Debian dentro de un directorio
  • Fakeroot-NG / fakeroot : puede pretender ser la raíz de algunas cosas
  • EmDebian : una variante de Debian que usa menos espacio y se usa a menudo en entornos chroot
  • binfmt_misc - Puede ejecutar archivos, usando sus intérpretes, como si fueran binarios nativos; útil junto con qemu-user para trabajar con binarios (o en un chroot (falso)) de arquitecturas extranjeras ( scripts / qemu-binfmt-conf.sh que viene con el código fuente QEMU automatiza esto)
  • Espacio de usuario de Qemu : puede ejecutar binarios de otras arquitecturas; se puede usar con algunas de estas herramientas cuando no son compatibles con algunas arquitecturas de procesador
  • LwIP : una pila de red TCP / IP que se puede ejecutar desde el espacio del usuario

Completo (proveedores de entorno local completo):

  • Modo de usuario Linux : ejecuta otro sistema Linux como un proceso / programa regular
  • Qemu : ejecuta una computadora virtual completa
  • PROOT - Proporciona funcionalidades de chroot(1), mount --bind, binfmt_misc, y funcionando binarios de otras arquitecturas usando qemu-espacio de usuario
  • Espacios de nombres de Linux : permite tener una raíz completa dentro de un entorno local, cuando se utilizan espacios de nombres de usuario , una característica que está disponible en las versiones 3.8 y posteriores del kernel de Linux.

Resumen : al emular o tener privilegios de root localmente, se pueden instalar paquetes DEB para un entorno local.

Abbafei
fuente
3
No dude en volver a formatear su respuesta por completo si tiene información que contradice su información anterior (o si cree que agrega algo). En muchos casos, su respuesta será más clara si reformula en lugar de agregar secciones adicionales de "Edición" o "Actualización". Su información es interesante, pero las partes posiblemente más relevantes están atrapadas en la parte inferior.
belacqua
@jgbelacqua - reformateado, gracias por el consejo.
Abbafei
4

Probablemente pueda usar la --rootopción de dpkginstalar en otro directorio. Pero probablemente tenga problemas si la aplicación busca cosas en lugares fijos como /etc.

En resumen, no creo que haya una manera fácil.

Dariel Dato-on
fuente
2

Puede cambiar la propiedad del archivo ejecutable para que solo un usuario pueda ejecutarlo. Luego, si es necesario, puede eliminar la aplicación de los menús de otros usuarios.

organizar
fuente
1
Una motivación común para querer instalar una aplicación para un solo usuario es evitar la necesidad de usar privilegios administrativos para la instalación.
ændrük
@ ændrük Pero si ya está instalando desde un .deb, ¿no estamos asumiendo privilegios de administrador?
belacqua
@jgbelacqua Que yo sepa, sí, la instalación desde un .deb requiere privilegios de administrador. Pero, en términos más generales, instalar algo "solo para un usuario único" nunca debería requerir la elevación a los privilegios utilizados para la administración de todo el sistema. Por ejemplo, con frecuencia instalo programas solo para mí colocándolos en ~/bin. Hay una ambigüedad en esta pregunta sobre si Takkat quiere restringir el acceso / visibilidad de una aplicación multiusuario, o si desea instalar una aplicación para un solo usuario. Sus preguntas y arreglos usan la primera interpretación, y el resto asume la segunda.
ændrük
1

Dudoso.

Los deb son principalmente archivos que se extraen a la raíz de su sistema de archivos cuando se instalan (más algunas configuraciones). Si desea instalarlos solo para un usuario, necesitaría instalarlos de alguna manera en la carpeta / home / user. Incluso si lo hiciera, no funcionarían, ya que los binarios de la aplicación fe no aterrizarán en / usr / bin (o algo similar), y el sistema no los encontrará si intenta iniciarlos. Del mismo modo, las bibliotecas, etc. serían inútiles, ya que el sistema no sabría que hay algún lugar en / home. Puede probar el enfoque de fuerza bruta y ajustar la variable PATH para que apunte a donde extrajo los archivos del archivo deb, pero eso no solo sería MUY inseguro, pero puede causar problemas de compatibilidad (las entradas del menú de fe no funcionarían, ya que GNOME extiende los archivos .desktop para que estén en / usr / share / aplicaciones).

Además, si instaló un paquete solo para algunos usuarios, podría causar problemas de dependencia locos, si cualquier otro paquete instalado por el usuario entra en conflicto con otro que haya instalado solo para usted, y posiblemente aparezcan toneladas de otros problemas relacionados con la administración de paquetes.

Todos estos problemas hacen que sea extremadamente difícil administrar paquetes por separado para los usuarios, por lo que parece que no es posible instalarlos solo para un usuario, porque la idea detrás de .debs no lo permite.

Rafał Cieślak
fuente