Computer >> 컴퓨터 >  >> 체계 >> Linux

Linux에서 깨진 패키지를 수정하는 방법

Linux에서 깨진 패키지를 수정하는 방법

Apt 및 DNF와 같은 Linux 패키지 관리자는 매우 강력하고 직관적이지만 일이 잘못될 수 있다는 의미는 아닙니다. 때때로 패키지 설치가 잘못되어 조각을 선택해야 합니다. 패키지 관리자는 손상된 패키지를 수정하고 손상된 업데이트를 건너뛰어 시스템을 다시 작동시키고 향후 문제를 방지할 수 있습니다. 이 문서는 Linux에서 손상된 패키지를 수정하는 방법을 다룹니다.

이 팁과 트릭은 대부분의 경우에 문제를 해결하는 데 도움이 될 것입니다. 그것들은 모두 상당히 보편적이지만 모든 상황이 다르기 때문에 자신의 상황을 디버그할 때 이를 염두에 두십시오.

Ubuntu/Mint/Debian에서 손상된 패키지 수정

Apt에는 누락된 종속성 또는 설치 중에 파손된 패키지를 수정하는 데 사용할 수 있는 몇 가지 플래그가 있습니다. 여기서 일반적인 용도는 타사 .deb를 설치하고 여기에 당신이 알지 못하는 종속성이 있다는 것을 발견하는 것입니다. 이러한 종속성은 자체적으로 가져오지 않으며 dpkg 패키지가 누락되었다고 불평할 것입니다. 어쨌든 다음 단계를 시도할 수 있습니다.

Linux에서 깨진 패키지를 수정하는 방법

먼저 업데이트를 실행하여 필요한 패키지의 최신 버전이 없는지 확인합니다.

sudo apt --fix-missing update

다음으로, 문제가 되는 패키지를 다시 설치하려고 할 때 Apt가 누락된 종속성 또는 손상된 패키지를 찾아 수정하도록 할 수 있습니다. 이것은 실제로 누락된 종속성을 설치하고 기존 설치를 복구합니다.

sudo apt install -f

패키지 설치에서 오류가 발생할 수 있는 또 다른 위치는 구성 프로세스입니다. 이면에서 Apt가 아닌 dpkg가 이 부분을 처리하므로 구성 중에 패키지가 실패하면 dpkg가 이를 수정하기 위해 사용할 도구입니다.

Linux에서 깨진 패키지를 수정하는 방법

손상되거나 부분적으로 구성된 패키지를 dpkg에서 강제로 재구성하는 것으로 시작하십시오.

sudo dpkg --configure -a

그래도 문제가 해결되지 않으면 더 강력한 접근 방식을 취할 수 있습니다. dpkg가 재설치가 필요한 것으로 표시된 모든 패키지를 나열하여 시작하십시오.

sudo dpkg -l | grep ^..r

문제가 있는 패키지가 표시되어야 합니다. 거기에 속하지 않는 것 같은 것이 없으면 깨진 패키지를 강제로 제거할 수 있습니다.

sudo dpkg --remove --force-remove-reinstreq [package name]

dpkg가 끝나면 Apt로 정리해보세요.

sudo apt clean
sudo apt update

운이 좋으면 시작한 곳으로 돌아갈 수 있습니다. 설치하려고 시도한 깨진 패키지를 가져오지는 않지만 최소한 Apt는 다시 작동할 것이며 이를 사용하여 패키지와 해당 종속성을 설치하려고 할 수 있습니다.

영구 DPKG 잠금

dpkg 잠금으로 인해 아무 것도 할 수 없게 되는 덜 일반적인 문제가 있습니다. Apt 또는 dpkg를 사용하려고 할 때마다 다른 응용 프로그램이 이미 있다는 오류가 발생합니다.

Apt를 사용하지 못하게 하고 필요한 작업을 다시 수행하는 것을 방지하는 잠금 파일을 삭제하는 것은 실제로 쉽습니다. 때때로 이러한 잠금 파일은 설치 오류 또는 정전 후에도 제자리에 남아 있어 프로세스가 탈선하고 파일이 자동으로 제거되지 않도록 합니다. 이 경우 직접 수행해야 합니다.

sudo rm /var/lib/apt/lists/lock

적절한 조치를 위해 캐시의 잠금을 삭제하십시오.

sudo rm /var/cache/apt/archives/lock

