Desinstalar programas en Linux

30

He estado usando Windows y Mac OS durante los últimos 5 años y ahora estoy considerando usar Linux a diario. Instalé Ubuntu en una máquina virtual y trato de entender cómo puedo usar Linux para mi trabajo diario (como programador / diseñador web js).

Perdón por la pregunta de los novatos, pero se me ocurre que a veces cuando instalo un programa make configy make installcambia mi sistema de manera que no es reversible fácilmente. En Windows, cuando instala un programa, puede desinstalarlo y, con suerte, si se reproduce según el libro, no quedarán rastros del programa en el sistema de archivos o en el registro, etc. En Mac OS simplemente elimine una aplicación como un archivo.

Pero en Linux hay apt-gety luego hay make. No entendía bien cómo puedo mantener mi instalación de Linux limpia y ordenada. Parece que cualquier instalación de una nueva aplicación puede dañar mi sistema. Pero entonces Linux tiene la reputación de ser muy robusto, por lo que debe haber algo que no entiendo acerca de cómo la instalación y desinstalación de aplicaciones afecta el sistema. ¿Alguien puede arrojar algo de luz sobre esto?


Actualización: al instalar una aplicación, sus archivos pueden extenderse en cualquier lugar realmente (los administradores de paquetes manejan parte del problema), pero hay un truco genial al respecto: use Docker para instalar aplicaciones y guárdelas en su caja de arena, especialmente si no va a Úselos con demasiada frecuencia. También es posible ejecutar aplicaciones GUI como Firefox por completo en un "sandbox" de Docker.

AlexStack
fuente
11
Como usuario simple, se supone que debes usar en apt-getlugar de makeinstalar software. make installse usa cuando necesita construir la última versión (posiblemente inestable) de un software a partir de fuentes, que aún no está disponible como paquete.
Dmitry Grigoryev
@DmitryGrigoryev El uso aptes más simple y proporciona un mejor tui que el uso apt-get.
Bakuriu
3
Cuando utilicé OS X, a menudo encontré que eliminar el *.apparchivo era insuficiente, ya que las instalaciones de aplicaciones a menudo ensuciaban otros lugares (por ejemplo, el directorio de la Biblioteca, de la memoria). Además, si construye manualmente desde la fuente en Ubuntu con make install, use checkinstallen su lugar para permitir una fácil eliminación.
Sparhawk
1
No uses el ./configure ; make ; make installcamino. Todo lo que necesitas es aprender la fabulosa herramienta fpm .
Deer Hunter
¿Cuál es la herramienta fpm?
AlexStack

Respuestas:

28

Una nueva instalación rara vez dañará su sistema (a menos que haga cosas raras como mezclar fuente y binario).

Si usa binarios precompilados en Ubuntu, puede eliminarlos y no tener que preocuparse por romper su sistema, porque un binario debe enumerar lo que necesita para ejecutarse y su administrador de paquetes enumerará qué programas dependen de ese programa para que los revise.

Cuando usa la fuente, debe tener más cuidado para no eliminar algo crítico (como glib). No hay advertencias ni nada más cuando desinstala de la fuente. Esto significa que puede romper completamente su máquina.

Si desea desinstalar usando apt-get, lo usará apt-get remove packagecomo se indicó anteriormente. Cualquier programa que dependa de ese paquete también se desinstalará y tendrás la oportunidad de revisarlo.

Si desea desinstalar, generalmente el proceso es make uninstall. No hay advertencia (como dije anteriormente).

make configno alterará su sistema, pero lo make installhará.

Como principiante, recomiendo usar apt-geto cualquier distribución que use para paquetes binarios. Mantiene las cosas agradables y organizadas y, a menos que realmente lo desee, no dañará su sistema.

Con suerte, eso aclara todo.

SailorCire
fuente
3
Para una desinstalación sin trazas, por supuesto, usará la --purgeopción conapt-get
Hagen von Eitzen
16

