GNU/Linux >> LINUX-Kenntnisse >  >> Linux

/bin Inhalt nach /usr/bin verschoben, rückgängig machen möglich?

Unter Linux (und auf den meisten anderen Systemen, obwohl POSIX Ihnen diese Garantie nicht gibt, es sei denn, die Verschiebung erfolgte über Dateisysteme hinweg) hätte dies ihre ctime aktualisiert, also vorausgesetzt, keine der anderen in /usr/bin in den letzten 24 Stunden berührt wurden, sollten Sie sie mit:

zurückbewegen können
find /usr/bin/. ! -name . -prune -ctime -1 -exec sh -c '
   echo mv -i "[email protected]" /bin' sh {} +

Entfernen Sie die echo wenn das richtig aussieht. Beachten Sie, dass Sie die Dateien, die unter demselben Namen in /bin existierten, nicht wiederherstellen können und /usr/bin (die Originale in /usr/bin verloren gegangen wäre)

Ein möglicher Vorbehalt:Wenn einige Dateien in beiden /bin fest verlinkt waren und /usr/bin , alle festen Links in /usr/bin würde nach /bin verschoben werden .

Nun, Sie denken vielleicht, dass seit /bin und /usr/bin sind in der Voreinstellung $PATH , und /bin ist verfügbar unter /boot zumindest vor /usr gemountet ist, sollte es egal sein, ob sich die ausführbaren Dateien in /bin befinden statt /usr/bin .

Aber das würde übersehen, dass viele Befehle die Pfade von ausführbaren Dateien fest codieren und erwarten, dass sie in einem bestimmten Fall sind. Ein häufiger Fall ist She-Pony. Alle Skripte mit:

#! /usr/bin/env bash

wird nicht funktionieren, nachdem Sie mv /usr/bin/env /bin/env ausgeführt haben . In dieser Hinsicht ist es sicherer, die Befehle an beiden Orten zu haben, da diese Skripte nicht beschädigt werden.


Ist mein Ubuntu jetzt kaputt?

Ja, Ihr Ubuntu ist kaputt

Sie haben etwas Wichtiges in der Paketverwaltung durcheinandergebracht.

Sichern Sie daher in der Praxis Ihre wichtigen Daten (mindestens /etc und /home ), vielleicht auch die Liste der installierten Pakete z.B. Ausgabe von dpkg -l , und installieren Sie Ubuntu neu.

Ich könnte einfach zugeben, dass ich die ganze Linux-Partition neu installiert habe.

Das ist wahrscheinlich das, was weniger Zeit in Anspruch nehmen würde. Wenn Sie Ihr aktuelles System mit Hilfe anderer Antworten in einem sehr chaotischen Zustand halten (was Ihnen in Zukunft Kopfschmerzen bereiten würde).

Da Sie Ihre Festplatte neu formatieren, sollten Sie /home eingeben in einer separaten Partition (damit zukünftige solche Fehler Ihre Daten nicht verlieren). Drucken Sie vorher die Ausgabe von df -h auf Papier aus und df -hi und fdisk -l (Sie geben Auskunft über den belegten und den verfügbaren Speicherplatz auf der Festplatte ...). Achten Sie darauf, eine ausreichend große Systempartition (das Root-Dateisystem) zu haben; wenn Sie es sich leisten können, sind 100 GB mehr als genug.

Ich sollte den Inhalt des Software-Bin-Ordners nach /usr/bin

verschieben

(Terminologie:Unix hat Verzeichnisse, keine "Ordner").

Das (bewegen bis /usr/bin/ ) ist sehr falsch. Verbessern Sie entweder Ihren $PATH (vorzugsweise) oder fügen Sie höchstens symlinks hinzu in /usr/bin/ und vorzugsweise ausführbare Dateien nach /usr/local/bin/ verschieben (oder Symlinks hinzufügen). .

Der kluge Ansatz besteht darin, /usr/bin/ niemals zu ändern , /bin , /sbin , /usr/sbin/ außerhalb von Paketverwaltungstools (z. B. dpkg , apt-get , aptitude , etc...). Lesen Sie die FHS.


  1. Ihre Installation sollte größtenteils in Ordnung sein; Es sollten keine verschiedenen Dateien mit demselben Namen in /usr vorhanden sein und /usr/bin (was Ihre 2.1 beantwortet), also alle Dateien in beiden /bin und /usr/bin wird nichts kaputt machen (bis Sie Pakete aktualisieren). Das einzige Problem, das Sie jetzt haben könnten, sind defekte Symlinks, wenn Sie eine Binärdatei mit einem Symlink darauf überschrieben haben. Um dies zu beheben, suchen Sie nach defekten symbolischen Links:

    find -L /bin /usr/bin -type l -ls
    

    und installieren Sie alle Pakete neu, die den aufgelisteten Dateien entsprechen (wenn beispielsweise /usr/bin/zsh wird als defekt angezeigt, dpkg -S /bin/zsh /usr/bin/zsh wird Ihnen sagen, aus welchem ​​Paket die Datei stammt; mit apt --reinstall install zsh neu installieren ).

  2. Sie können nach ctime anzeigen und sortieren, um Dateien anzuzeigen, die kürzlich geändert wurden (einschließlich der von Ihnen verschobenen Dateien):

    ls -ltc /bin
    
  3. Der beste Ansatz, um das, was Sie getan haben, rückgängig zu machen, ist die Verwendung von cruft packt und löscht Dateien, die es in /bin findet oder /usr/bin die nicht aus einem Paket stammen:

    sudo apt install cruft
    sudo cruft -d "/ /usr"
    

    es sei denn, die Dateien sind symbolische Links zu Dateien in /etc/alternatives (in diesem Fall sollten Sie sie in Ruhe lassen).


Linux
  1. Unterschied zwischen /bin/false &/sbin/nologin

  2. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  3. /usr/bin vs. /usr/local/bin Unter Linux?

  4. Warum zeigt /bin/sh auf /bin/dash und nicht auf /bin/bash?

  5. Node.js-Konflikte:/sbin/node Vs /usr/bin/node?

Linux – /sbin/init existiert nicht?

./configure :/bin/sh^M :schlechter Interpreter

Installieren Sie Binärdateien in /bin, /sbin, /usr/bin und /usr/sbin, Interaktionen mit --prefix und DESTDIR

Was ist der Unterschied zwischen #!/usr/bin/env bash und #!/usr/bin/bash?

Berechtigung für Composer in /usr/local/bin/ verweigert

Sollten Websites gemäß der empfohlenen Verwendung in /var/ oder /usr/ leben?