Fedora/CentOS/RHEL에서 손상된 패키지 수정

Fedora/CentOS/RHEL에서 손상된 패키지를 수정하는 것은 덜 일반적입니다. yum 및 dnf는 패키지가 올바르게 설치되었는지 확인하는 데 정말 훌륭한 역할을 하기 때문입니다. 그러나 때때로 패키지 사용에서 상황이 혼동됩니다. rpm 기반 시스템에서 이를 수행하는 명령은 다음과 같습니다.

sudo rpm -Va
Linux에서 깨진 패키지를 수정하는 방법

-V 옵션은 확인을 위한 것입니다. 즉, 설치된 파일의 정보를 rpm에 저장된 정보와 비교합니다. 데이터 베이스. 이것은 일반적으로 긴 파일 목록을 제공하므로 약간 도움이 되지 않지만 특정 응용 프로그램에 문제가 있는 경우 시작할 수 있는 위치를 제공할 수 있습니다. dnf reinstall를 실행할 수 있습니다. 문제를 일으킬 수 있는 해당 목록에 있는 모든 패키지에 대해 설명합니다.

sudo dnf --refresh reinstall PACKAGE_NAME

그러면 모든 메타데이터가 만료된 것으로 설정되므로 활성화한 모든 리포지토리를 크롤링하고 해당 패키지의 새 버전을 찾습니다. 해당 패키지에 깨진 종속성이 있음을 발견하면 DNF가 불평하고 --skip-broken을 사용하라고 말할 것입니다. 깃발. 이것은 또한 종속성을 가져올 수 있는 특정 저장소가 없다는 것을 의미할 수 있으므로 그곳에서 조사를 해야 할 수도 있습니다.

아치에서 깨진 패키지 수정

Arch의 패키지 관리자는 데비안과 많은 유사점이 있지만 완전히 다른 짐승입니다. 문제 진단의 첫 번째 단계는 저장소가 최신 상태인지 확인하고 전체 업그레이드를 시도하는 것입니다.

sudo pacman -Syu

패키지를 설치하거나 시스템을 업그레이드하려는 시도가 여전히 실패로 끝나면 터미널에서 알려준 내용에 따라 원인을 분리해야 합니다.

"잘못되거나 손상된 패키지"

어떤 식으로든 "pacman.conf"를 변경하면 pacman을 유발하는 문제가 발생할 수 있습니다. 패키지를 손상된 것으로 잘못 레이블을 지정합니다. 여기에서 가장 가능성이 높은 원인은 패키지 관리자 캐시의 부분(".part") 파일이며 이를 제거하는 것이 해결책입니다.

sudo find /var/cache/pacman/pkg/ -iname "*.part" -delete

설치하려는 패키지가 실제로 손상되어 Arch에 유효한 메타데이터를 제공하지 않을 가능성이 항상 있습니다. 이 경우 패키지 관리자가 업데이트할 때까지 기다려야 합니다. 패키지가 시스템에 설치되어 있고 업그레이드 중에 문제가 발생하면 다음을 사용하여 패키지를 제거하십시오.

sudo pacman -Rns [package name]

"데이터베이스를 잠글 수 없음"

데비안의 apt와 마찬가지로 Arch의 패키지 관리자는 작업 중에 잠금 파일을 만듭니다. 정전 또는 pacman이 발생한 경우 하드 인터럽트가 발생하여 잠금을 제거할 수 없었습니다. 잠금 파일을 남길 가능성이 매우 높습니다.

먼저 컴퓨터의 일부 프로세스가 여전히 파일을 사용하고 있는지 확인합니다.

sudo fuser /var/lib/pacman/db.lck
Linux에서 깨진 패키지를 수정하는 방법

위 이미지에서 ID가 121497인 프로세스가 파일 잠금을 사용하고 있습니다. 과정이 궁금하고 더 많은 정보를 원하시면 ps를 사용하세요. :

