De mi investigación, me parece notar que todos los administradores de paquetes insisten en ser utilizados como usuarios privilegiados y deben instalarse en ellos /
.
Por lo general, lo que me gusta hacer es crear una cuenta de usar y tirar, compilar algún software e instalar $HOME
para esa cuenta. Puedo probar una variedad de configuraciones y luego, cuando termine, simplemente destruya la cuenta.
Sin embargo, compilar software se vuelve tedioso.
Mi experiencia realmente se limita a yum
, pero no entiendo por qué no podría colocar un archivo de repositorio ~/etc/yum.repos.d
y hacer que instale todo en una cuenta doméstica.
¿Hay alguna razón por la cual los administradores de paquetes se deben utilizar como usuarios privilegiados para instalar software?
/bin
) o puede suponer que está instalado en el lugar especificado por --prefix. Mientras que el último puede ser evitado por esos proyectos, el primero requiere parches en el código fuente./
Esto suena como un requisito que podría estar justificado quizás hace 30 años, pero no ahora. ¿No es, por ejemplo, elenv
programa destinado a resolver este tipo de problemas? Si no, es fácil crear un esquema para configurar cualquier binario para buscar otros binarios en ubicaciones específicas./etc
o (según mi conocimiento)/usr/lib/<packagename>/
o/usr/libexec/<packagename>/
./usr/share
puede ser cambiado por las variables XDG que se han lanzado en algún momento de este siglo y no necesariamente se adoptan para programas más antiguos.Hay un proyecto de administrador de paquetes, Nix, con una idea fundamental interesante (un administrador de paquetes " funcional "), que también admite una operación por usuario:
UNA NOTA QUE QUIERO AGREGAR:
Nix
debe ser utilizable en un sistema tipo Unix de su elección (por ejemplo, una distribución de Linux).También hay una gran colección de paquetes asociados que se pueden instalar con el administrador de paquetes de Nix, Nixpkgs, creados para varias plataformas :
y una distribución asociada-- NixOS :
y un sistema de construcción "continuo" asociado: Hydra .
fuente
nix
yguix
. Como ahora estoy realmente usandonix
para mi trabajo, quiero saber si podría considerarguix
como otra implementación de la herramienta que necesito. ¿Puedo leer un resumen de las diferencias en alguna parte? Tal vez, ¿podría incluso escribir una respuesta con tal resumen aquí, anunciando una solución alternativa más?En primer lugar, se debe a dependencias. Algunos paquetes pueden no ser instalados por el usuario, como PolicyKit. Por lo tanto, requeriría una carga adicional para el empaquetador que dona su tiempo libre y, por lo general, la instalación del programa es tan fácil como escribir
sudo
(estación de usuario único) o administrador molesto.Hay opciones para instalar en $ HOME
./configure --prefix=$HOME/sandbox --enable-cool-feature && make all install
(o variaciones como jhbuild).fuente
Uso JuJu, que básicamente permite tener una distribución de Linux realmente pequeña (que contiene solo el administrador de paquetes) dentro de su directorio $ HOME / .juju.
Permite tener su sistema personalizado dentro del directorio de inicio accesible a través de proot y, por lo tanto, puede instalar cualquier paquete sin privilegios de root. Se ejecutará correctamente en todas las distribuciones principales de Linux, la única limitación es que JuJu puede ejecutarse en el núcleo de Linux con la versión mínima recomendada 2.6.32.
fuente
Otro con un modelo bastante diferente es 0install . Se basa en la idea de que realmente no instala paquetes, sino que simplemente los ejecuta desde un espacio de nombres global que descarga, compila si es necesario y almacena en caché el software que desea utilizar.
fuente
Si está bien compilando desde el origen y resolviendo dependencias usted mismo, principalmente desea que el administrador de paquetes maneje las operaciones de despliegue / despliegue / actualización, es posible que desee echar un vistazo a GNU Stow o al XStow algo mejorado . Con ellos, organiza la instalación en un directorio separado (generalmente debajo
$PREFIX/stow
) y luego almacena enlaces simbólicos al software desde su prefijo real. Esto facilita la eliminación del software por completo. Lo uso con éxito para administrar mi software personalizado instalado en mi universidad.fuente
Los principales administradores de paquetes de Linux ven el mundo como lo haría un administrador de sistemas ... donde la máquina es una sola entidad. Esto le permite obtener respuestas a preguntas como "qué erratas pendientes se aplican al sistema X" y "cómo difieren el sistema X y el sistema Y". Esto también le permite a yum tener "un historial" que se puede usar, tener versiones rpmdb y hacer cosas como "yum --security update", etc.
Hay algunos administradores de paquetes, como zero-install, que intentan ver el mundo como lo haría un usuario ... es decir. lo que las aplicaciones de hacer que tienen acceso.
Puede pensar que el último es un mejor modelo, pero IMNSHO hay una razón por la que no ha oído hablar de la instalación cero pero sí de yum.
fuente
Hay un nuevo chico en el bloque: " JuNest ( Jailed User NEST): la distribución basada en Arch Linux que se ejecuta en cualquier distribución de Linux sin acceso a la raíz". @ https://github.com/fsquillace/junest Advantage es que no introduce un nuevo tipo de formato de paquete, así que después de una instalación muy fácil (mínimo: aproximadamente 320M), el repositorio completo de Arch Linux (más de 13000 paquetes ATM) está a su alcance.
fuente
Las herramientas utilizadas por Slackware, específicamente
installpkg
, pueden. Desde la página del manual:Sin embargo, no conozco ninguna de las mejores interfaces que puedan hacer esto (por ejemplo
slapt-get
, hasta donde yo sé, no pueden hacer esto). Teóricamente, deberías poder usar aliasinstallpkg
parainstallpkg --root ~/Apps
, sin embargo, creo que la mayoría de las interfaces requieren que se ejecute root, lo que frustra el punto.fuente
Sugeriría http://linuxbrew.sh/
Básicamente es una bifurcación de brebaje para macOS y tiene binarios precompilados para su uso ...
Especialmente bueno para manejar versiones anteriores de gcc.
Si realmente desea instalar a mano, una guía útil es http://www.linuxfromscratch.org/
fuente
Yum necesita escribir en la base de datos, que es propia de root. Debido a esto, no puede usarlo como un usuario normal.
Puede intentar descomprimir archivos rpm (rpm2cpio package.rpm | cpio -idmv) dentro de un directorio de su elección.
Pero cuando ejecute su programa, deberá modificar LD_LIBRARY_PATH para cargar las bibliotecas dependientes. Además, esto no se encargará de ninguna dependencia.
Ejemplo:
Lo anterior no tiene ninguna biblioteca dependiente, de lo contrario, tendría que usar algo como:
fuente