배포판을 업그레이드할 때 "오래된" 패키지를 처리하는 방법은 무엇입니까?

배포판을 업그레이드할 때 "오래된" 패키지를 처리하는 방법은 무엇입니까?

Debian 컴퓨터를 Jessie에서 Stretch로 업그레이드하고 싶지만 aptitude에서 19개의 오래된 패키지가 있다고 보고합니다. BerkeleyDB와 같은 일부는 제가 정기적으로 사용하는 것입니다.

업그레이드 지침 세트업그레이드하기 전에 오래된 소프트웨어를 모두 제거하라고 하는데 일부 소프트웨어를 계속 사용하고 싶습니다. Jessie를 영원히 사용할 수 있나요?

답변1

최신 리포지토리에서 사용할 수 없고 보안 문제를 일으킬 수 있는 오래된 패키지를 제거하는 것이 좋습니다.

더 이상 사용되지 않는 패키지를 나열합니다.

aptitude search ?obsolete

목록을 작성하세요:

aptitude search ?obsolete  > mylist

mylist패키지 이름만 유지하여 파일을 편집합니다.

오래된 패키지를 제거하려면:

apt-get --purge remove $(cat mylist)

데비안 매뉴얼:4.8. 오래된 패키지

많은 새로운 패키지가 도입되었고, Stretch는 폐기되었으며, jessie의 일부 이전 패키지는 생략되었습니다. 이러한 오래된 패키지에 대한 업그레이드 경로는 제공되지 않습니다. 필요한 경우 오래된 패키지를 계속 사용하는 것을 막을 수는 없지만 데비안 프로젝트는 일반적으로 릴리스 후 1년 동안 보안 지원을 중단하고 [5] 동시에 추가 지원을 제공하지 않습니다. 가능한 경우 사용 가능한 대안으로 교체하는 것이 좋습니다.

답변2

이러한 패키지가 신규/업데이트된 패키지와 충돌하지 않는 경우 제거해야 할 특별한 이유는 없습니다.

충돌이 발생하면 패키지 관리자가 이를 알려줍니다.

그런데 내 시스템에는 1~2년 동안 데비안에 설치되지 않은 일부 패키지가 아직 설치되어 있습니다. 그들은 여전히 ​​​​일합니다. 최신 데비안 버전용으로 다시 컴파일해야 했던 몇 가지 항목과 다시 컴파일할 가치가 없어서 사용을 중단한 몇 가지 항목(또는 더 일반적으로 최신 버전에 대해 작동하도록 해킹하여 컴파일) 다양한 도서관).

아직 이전 버전의 libdb가 설치되어 있습니다.

$ dpkg -l libdb[0-9.]* | grep ii
ii  libdb4.6           4.6.21-21      amd64        Berkeley v4.6 Database Libraries [runtime]
ii  libdb4.6++         4.6.21-18      amd64        Berkeley v4.6 Database Libraries for C++ [runtime]
ii  libdb5.1:amd64     5.1.29-7       amd64        Berkeley v5.1 Database Libraries [runtime]
ii  libdb5.1:i386      5.1.29-7       i386         Berkeley v5.1 Database Libraries [runtime]
ii  libdb5.3:amd64     5.3.28-13.1+b1 amd64        Berkeley v5.3 Database Libraries [runtime]
ii  libdb5.3:i386      5.3.28-13.1+b1 i386         Berkeley v5.3 Database Libraries [runtime]
ii  libdb5.3-dev       5.3.28-13.1+b1 amd64        Berkeley v5.3 Database Libraries [development]
ii  libdb5.3-sql:amd64 5.3.28-13.1+b1 amd64        Berkeley v5.3 Database Libraries [SQL runtime]

libdb4.6은 2014년경 "Squeeze"(Debian 6) 이후 데비안에 존재하지 않습니다.

이전 라이브러리를 사용하는 항목이 설치되어 있지 않으면 가끔 기억나는 대로 제거합니다.

답변3

