유지관리되지 않는 오래된 컴퓨터에 새 패키지를 설치합니다.

유지관리되지 않는 오래된 컴퓨터에 새 패키지를 설치합니다.

우리는 2005년에 설치된 오래된 서버(Fedora Core 4)를 가지고 있습니다. 이 서버는 업데이트된 적이 없습니다. 외부 세계와 직접 연결하지 않고도 생산 라인을 모니터링할 수 있는 특수 소프트웨어를 실행한다.

시스템 업그레이드에는 문제가 없습니다.

일부 유틸리티에는 오류가 있거나 옵션이 누락되었습니다. 일부 다른 유틸리티가 누락되었습니다.

이 서버에 몇 가지 스크립트를 설치해야 합니다. 가장 큰 문제는 Bash가 정말 오래되었고 유용한 것들이 빠져 있다는 것입니다. 나는 잘 테스트된 스크립트를 해킹한다는 생각을 좋아하지 않습니다.

시스템을 변경하지 않고 최신 Bash를 실행하고 새 프로그램을 설치할 수 있는 방법이 있습니까?

BusyBox처럼요? 아니면 chroot 내에서? chroot의 문제점은 실제 시스템에 접근하기 어렵다는 것입니다. 예를 들어 내 백업 스크립트가 작동하지 않습니다.

답변1

내 생각에 가장 쉬운 방법은 다른 설치의 프로그램과 라이브러리를 별도의 디렉터리에 대량 복사하는 것입니다. 예를 들어, 몇 백 메가바이트에 불과한 필요한 모든 것을 포함할 수 있는 systemrescuecd와 같은 라이브 CD에서 /opt/new/로 복사합니다. 이를 통해 어떤 라이브러리가 필요한지 검색/찾기/추측/테스트할 필요 없이 복제할 수 있습니다.

LD_LIBRARY_PATH=/opt/new/lib/ ; /opt/new/bin/diff그런 다음 이 프로그램을 사용하거나 실행할 수 있습니다 LD_LIBRARY_PATH=/opt/new/lib/ ; /opt/new/bin/bash . 이는 유틸리티가 더 이상 이해하지 못하는 이전 구성 파일을 더 이상 읽지 않을 때까지 완벽하게 작동합니다. 아니면 더 나쁜 것은 그들이 글을 쓰지 않을 때까지입니다.

성공하면 새 라이브러리를 /lib/에 복사하여 LD_LIBRARY_PATH 트릭을 잊어버릴 수 있습니다. 파일 이름이 충돌하지 않는 한 이것은 안전합니다(다른 제안도 환영합니다).

과감히 이전 바이너리를 새 바이너리로 교체할 수도 있지만(선택한 바이너리에만 해당) 이는 프로덕션 서버에 적합하지 않을 수 있습니다.

답변2

전용 사용자의 홈 디렉터리에 필요한 도구를 컴파일하고 설치할 수 있습니다.

전용 사용자의 환경 변수 PATHLD_LIBRARY_PATH.

필요한 단계는 다음과 유사합니다.

  1. 새 사용자 만들기:cooluser
  2. ~cooluser/Local디렉터리 생성
  3. ~cooluser/.profile필요에 따라 설정 환경을 편집합니다.
    • PATH=${HOME}/Local/bin:${PATH}
    • LD_LIBRARY_PATH=${HOME}/Local/lib:${LD_LIBRARY_PATH}
  4. 필요한 도구를 다운로드할 수 있는 소스
  5. intself가 설치되도록 도구를 구성합니다.~cooluser/Local
    • 예를 들어./configure --prefix=~cooluser/Local
  6. 컴파일 및 설치

gcc분명히 당신의 컴퓨터에는 다른 많은 개발 도구가 필요할 것입니다 . 해당 도구가 없으면 일부 OS 버전을 실행하는 다른(가상?) 컴퓨터에서 도구를 컴파일하고 ~cooluser/Local준비가 되면 디렉터리를 전송할 수 있습니다.

답변3

설치된 프로그램이 많으면 수동으로 유지 관리하는 것이 어려울 수 있습니다. chroot에 최신 배포판을 설치하는 것이 좋습니다.

익숙해지면 Fedora를 설치해도 됩니다. chroot에 도구를 설치하는 것이 도움이 되는지 모르겠습니다. 그렇지 않다면 데비안과 그 파생물이 그렇게 합니다.부팅 방지 프로그램.이 가이드도움이 될 수도 있습니다. 이러한 이전 버전의 Fedora에는 schroot가 없지만 여전히 rpm을 설치할 수 있습니다.

schroot를 작동시킬 수 없는 경우 바인드 마운트로 chroot를 수동으로 채우십시오. 배포판을 설치했지만 /newschroot를 사용하지 않는 경우 다음 항목을 다음에 추가하십시오 /etc/fstab.

/           /new/old      rbind   rbind
/dev        /new/dev      rbind    rbind
/home       /new/home     rbind    rbind
/tmp        /new/tmp      rbind    rbind
proc        /new/proc     proc    defaults
sysfs       /new/sys      sysfs   defaults

바인드 마운트를 사용할 것이므로 바인드 마운트 디렉터리를 통과하지 않도록 백업 스크립트를 구성해야 합니다. 그렇지 않으면 원래 위치에 한 번, 새 위치에 한 번, 총 두 번 백업하게 됩니다.

답변4

Bash는 libc에 의존하는데, 이는 너무 오래되어서 성공적인 컴파일 가능성이 매우 제한적입니다. 아마도 귀하의 bash 버전이 무엇인지 알려주는 것이 도움이 될 것입니다.

관련 정보