GNU/Linux >> Znalost Linux >  >> Linux

Přesunutý obsah /bin do /usr/bin, je možné vrátit zpět?

Na Linuxu (a na většině ostatních systémů, i když vám POSIX tuto záruku nedává, pokud přesun nebyl mezi systémy souborů), by to aktualizovalo jejich ctime, takže za předpokladu, že žádný z ostatních v /usr/bin se jich za posledních 24 hodin dotklo, měli byste být schopni je přesunout zpět pomocí:

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

Odstraňte echo jestli to vypadá správně. Všimněte si, že nebudete moci obnovit soubory, které existovaly pod stejným názvem v /bin a /usr/bin (původní v /usr/bin byl by ztracen)

Potenciální upozornění:pokud by některé soubory byly pevně propojeny v obou /bin a /usr/bin , všechny pevné odkazy v /usr/bin bude přesunuto na /bin .

Nyní si můžete myslet, že od /bin a /usr/bin jsou ve výchozím nastavení $PATH a /bin je k dispozici na /boot alespoň před /usr je připojeno, nemělo by záležet na tom, zda jsou spustitelné soubory v /bin místo /usr/bin .

To by však přehlíželo, že mnoho příkazů pevně kóduje cesty ke spustitelným souborům a očekává, že budou v nějakém konkrétním případě. Častým případem je ona-bang. Všechny skripty, které mají:

#! /usr/bin/env bash

po provedení mv /usr/bin/env /bin/env nebude fungovat . V tomto ohledu je mít příkazy v obou umístěních bezpečnější, protože tyto skripty neporuší.


Je moje Ubuntu nyní v nefunkčním stavu?

Ano, vaše Ubuntu je nefunkční

Zpackali jste něco důležitého pro správu balíků.

V praxi tedy zálohujte důležitá data (alespoň /etc a /home ), možná také seznam nainstalovaných balíčků, např. výstup dpkg -l a přeinstalujte Ubuntu.

Mohl bych jen přiznat, že jsem zpackal přeinstalaci celého linuxového oddílu.

To je pravděpodobně to, co by vám zabralo méně času. Udržování vašeho současného systému pomocí jiných odpovědí ho udržuje ve velmi chaotickém stavu (což by vám v budoucnu způsobilo bolesti hlavy).

Protože přeformátujete disk, zvažte vložení /home v samostatném oddílu (takže budoucí takové chyby neztratí vaše data). Než to uděláte, vytiskněte na papír výstup df -h a df -hi a fdisk -l (poskytují informace o místě na disku - využitém i dostupném - ...). Je rozumné mít dostatečně velký systémový oddíl (kořenový souborový systém); pokud si to můžete dovolit, 100 GB je více než dost.

Měl jsem přesunout obsah složky softwaru bin do /usr/bin

(terminologie:Unix má adresáře, nikoli "složky").

To (pohyb na /usr/bin/ ) je velmi špatně. Buď vylepšete svou $PATH (nejlépe), nebo nanejvýš přidejte symlinky v /usr/bin/ a nejlépe přesunout (nebo přidat symbolické odkazy) spustitelné soubory do /usr/local/bin/ .

Moudrý přístup je nikdy neměnit /usr/bin/ , /bin , /sbin , /usr/sbin/ mimo nástroje pro správu balíčků (např. dpkg , apt-get , aptitude , atd...). Přečtěte si FHS.


  1. Vaše instalace by měla být většinou v pořádku; v /usr by neměly být různé soubory se stejným názvem a /usr/bin (což odpovídá vašemu 2.1), takže mít všechny soubory v obou /bin a /usr/bin nic nezlomí (dokud neupgradujete balíčky). Jediný problém, který teď můžete mít, jsou nefunkční symbolické odkazy, pokud jste přepsali binární soubor symbolickým odkazem na něj. Chcete-li to opravit, vyhledejte nefunkční symbolické odkazy:

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

    a přeinstalujte všechny balíčky odpovídající uvedeným souborům (například pokud /usr/bin/zsh zobrazí se jako nefunkční, dpkg -S /bin/zsh /usr/bin/zsh vám řekne, ze kterého balíčku soubor pochází; znovu jej nainstalujte pomocí apt --reinstall install zsh ).

  2. Můžete zobrazit a seřadit podle ctime, abyste viděli soubory, které byly nedávno změněny (což bude zahrnovat soubory, které jste přesunuli):

    ls -ltc /bin
    
  3. Nejlepší způsob, jak vrátit zpět to, co jste udělali, je použít cruft zabalit a odstranit soubory, které najde v /bin nebo /usr/bin které nepocházejí z balíčku:

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

    pokud soubory nejsou symbolické odkazy na soubory v /etc/alternatives (v tom případě byste je měli nechat na pokoji).


Linux
  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Není důvod mít Shebang ukazující na /bin/sh spíše než /bin/bash?

  3. Linux – sloučení /usr/bin A /usr/sbin do /bin (gnu/linux)?

  1. ./configure :/bin/sh^M :špatný interpret

  2. Nainstalujte binární soubory do /bin, /sbin, /usr/bin a /usr/sbin, interakce s --prefix a DESTDIR

  3. Jaký je rozdíl mezi #!/usr/bin/env bash a #!/usr/bin/bash?

  1. Kdy mám použít /dev/shm/ a kdy /tmp/?

  2. Jaké jsou významy /usr/sbin, /usr/local/sbin a /usr/local/bin?

  3. Kdy musím použít #!/bin/bash a kdy #!/bin/sh?