...절대 "사용"하지 못할 것입니다 :) 이 문제를 언제 어떻게 해결해야 하는지에 대한 질문입니다...

따라서 apt에는 3개의 업그레이드 플래그가 있습니다.

https://www.fosslinux.com/43884/apt-vs-aptitude.htm https://wiki.debian.org/적성

apt upgrade | safe-upgrade 

Ubuntu 설치의 모든 항목이 업그레이드됩니다.

...업그레이드 패키지의 전체 목록과 충돌이 없는 한

apt full-upgrade

...업그레이드 패키지의 전체 목록과 충돌하는 항목을 모두 제거합니다.

TUI 버전의 aptitude( aptitude명령줄에서만 실행됨)에는 더 많은 옵션이 있으며 명령줄 버전보다 더 나은 결정을 내릴 수도 있고 그렇지 않을 수도 있습니다. LiveCD의 또 다른 훌륭한 용도입니다. TUI 버전은 응용 프로그램, 드라이버 등을 관리 가능한 범주로 그룹화하는 데에도 적합합니다. 따라서 업그레이드했는데 시스템에 오래된 패키지가 여전히 존재하는 경우 TUI 버전의 aptitude에서 쉽게 찾을 수 있습니다.

RH 패키지 관리는 개념적으로 유사하지만 유사한 목표를 달성하기 위해 다른 프로세스 세트를 사용합니다. 다시 말하지만, 다른 옵션은 동일한 결과를 얻기 위해 새로운 패키지나 다른 접근 방식을 찾는 것입니다. 그렇게 하면 2025년에 U14-32를 실행하는 데 어려움을 겪지 않을 것입니다. 가상 머신이나 컨테이너에서 이 작업을 수행할 수 있습니다.

어쨌든 설치를 백업하고 보안 업그레이드를 실행한 후 여전히 작동하는지 확인하겠습니다. 그렇지 않은 경우 가상 머신으로 복원하거나 최신 대체품을 찾으세요. 아니면 말씀하신 대로 새 상자를 구입하고 기존 상자에 원격으로 연결하세요.

개인적으로 저는 오래된/호환되지 않는 소프트웨어를 덮어쓰고 비활성화하고, 레거시 플랫폼을 깨고 앞으로 나아가도록 영감을 주기 위해 업그레이드합니다. 이를 처리할 무언가(드라이버 또는 패키지)가 필요한 경우에는 업그레이드하지 않을 것입니다. 다른 상자를 구입하고 계속 진행하는 것이 좋습니다. 작업하는 데 정말로 필요한 경우 작업 중인 컴퓨터의 운영 체제를 업그레이드하는 위험을 감수하고 싶지 않을 것입니다. 그렇지 않습니까? 적어도 이전 설치를 새 드라이브에 복제하고 새 드라이브를 업그레이드할 수는 있습니다. 그렇죠? 전체 업그레이드 후에도 작동하지 않으면 필요한 소프트웨어를 다시 설치한 다음(최신 라이브러리에서는 잘 작동하기를 바랍니다), 기존 드라이브를 새 드라이브로 다시 복제하고 안전한 업그레이드를 시도해 보세요. 듀얼 부팅, 필요한 것은 무엇이든 가능합니다.

답변4

안전을 위해 자동으로 설치되고 다른 패키지는 종속되지 않으며 필요하지 않은 오래된 패키지를 검색할 수 있습니다.

aptitude search '~o ~M !?reverse-depends(~i) !~E'

어디무늬의미는 다음과 같습니다

  • 오래된 것: ~o또는?obsolete
  • 자동 설치: ~M또는?automatic
  • 다른 패키지는 이에 의존하지 않습니다.!?reverse-depends(~i)
  • 필요하지 않음: !~E또는!?essential

따라서 사용되지 않는 패키지를 안전하게 제거(제거)하는 한 줄의 코드는 다음과 같습니다.

aptitude purge $(aptitude search '~o ~M !?reverse-depends(~i) !~E' | cut -d' ' -f 3 | paste -sd' ')

관련 정보