/ usr / local의 실수로 삭제 된 내용 [중복]


0

이 질문에는 이미 답변이 있습니다.

실수로 / usr / local 디렉토리에 'sudo rm -rfd *'를 발행했습니다. 최소한 새로 설치했을 때의 상태 (Linux Mint 15)로 돌아가려면 어떻게해야합니까?



1
/usr/local일반적으로 패키지 관리자를 사용하여 설치되지 않은 응용 프로그램의 파일이 포함됩니다. 이 작업을 수행하지 않은 경우 최상위 디렉토리가 아닌 비어있을 수 있습니다.
Paul

답변:


1

시스템 파일을 복구하려고 시도하지 마십시오

시스템 파일에 대한 파일 복구를 권장하지 마십시오! 직접 작성한 텍스트와 같은 보다 고유 한 파일 에서 파일 복구를 시도 할 수 있습니다 .

시스템 파일을 복구하는 데 문제가 있습니다.

첫번째 해결책

시스템의 경우 다시 설치하십시오. 설치하는 동안 아무것도 닦거나 포맷 할 필요가 없습니다. 누락 된 모든 내용은 교체됩니다. 평소처럼 업그레이드하면됩니다.

그러나 이것은 /usr/local시스템에서 가장 빈 상태이므로 필요하지 않습니다 .

두 번째 솔루션

일반적으로 해당 폴더에는 거의 아무것도 없습니다. 설치 한 것을 알고 있으면 다시 설치하십시오.

마지막으로 일부 패키지는 파일을 넣을 수 있습니다. 터미널을 열고 다음 명령이 아무것도 출력하지 않는지 확인하십시오.

dpkg --get-selections | cut -f 1 | xargs dpkg -L | grep /usr/local

설명

그것이하는 일은 매우 간단합니다.

dpkg --get-selections 

시스템에 설치된 패키지 목록을 다음 형식으로 출력합니다.

package_name                      installed

그러나 우리 package_name는 각 줄에 대해서만 원합니다 .

| cut -f 1 

|bash(터미널에서 실행되는 프로그램)에게 이전 명령의 출력이 표시되지 말고 다음 프로그램 내에서 "piped"되어야 함을 알려줍니다 (여기서 cut).

cut이름에서 알 수 있듯이 각 줄을 단어로 자르고 표시 할 첫 번째 필드 ( -f 1) 만 유지합니다 .

요약하면

dpkg --get-selections | cut -f 1

시스템에 설치된 패키지 목록을 반환해야합니다.

이제 xargs"목록의 각 요소마다 ..."처럼 작동 하는 목록을 파이프 할 수 있습니다 .

이리,

xargs dpkg -L 

실행됩니다 :

dpkg -L package1
dpkg -L package2
dpkg -L package3
...

파이프를 통해 지정한 각 패키지 이름에 대해

dpkg -L mypackage "mypackage"라는 패키지에 포함 된 파일을 나열합니다.

이제 파일 목록을 가져 와서 일부 패키지가 파일을 넣었는지 확인해야합니다 /usr/local. 우리는 그것을 포함 하지 않는grep 모든 출력을 걸러 낼 것 입니다./usr/local

순서대로 정리하면 먼저 설치된 패키지 목록을 가져온 다음 패키지 이름 만 유지하도록이 목록의 형식을 지정한 다음 패키지에서 사용하는 설치 폴더를 나열한 다음 내부에있는 내용 만 유지하도록 필터링합니다. 의 /usr/local.

명령이 아무 것도 반환하지 않아도 걱정할 필요가 없습니다.

그래픽 UI 대안

내 지식으로는 GUI 대안이 없습니다.


0

OS는 내부 /usr/local또는 내부에 아무것도 저장하지 않아야하므로 OS를 다시 설치할 필요가 없습니다 /opt(이 둘은 거의 동일합니다).

그러나 직접 컴파일했거나 패키지 관리자 또는 포트 트리를 통해 설치 한 모든 프로그램은 / usr / local /에있을 수 있습니다.

그 때문에:

  1. 백업을 확인하십시오. 그 폴더에 있던 것. 해당 프로그램을 제거했다가 다시 설치하십시오.
  2. 또는 백업이 없으면 설치된 모든 패키지 목록을 작성하고 모두 제거했다가 다시 설치하십시오.

apt-get 또는 dpkg -l을 사용하여 패키지를 나열하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.