Solo por diversión, pensé que usaría este comando en mi Raspberry Pi con Raspbian:
sudo rm -f /bin/rm
Pensé que podría reinstalar coreutils: ¡estaba equivocado!
apt-get install --reinstall coreutilsda un error de dpkg, diciendo que no pudo eliminar el paquete. Compilar desde la fuente no funciona porque los Makefileusos rm.
¿Cómo puedo volver a trabajar rm?
command-line
rm
dpkg
usuario60684
fuente
fuente

ln -s /usr/lib/initramfs-tools/bin/busybox /bin/rm(o/bin/busybox, o extraerlo de un initrd)Respuestas:
Y nunca más.
Porque el
downloadcomando no lo requiere:Por lo tanto, a menos que esté en algún directorio que no pueda escribir, no necesita usarlo
sudo, y podría volverse problemático más adelante ya que necesitarárootpermisos para eliminar / mover el paquete.fuente
/bin/sh. Hubiera sido más sencillo que hacer unasudo ln -s true /bin/rmo incluso mejorsudo ln -s busybox /bin/rmque tener un trabajorm.apt-getnecesita sudo si no ha descargado coreutils porque de lo contrario no podrá escribir en/vardonde debian guarda los archivos descargados.apt-getdescarga el paquete al directorio actual siempre (sí, incluso si lo usósudo), así que a menos que esté en un directorio no puede escribir como su usuario, no lo necesitasudo. Por favor, consulte las páginas del manual.debiany sus derivados (y probablemente la mayoría de las otras distribuciones) vienen con losbusyboxque se usa eninitramfs.busyboxagrupa la mayoría de las utilidades de línea de comando central en un solo ejecutable.Puedes vincular temporalmente
/bin/rma/bin/busybox:Para obtener un trabajo
rm(después de lo cual puede hacer suapt-get install --reinstall coreutils).Ese mismo método se puede utilizar para todas las demás utilidades que
busyboxincluye. Esa lista varía de una implementación a otra. Puedes obtener la lista conbusybox --list.Sin embargo, tenga en cuenta que son versiones limitadas de las utilidades correspondientes. A veces admiten extensiones GNU, pero generalmente no y algunas de ellas ni siquiera admitirán todas las características estándar / POSIX (algunas características se pueden habilitar / deshabilitar en tiempo de compilación).
Alternativamente, puede usar
zshel rm incorporado:El
zsh/filesmódulo proporciona con unas pocas órdenes internas adicionales (rm,mv,ln,mkdir,rmdir,chown,chmod,sync). Es útil en este tipo de situación o cuando no puede bifurcar más procesos pero tiene unazshejecución interactiva .ksh93También tiene una serie de buitin adicional / opcional de comandos, pero normentre ellos (basename,chmod,dirname,getconf,head,mkdir,logname,cat,cmp,cut,uname,wc,sync). Puedes invocarlos con:en un
ksh93guionfuente
rm. ;-)En caso
apt-getodpkgnecesidadesrmy sinrmuna reinstalación no es posible, puede emularrmconperl:fuente
-r, y el hecho de que no devuelve un estado de salida correcto puede causar problemas.apt-get install --reinstall coreutilsque el OP vuelva a la normalidad.rmconmv(a 'papelera')Intentaría obtener el
rmbinario correcto de otra máquina y luego usarscpo algo para copiarlo a la Pi. Por supuesto, esto solo funciona siscpya está instalado ...Si
scpno está disponible, entoncesnc(también conocido como netcat) en el lado de envío y bash con una/dev/tcp/HOST/PORTredirección en el lado de recepción podría funcionar también.Si no tiene otra máquina Raspbian, puede recuperar el paquete coreutils (obtenga la
.debversión correcta) y descomprímalo condpkg-deb(en Debian / Ubuntu / Mint / ..., incluso si no está en un Pi):Si no tiene otra máquina con dpkg, puede extraer el archivo con
ar(de las herramientas de desarrollo binutils) y tar:fuente
scpno está disponible, entoncesnc(akanetcat) en el lado emisor ybashcon una/dev/tcp/HOST/PORTredirección en el lado receptor podría funcionar también.Como es debian (o ubuntu), hay una manera fácil de obtener los archivos:
Esto funciona porque apt-get descargó el coreutils.deb antes de intentar instalarlo, y se garantizó que dpkg-deb existe en un sistema basado en Debian.
No extraiga directamente a / tmp, cambia los permisos en el directorio principal.
Si vas a jugar, quizás quieras instalar el paquete busybox-static, que funciona incluso si rompes todo lo demás.
fuente