En teoría, make uninstalldebería eliminar lo make installagregado y su sistema no acumularía cruft. El problema, por supuesto, es que no todos los archivos MAKE se crean de la misma manera.

Algunos pueden omitir la uninstallregla, dejándote que descubras qué hizo la installregla. Peor aún, si la regla de instalación sobrescribió una biblioteca vinculada, la uninstallrutina tonta puede romper las dependencias de algún otro programa.

La mejor solución para las instalaciones de origen es utilizar un prefijo diferente al de los paquetes instalados por el administrador de paquetes del sistema. Apt instala archivos para /usr/usar la /usr/local/jerarquía para las instalaciones de origen. Eso hace que sea mucho más fácil hacer un seguimiento de qué archivos pertenecen a qué paquetes y desinstalaciones no dañarán el sistema.

./configure --prefix=/usr/localfunciona para muchos scripts de configuración. De lo contrario, puede editar Makefile manualmente. O simplemente copie los archivos manualmente.

Apt y otros gerentes de paquetes realizan un seguimiento de los archivos que han instalado y sus dependencias inversas para que sus funciones de desinstalación sean seguras de usar.

WhombicalWombat
fuente
15

Le recomendaría que utilice apt-get installpara instalar cualquier paquete en Linux y apt-get remove(nombre del paquete) o apt-get purge(nombre del paquete) que eliminará no solo el paquete principal que desea desinstalar sino todos los paquetes o dependencias asociados que se instalaron durante la instalación.

Ahora, para mantener su sistema más limpio, le recomiendo que use apt-get clean https://askubuntu.com/questions/144222/how-do-apt-get-clean-and-apt-get-clean-all-differ#144224 ( esta publicación es interesante sobre eso) que eliminará todos los archivos que se descargaron durante la instalación pero que ya no son necesarios.

Otro comando que sería útil si desea eliminar todas las dependencias que están instaladas en su sistema pero no se eliminaron cuando lo desinstaló apt-get autoremove.

Si instala un paquete a través de make and make install, será responsable de desinstalarlo usted mismo (tal vez haya un archivo README incluido en el paquete descargado que le indica cómo hacerlo), así como de intentar desinstalar todas las dependencias asociadas con él. . Es por eso que siempre se recomienda instalar paquetes en Linux que ofrece el administrador de paquetes de la distribución, si lo hace de esta manera, puede estar seguro de que su paquete ha sido probado lo suficiente como para funcionar con la distribución (sabor de Linux) que está utilizando y es muy poco probable que rompa su sistema. Además, puede estar seguro de que su paquete se actualizará cuando sea necesario, mientras que si lo instala usted mismo, usted es el responsable de hacer todo esto.

Espero que esto ayude :)

VaTo
fuente
11

La forma normal de administrar aplicaciones instaladas en Linux es con un administrador de paquetes. La elección de los administradores de paquetes es una de las principales cosas que diferencian las distribuciones. Ubuntu, como Debian (en el que se basa), usa dpkg y APT ; la mayoría de las veces, solo necesita interactuar con una de las interfaces para APT, como apt-get(línea de comando), aptitude (línea de comando o modo de texto) o Synaptic (GUI).

Un administrador de paquetes realiza un seguimiento de los archivos que pertenecen a cada programa instalado. Al igual que en Windows, los programas pueden ejecutar código arbitrario como parte de su procedimiento de instalación o desinstalación, pero generalmente se comportan bien y no rompen otros programas. Además, el código de (des) instalación lo escribe el responsable del paquete, no el autor principal (para los paquetes en la distribución principal). A diferencia de Windows, hay una interfaz unificada para la instalación, actualización y desinstalación: el administrador de paquetes. No necesita buscar el desinstalador (si lo hay), simplemente haga clic en el icono "desinstalar" en el administrador de paquetes gráfico o ejecute apt-get remove PACKAGENAME.