ps -p [PID#]
Linux에서 깨진 패키지를 수정하는 방법

제 경우에는 다른 pacman 인스턴스가 잠금 파일을 소유하고 있습니다. 잠금을 제거하는 가장 안전한 방법은 먼저 해당 프로세스를 종료하는 것입니다.

sudo kill [PID#]

이제 프로세스가 종료되었으므로 잠금 파일을 제거하십시오.

sudo rm /var/lib/pacman/db.lck

이제 가도 됩니다!

"충돌하는 파일/파일이 파일 시스템에 존재함"

이것은 pacman 업그레이드 중에 발생합니다. 충돌을 감지합니다. 문제를 수정하기 전에 패키지 관리자가 불평하는 파일의 경로에 주의하세요.

가장 먼저 찾아야 할 것은 파일 소유자가 누구인지입니다.

pacman -Qo [path to the file]

다른 패키지가 아닌 사용자가 소유한 경우 제거하세요.

sudo rm [path to the file]

다른 패키지가 소유하고 있다면 가장 안전한 방법은 패키지의 관리자가 이 충돌을 스스로 해결할 때까지 기다리는 것입니다. 하지만 때로는 이것이 선택 사항이 아니므로 지금 작업을 완료하고 싶을 때가 있습니다.

이를 수행하는 가장 간단한 방법은 --overwrite를 사용하는 것입니다. pacman의 플래그 . 이것은 일반적으로 안전하지 않습니다는 점만 알아두세요. 일부 응용 프로그램이 시스템에서 올바르게 작동하지 않을 수 있습니다. 이 작업을 실행하기 전에 백업을 수행하는 것이 좋습니다.

--overwrite 이 플래그를 사용하면 Arch의 패키지 관리자가 특정 파일에 대한 소유권 규칙을 무시하고 업데이트를 진행하도록 할 수 있습니다. 예:

pacman -Syu --overwrite [file name]

위의 명령이 작동하지 않으면 파일 이름을 절대 경로로 바꿉니다. 일부 사용자는 경로 앞의 선행 슬래시("/")를 제거하면 명령이 완고할 때 명령이 작동한다고 보고했습니다.

자주 묻는 질문

1. AUR 도우미로 Arch Fix를 적용할 수 있나요?

일반적으로 그렇습니다. 이 안내서의 명령에서 "pacman"을 AUR 도우미로 바꾸십시오. 예:

yay -Qo /path/to/file

2. 이 지침은 안전한가요?

대부분의 경우 여기에 있는 모든 지침은 다른 패키지 관리 작업만큼 안전합니다. 주요 예외는 잠금 파일을 제거하는 경우입니다. 그렇게 할 수 있는 방법이 있는 경우 해당 파일을 제거하기 전에 해당 파일을 사용할 수 있는 모든 프로세스를 종료하는 것이 항상 중요합니다. 시스템이 무엇을 하고 있는지 계속 알고 있어야 합니다. 어딘가에서 실행 중인 apt 또는 pacman의 인스턴스를 잊어버렸을 수도 있습니다!

가장 좋은 방법은 업그레이드 전에 항상 시스템을 백업하는 것입니다.

3. 업데이트를 중단하면 어떻게 해야 하나요?

Ctrl 키를 눌러 업데이트 프로세스 중단 + C , 패키지 관리자의 프로세스를 종료하거나 터미널을 너무 일찍 닫으면 패키지 데이터베이스가 어느 정도 손상되어 다른 것을 설치하려고 할 때 문제가 복잡해질 수 있습니다. 이 문제를 해결하려면 캐시를 지우고 업데이트를 반복하세요.

Debian/Ubuntu/Mint/Pop!_OS/etc에서:

sudo apt-get clean

Fedora/CentOS/RHEL:

sudo dnf clean all

아치에서:

sudo pacman -Scc

마무리

바라건대, 이 수정 사항 중 하나가 효과가 있었고 Linux 시스템에서 정상적으로 다시 작업하고 있습니다. 완전히 손에 잡히지 않은 상황을 처리하는 가장 좋은 방법은 이전 방식으로 돌아가려고 시도하는 것임을 기억하십시오. 당신이하고있는 일을 정확히 알지 못하는 한 더 많은 것을 추가하여 파손을 해결하기 위해 더 많은 것을 추가하려고 시도하지 마십시오. 결국 정리하기 더 어려운 부서진 물건이 엉켜서 엉망이 될 가능성이 있습니다.

불필요하고 깨진 패키지를 제거하기 위해 Linux 시스템을 정리해야 할 수도 있습니다. 원인이 구형 PC가 최신 소프트웨어를 지원할 수 없는 경우에는 이 세 가지 방법을 사용하여 기존 PC를 잘 사용할 수도 있습니다.