¿Cómo puedo instalar un paquete sin acceso root?

126

No tengo acceso de root en esta máquina.

Me gustaría saber si hay una manera de descargar paquetes de Ubuntu e instalarlos como no root.

Probablemente en mi ~/bino ~/usr/shareo algo por el estilo? Funcionaría eso?

Weboide
fuente
1
Con suerte, lo apoyarán pronto.
Domi
44
Podría usar aplicaciones portátiles para Linux: sin instalación, sin necesidad de root. Encuéntralo en appimage.org . Incluso a Linus Torvalds le gusta. Eso es extraño, porque a Linus nunca le gusta nada.
ipse lute
Sugiero probar fakechroot .
Robert Pollak
Una combinación de dpk -xy mvfuncionó para mí. O, si incluso dpkno está disponible, ary la tubería / combinación con tarfuncionó para mí en sistemas muy restringidos, vea aquí
iolsmit
Relacionado con Unix y Linux : Gerentes de paquetes no raíz
Eliah Kagan,

Respuestas:

107

Apt no lo admite directamente, pero hay formas de hacerlo.

Una es usar schrootpara crear un chroot no root. Este es un proceso algo complicado , pero uno debería poder encontrar ayuda de la comunidad para muchos desarrolladores que configuran entornos chroot para compilar código.

La segunda forma que conozco es instalar desde un paquete .deb. Puede descargar esto desde un sitio web o si está en los repositorios de Ubuntu puede descargarlo.

apt-get download package

Reemplazar packagecon el nombre del paquete

Una vez que tenga su archivo deb llame dpkgdirectamente desde la línea de comando. El siguiente ejemplo instalará package.deb en su directorio de inicio.

dpkg -i package.deb --force-not-root --root=$HOME 

La desventaja de usar dpkg como este es que los mensajes de error probablemente sean crípticos; dpkg no resuelve automáticamente las dependencias ni crea la estructura de directorios que espera.

Finalmente, puede usar el apt-get sourcecomando para obtener el origen del paquete y configurarlo para que se instale localmente. Por lo general, esto se parece a:

apt-get source package
cd package
./configure --prefix=$HOME
make
make install

La desventaja de este enfoque es que necesita el entorno de desarrollo disponible para que este enfoque funcione, y puede encontrarse compilando docenas de paquetes para resolver todas las dependencias.

EDITAR:

Como dpkg -ino funciona (ver comentarios), sugiero esta alternativa:

dpkg -x package.deb dir

Esto extraerá el paquete .deb al directorio. Luego puede exportar la RUTA donde está el binario. Siempre que todas las dependencias del binario estén instaladas, debería ejecutarse normalmente.

jbowtie
fuente
1
Si tiene acceso de root pero simplemente no desea instalar un paquete en particular a nivel mundial, puede usar sudo apt-get build-dep packagepara instalar todo lo necesario para construir un paquete (después de obtener su fuente apt-get source).
Vladimir Panteleev
19
Esta respuesta fue escrita en 2010. ¿Ha habido cambios en cómo se hace esto desde entonces?
becko
36
Incluso con --force-not-root, obtengo "dpkg: error: la operación solicitada requiere privilegio de superusuario"
Clément
10
La gente, --force-not-root --root=$HOMEo variaciones de los mismos no funcionarán. Los paquetes binarios de Debian no están diseñados para instalarse en el directorio de inicio, punto. O, para decirlo de otra manera,. "El siguiente ejemplo instalará package.deb en su directorio de inicio". No, no lo hará.
Faheem Mitha
1
Lamentablemente esto no funcionará. Lo intenté--force-not-root --root=/your/custom/path
Viet
16

Supongo que quieres instalar jedit . Primero tienes que encontrar el paquete y descargarlo. Solo tomo el archivo deb de algún espejo y abro una consola / terminal:

  1. mkdir /tmp/jedit && cd /tmp/jedit- Crea un nuevo directorio tmpy cambia en él.
  2. wget http://mirrors.kernel.org/ubuntu/pool/universe/j/jedit/jedit_4.3.1.dfsg-0ubuntu1_all.deb - Descargar paquete
  3. ar x jedit_4.3.1.dfsg-0ubuntu1_all.debo, fácil de escribir, ar x *.debesto extrae el contenido del archivo
  4. tar xvzf data.tar.gz- el archivo data.tar.gztiene todo lo que necesita para ejecutar el software
  5. usr/bin/jedit abre el editor
  6. hecho :-)

Puede mover los archivos a algún punto en su directorio de inicio y ejecutarlos desde allí.

qbi
fuente
11
Tenga en cuenta que los scripts previos y posteriores a la instalación no se ejecutan; También deberá resolver cualquier dependencia o ruta usted mismo. Pero en una instalación predeterminada, esto es suficiente para muchas aplicaciones de escritorio.
jbowtie
también puede descargar el paquete sin buscarlo, solo haga apt-get download (vea otra respuesta)
lib
Creo que tu enlace está roto.
Winnemucca
9

Escribí un programa llamado 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.

Por ejemplo, después de instalar JuJu para instalar jedit:

$>juju -f
(juju)$> pacman -S jedit
(juju)> jedit
usuario967489
fuente
Esto funcionará bien en Ubuntu, ¿verdad?
Seth
Sí, si la versión del núcleo de Linux de ubuntu es mayor o igual a 2.6.32, funcionará.
user967489
2
Al principio pensé que estabas hablando de esto . La segunda j mayúscula marca la diferencia.
kon psych
1
La pregunta era si podríamos instalar el paquete de Ubuntu. Con junest, solo podremos instalar el paquete ArchLinux y NO un paquete Ubuntu. Por ejemplo, si el mismo paquete no está disponible para ArchLinux, entonces esto no ayudará. Dicho eso, gracias por Junest.
Kiran