Si necesita un software "exótico", es posible que deba instalarlo manualmente, ya sea desempacando un archivo o compilando desde la fuente. Los instaladores que vienen en forma de un programa ejecutable son raros en el mundo de Linux. Correr make installtiende a extenderse cada programa en varios directorios ( /usr/local/bin, /usr/local/man, /usr/local/lib, etc.). Para mantener las cosas ordenadas, recomiendo usar un "administrador de paquetes de pobre", como guardar . Con stow, cada paquete se instala en su propio directorio, y la stowutilidad se encarga de crear enlaces simbólicos para que los comandos instalados por el paquete estén en la ruta de búsqueda de comandos, etc. Consulte Seguimiento de programas para obtener más detalles.

Gilles 'SO- deja de ser malvado'
fuente
este "software exótico" puede ser escrito por cualquier persona ¿verdad? ¿Cómo este "software exótico" está oficialmente disponible en las distribuciones? ¿Alguien revisa su código fuente línea por línea? ¿Cómo decide Ubuntu, por ejemplo, incluir un software en su comando APT-GET e ignorar otro?
AlexStack
1
@AlexStack La mayoría de las distribuciones son hechas por voluntarios. Ubuntu está patrocinado por Canonical, que paga a algunas personas, pero los voluntarios siguen haciendo la mayor parte del mantenimiento del paquete. Entonces, la respuesta más precisa es que Ubuntu incluye cualquier software que un voluntario haya decidido incluir. Más precisamente, la mayoría del software en Ubuntu proviene de Debian, por lo que un desarrollador de Debian tuvo que decidir en qué paquete valía la pena trabajar, y el software debe cumplir con la política (licencia aceptable, no demasiado defectuosa).
Gilles 'SO- deja de ser malvado'
@AlexStack no hay garantía de que alguien haya revisado una pieza particular de software línea por línea, incluso si ese software está disponible en los repositorios de Ubuntu (es decir, a través de una instalación predeterminada apt-geto similar). Pero solo ponen programas razonablemente populares en los repositorios, aquellos que tienen suficientes usuarios para estar seguros de que básicamente hacen lo que se supone que deben hacer.
David Z
8

Debe intentar usar su administrador de paquetes (apt-get, aptitude, synaptic o aptdcon, software-center, mintinstall, ..) si es posible. El uso de una tarea make para la instalación es muy básico, no se garantiza que tenga una uninstallcontraparte y no se garantiza que juegue bien con el resto del sistema (es solo un script vinculado al sistema de compilación de make, y a diferencia de un paquete revisado, las tareas make pueden contener cualquier código ejecutable, potencialmente malware).

Si no encuentra una versión empaquetada del software que necesita, puede encontrar checkinstall( checkinstall make install) útil.

PSkocik
fuente
3

No soy un experto, y no sé mucho sobre la instalación de software desde el origen, pero con el uso apt-get, puede eliminar el software instalado con apt-get remove package-name. Para eliminar también todos los archivos de configuración, use apt-get purge package-name. La forma más segura de mantener ordenada su instalación de Linux es usar solo paquetes en los repositorios oficiales. Cuando se necesita un paquete que no está en los repositorios oficiales, a menudo se puede encontrar (ya que está usando Ubuntu) en un PPA .

Gabe
fuente
apt-getno sirve de nada al OP que ha estado usando configureymake install
roaima
3

Como dicen las otras respuestas, hoy en día es típico instalar la gran mayoría de su software utilizando el administrador de paquetes de su distribución de elección. ¡Esto es tan conveniente que probablemente lo perderá cuando regrese a Windows! En cierto sentido, los diversos "mercados" y "tiendas" van en esa dirección también para sistemas operativos comerciales.

