실수로 삭제 한 /usr/lib/*.so.*


9

MRTG를 설치하는 동안 실수로 삭제 /usr/lib/*.so.*하고/usr/lib/*.so

이제 시스템을 부팅 할 수 없습니다. 시작 화면에서 멈추고 PAGEDOWN 버튼을 누르면로드에 실패한 몇 가지가 있음을 알 수 있습니다.

그러나 DHCP와 WebMin이 실행 중이며 Webmin에서 컵이로드되지 않고 있음을 알리는 시스템 로그를 볼 libpipeline.so.1수 있습니다.

내 컴퓨터가 11.04를 실행 중입니다



우분투 특정 질문에 우분투 물어 사용하십시오. 교차 포스트하지 마십시오. 우분투 전용인지 확실하지 않은 경우 여기에 먼저 문의하면 우분투 전용인지 여부를 마이그레이션합니다.

2
또한 미래를위한 요령 ... 다시 부팅하기 전에이 나쁜 일을했다는 것을 알고 있다면 다시 부팅 하지 마십시오 . 시스템을 작동 상태로두고 즉시 수리를 시작하십시오. 나는 과거에 회복 /bin했고 /etc그 방식으로

답변:


5

을 삭제 /usr/lib/*하고 삭제 하지 않았으므로 /lib/*복구 할 수 있습니다. 시스템 복구에 필요한 모든 프로그램은에서 라이브러리 만 사용한다고 생각합니다 /usr/lib.

텍스트 로그인 프롬프트로 부팅하십시오. 일반 부팅 login:에서 텍스트 모드 로 프롬프트가 표시 되지 않으면 최소한의 서비스로 부팅하십시오. Shift컴퓨터가 Grub 프롬프트를 표시하기 시작할 때 길게 누릅니다 . BIOS가 키보드를 초기화 한 후 Grub을로드하기 전에 키를 눌러야합니다. Grub이로드되기 전에 일부 시스템에서는 시간이 약간만 남아 있고 몇 번의 시도가 필요할 수 있습니다. Grub 프롬프트에서을 눌러 Down단일 사용자 모드 부팅 항목을 강조 표시하고 부팅합니다.

명령 행 apt-get --reinstall install PACKAGE1 PACKAGE2 …이 있으면에 파일이있는 패키지를 다시 설치하십시오 /usr/lib. 이 셸 스 니펫을 실행하여 다시 설치할 패키지 이름 목록을 얻을 수 있습니다.

egrep -l '/usr/lib/[^/]*\.so\.' /var/lib/dpkg/info/a*.list |
sed -e 's!^/var/lib/dpkg/info/!!' -e 's!\.list$!!'

일부 패키지 설치 스크립트에는 다른 패키지의 라이브러리가 있어야하므로 특정 순서로 재설치를 실행해야 할 수도 있습니다. 패키지의 설치 스크립트가 특정 프로그램을 사용하려고하면이 프로그램에 필요한 라이브러리를 찾을 수 있습니다 ldd. 예를 들어, 이것은 파이썬에 다시 설치해야하는 세 개의 라이브러리가 없음을 나타냅니다.

$ ldd /usr/bin/python | grep 'not found'
    libssl.so.0.9.8 => not found
    libcrypto.so.0.9.8 => not found
    libz.so.1 => not found

dpkg -S /usr/lib/libz.so.1이 파일의 출처 등이 밝혀 zlib1g졌습니다.

apt-get패키지를 다운로드 할 수없는 경우 먼저 라이브 CD에서 몇 가지 주요 패키지를 다운로드하십시오. zlib1g그리고 libssl0.9.8당신이 초기에 필요로 매우 가능성이 두 패키지입니다.


10

1 주일 동안 빠진 항목을 찾거나 CD로 다시 설치 한 다음 기존 패키지를 모두 다시 가져 오는 데 1 시간을 소비 할 수 있습니다.

먼저 LiveCD 환경으로 부팅하여 사물 백업을 먼저 얻은 다음 (외부 USB 드라이브 또는 다른 파티션에 복사) 다시 시작하는 것이 좋습니다.


2
정확히 모든 것을 다시 설치하지 않으면 몇 개월 동안 이상한 오류, 충돌 등이 나타날 수 있습니다 .
JanC

3

/usr/lib솔직히 시작 핵심 소프트웨어를 제외한 모든 것의 공유 라이브러리를 포함했습니다 ( /lib/패키지 관리자를 통해 설치하지 않은 것들 (보통 /usr/local/lib)).

짧은 버전, 당신은 당신의 시스템을 호스로 막았습니다.

자, 여전히 당신 /var/cache/apt/archives이 물건으로 가득 찬, 약간의 신중한 마술사가 있다면 상황을 구할 수 있습니다.

다음 패키지에 대한 아카이브가 여전히 포함되어 있는지 확인하십시오.

libxapian
libsigc++
apt
libcwidget
libsqlite
libboost-iostreams 

이러한 패키지에는 작동 /usr/lib하는 데 aptitude필요한 라이브러리가 포함되어 있습니다. 패키지를 찾을 수있는 경우 패키지를 사용 /var/cache/apt/archives하여 수동으로 다시 설치할 수 있으며 모든 패키지가 dpkg -i <packagename설치되면 적성을 실행할 수 있습니다.

그런 다음 명령 aptitude reinstall ~i을 실행하면 이미 설치된 모든 패키지를 강제로 다시 설치하여 시스템을 복원해야합니다. 이 경우에 당신이 한 피해는 정말 대단하기 때문에 절대 보장 할 수 없습니다 ...


1

우분투 11.04 라이브 CD로 부팅하고 누락 된 파일을 다시 복사하려고합니다.

작업을 수행하기 전에 사용자 생성 데이터 파일의 백업이 올바른지 확인하십시오. 그렇지 않은 경우 라이브 CD를 부팅하여 HDD를 읽기 전용으로 마운트하고 최대한 빨리 백업합니다.


0

비슷한 작업을 수행했을 때 재부팅을 시도하기 전에 깨달을 수있었습니다. 이 시점에서 시스템은 여전히 ​​대부분 작동합니다. 내 접근 방식은 동일한 버전의 OS로 가상 상자를 만들고 누락 된 파일을 복사하는 것입니다. ssh가 virtualbox 게스트에 액세스하도록 허용하면 기본 시스템의 터미널에서 rsync를 사용하여 누락 된 파일 및 링크 만 빨아 들일 수 있습니다. 필자의 경우 scp를 사용하여 수동으로 복사하는 것이 가장 쉽고 안전한 파일이 거의 없기 때문에 다음은 테스트되지 않은 것입니다!

sudo rsync -avu user@guestVB:/usr/lib /usr/lib

-a는 아카이브 모드입니다 (재귀 적, 심볼릭 링크 복사 및 타임 스탬프, 권한 등의 속성)

대상 복사가 최신 인 경우 -u를 건너 뜁니다.

-v는 장황하다

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