Habiendo dicho eso, recuerdo que cuando comencé a aprender sobre Linux me sorprendió la forma en que normalmente se instala el software. Mientras que en Windows todos los archivos van en un solo directorio c:\Programs, la forma tradicional de "unix" es dispersarlos en "ubicaciones estándar" (los detalles no están tan estandarizados, [eche un vistazo a LSB para más información] [1] ), como los /usr/local/binejecutables, la /usr/local/docdocumentación, etc.

En cierto sentido, Windows "no sabe" dónde están sus ejecutables. Sabe que están "en alguna parte debajo c:\Program Files", pero no mucho más. Escanear todos esos directorios para encontrarlos es, o solía ser, prohibitivamente costoso. Por lo tanto, un enlace al ejecutable se colocaría explícitamente en una ubicación conocida (el menú de inicio), y eso es lo que usaría para iniciarlo.

En Unix / Linux, su shell, y la mayoría de los otros programas, buscarán automáticamente ejecutables u otros recursos en un conjunto conocido de ubicaciones. Por eso, simplemente copiando sus archivos en sus directorios apropiados, los "verá" automáticamente, sin tener que "registrarlos" en ningún lugar para que los usuarios los conozcan.

Ambos mecanismos tienen sus pros y sus contras, pero encontrará que el enfoque de Unix suele ser más flexible.

Tenga en cuenta que hay muchas excepciones y detalles que hacen que la imagen no sea tan clara como la describí, pero creo que este tipo de introducción puede ser útil para que los novatos al menos comprendan la lógica básica detrás de ella.

UncleZeiv
fuente
gracias @unclezeif. Ese problema con los "archivos dispersos por todo el lugar" realmente me está molestando porque no lo entiendo. Usted dijo que el enfoque de Unix suele ser más flexible. ¿Puedes elaborar por favor?
AlexStack
Por ejemplo, la documentación está en un solo lugar, los íconos están en un solo lugar, etc., lo que en algunos casos es realmente agradable. Por más flexible quiero decir que, al estar todo basado en rutas, puede hacer cosas como: generar un nuevo shell donde se cambian las variables de entorno para que solo vea los ejecutables en un determinado directorio, limitando (o expandiendo) su elección. Todo es muy "simple", ya que solo utiliza archivos y variables de entorno para lograr un alto grado de personalización.
UncleZeiv
Otro ejemplo es: en principio, puede instalar un programa en su directorio de inicio, por ejemplo / home / foo / bin, y simplemente agregar / home / foo / bin a sus entornos de ruta, sin tocar el sistema compartido.
UncleZeiv
3

Creo que el mejor consejo es solo en esta publicación del foro . Estas son sus opciones (2 y 3 son más o menos lo mismo en términos de efecto, en realidad):

  1. Use un administrador de paquetes y un repositorio. Eso significa que obtienes actualizaciones, obtienes lanzamientos oficiales, lanzamientos firmados, etc. etc. etc.
  2. Si no puede o no quiere usar un paquete de un repositorio, cree un paquete para el software e instálelo usando su administrador de paquetes. Las instrucciones detalladas para hacer esto en los sistemas basados ​​en Debian se encuentran en la publicación vinculada anteriormente. Al principio parece aterrador, pero en realidad es bastante simple, y especialmente en el caso de Debian hay muchos scripts para hacer todo el trabajo duro por usted.
  3. Si no puede hacer que ese método funcione, úselo checkinstallcomo otros lo han recomendado. Es un reemplazo directo muy simple para hacer la instalación:

    $ ./configure
    $ make
    $ sudo checkinstall
    

    Esto debería compilar el software normalmente y luego ejecutarse make installen un entorno confinado que rastrea lo que hace y crea un paquete que haría exactamente esas cosas. Luego instala ese paquete con su administrador de paquetes. Eliminar entonces es como eliminar cualquier otro paquete, como en (2).

  4. Si no puede o no quiere usar un administrador de paquetes, bueno, entonces use make install, supongo. Y espero que el desarrollador del software mantenga una rutina de desinstalación.
esme
fuente