웹사이트 검색

Yum을 유지하고 성능을 향상시키기 위해 'yum-utils'를 설치하고 사용하는 방법


Fedora가 dnf를 새로운 패키지 관리자 및 기본 패키지 관리 라이브러리로 채택하기 시작하더라도 다른 파생 배포판(예: Red Hat Enterprise Linux(Red Hat Enterprise Linux)에서 기존의 yum 패키지 관리자를 대체하지는 않습니다. >RHEL) 및 CentOS)가 냠냠만큼 안정적이고 더 견고한 것으로 입증될 때까지(Fedora Project wiki에 따르면, 11월 15일 기준, 2015, dnf는 아직 테스트 가능한 상태입니다). 따라서 귀하의 냠냠 관리 기술은 여전히 꽤 오랫동안 귀하에게 큰 도움이 될 것입니다.

이러한 이유로 이 가이드에서는 yum과 통합되어 기본 기능을 여러 가지 방법으로 확장하여 더욱 강력하고 사용하기 쉽게 만드는 유틸리티 모음인 yum-utils를 소개합니다.

RHEL/CentOS에 yum-utils 설치

Yum-utils는 기본 저장소(기본적으로 활성화되어 있음)에 포함되어 있으므로 Fedora 기반 배포판에 설치하는 것은 다음과 같이 쉽습니다.

yum update && yum install yum-utils

yum-utils에서 제공하는 모든 유틸리티는 다음 섹션에서 설명할 기본 패키지와 함께 자동으로 설치됩니다.

yum-utils 패키지에서 제공하는 유틸리티 살펴보기

yum-utils에서 제공하는 도구는 매뉴얼 페이지에 나열되어 있습니다.

man yum-utils

다음은 귀하가 관심을 가질 것으로 생각되는 yum 유틸리티 중 10가지입니다.

1. 패키지 디버그

debuginfo-install <패키지 이름>은 충돌이 발생할 경우 <패키지 이름>을 디버그하는 데 필요한 debuginfo 패키지(및 해당 종속성)를 설치합니다. 특정 패키지를 사용하는 애플리케이션을 개발하는 동안.

패키지(또는 기타 실행 파일)를 디버깅하려면 gdb(GNU 디버거)를 설치하고 이를 사용하여 디버깅 모드에서 프로그램을 시작해야 합니다.

예를 들어:

gdb $(which postfix)

위 명령은 실행할 작업을 입력할 수 있는 gdb 셸을 시작합니다. 예를 들어, run(아래 이미지 참조)은 프로그램을 시작하는 반면 bt(표시되지 않음)는 스택 추적(역추적이라고도 함)을 표시합니다. ) 프로그램 실행의 특정 지점으로 이어지는 함수 호출 목록을 제공합니다(이 정보를 사용하여 개발자와 시스템 관리자 모두 충돌 시 무엇이 잘못되었는지 파악할 수 있습니다).

기타 사용 가능한 작업과 예상 결과는 man gdb에 나열되어 있습니다.

2. 설치된 패키지 저장소 찾기

다음 명령은 현재 설치된 패키지 가 설치된 저장소를 보여줍니다.

find-repos-of-install httpd postfix dovecot

인수 없이 실행하면 find-repos-of-install은 현재 설치된 패키지의 전체 목록을 반환합니다.

3. 중복되거나 분리된 패키지 제거

package-cleanup은 다음 예에 표시된 것처럼 이전 커널 제거를 포함하여 패키지 정리, 중복, 고아 패키지(현재 구성된 저장소가 아닌 소스에서 설치된 프로그램) 및 기타 종속성 불일치를 관리합니다.

package-cleanup --orphans
package-cleanup --oldkernels

마지막 명령이 커널을 손상시키는 것에 대해 걱정할 필요가 없습니다. 더 이상 필요하지 않은 이전 커널 패키지(현재 실행 중인 버전보다 오래된 버전)에만 영향을 미칩니다.

4. 패키지 종속성 목록 찾기

repo-graph는 구성된 저장소에서 사용할 수 있는 모든 패키지에 대해 형식으로 전체 패키지 종속성 목록을 반환합니다. 또는 repo-graph--repoid= 옵션과 함께 사용하면 저장소별로 동일한 정보를 반환할 수 있습니다.

예를 들어 업데이트 저장소에 있는 각 패키지의 종속성을 살펴보겠습니다.

repo-graph --repoid=updates | less

위 명령에서는 더 쉬운 시각화를 위해 repo-graph의 출력을 less로 보내지만 나중에 검사하기 위해 로컬 파일로 리디렉션할 수도 있습니다.

repo-graph --repoid=updates > updates-dependencies.txt

두 경우 모두 iputils 패키지가 systemdopenssl-libs에 종속되어 있음을 알 수 있습니다.

5. 해결되지 않은 종속성 목록 확인

repoclosure는 구성된 저장소의 메타데이터를 읽고, 여기에 포함된 패키지의 종속성을 확인하고, 각 패키지에 대해 해결되지 않은 종속성 목록을 표시합니다.

repoclosure

6. 디렉터리에서 최신 또는 가장 오래된 패키지를 확인하는 방법

repomanage는 rpm 패키지가 있는 디렉토리를 쿼리하고 디렉토리에 있는 최신 또는 가장 오래된 패키지 목록을 반환합니다. 이 도구는 다양한 프로그램의 여러 .rpm 패키지를 저장하는 디렉토리가 있는 경우 유용할 수 있습니다.

인수 없이 실행하면 repomanage가 최신 패키지를 반환합니다. --old 플래그와 함께 실행하면 가장 오래된 패키지가 반환됩니다.

ls -l
cd rpms
ls -l rpms
repomanage rpms

rpm 패키지의 이름을 변경해도 repomanage 작동 방식에는 영향을 미치지 않습니다.

7. Yum 저장소를 쿼리하여 패키지에 대한 정보 얻기

repoquery는 yum 저장소를 쿼리하고 패키지 설치 여부(종속성, 패키지에 포함된 파일 등)에 대한 추가 정보를 가져옵니다.

예를 들어, 아래에서 볼 수 있듯이 htop(Linux Process Monitoring)은 현재 이 시스템에 설치되어 있지 않습니다.

which htop
rpm -qa | grep htop

이제 기본 설치에 포함된 파일과 함께 htop의 종속성을 나열한다고 가정합니다. 이렇게 하려면 각각 다음 두 명령을 실행합니다.

repoquery --requires htop
repoquery --list htop

8. 설치된 모든 RPM 패키지를 Zip 파일로 덤프

yum-debug-dump를 사용하면 설치된 모든 패키지의 전체 목록, 모든 저장소에서 사용 가능한 모든 패키지, 중요한 구성 및 시스템 정보를 압축 파일로 덤프할 수 있습니다.

발생한 문제를 디버깅하려는 경우에 유용할 수 있습니다. 편의를 위해 yum-debug-dump는 파일 이름을 yum_debug_dump--로 지정합니다. 이를 통해 시간 경과에 따른 변경 사항을 추적할 수 있습니다. .

yum-debug-dump

압축된 텍스트 파일과 마찬가지로 zless 명령을 사용하여 내용을 볼 수 있습니다.

zless yum_debug_dump-mail.linuxnewz.com-2015-11-27_08:34:01.txt.gz

yum-debug-dump에서 제공한 구성 정보를 복원해야 하는 경우 yum-debug-restore를 사용하여 수행할 수 있습니다.

yum-debug-restore yum_debug_dump-mail.linuxnewz.com-2015-11-27_08:34:01.txt.gz

9. Yum 저장소에서 소스 RPM 다운로드

yumdownloader는 종속성을 포함하여 저장소에서 소스 RPM 파일을 다운로드합니다. 인터넷 액세스가 제한된 다른 컴퓨터에서 액세스할 수 있는 네트워크 저장소를 만드는 데 유용합니다.

Yumdownloader를 사용하면 바이너리 RPM뿐만 아니라 소스 RPM도 다운로드할 수 있습니다(--source 옵션과 함께 사용되는 경우).

예를 들어, rpm을 사용하여 프로그램을 설치하는 데 필요한 RPM을 저장할 htop-files라는 디렉터리를 생성해 보겠습니다. 그렇게 하려면 yumdownloader와 함께 --resolve 스위치를 사용해야 합니다.

mkdir htop-files
cd htop-files
yumdownloader --resolve htop
rpm -Uvh 

10. 원격 Yum 저장소를 로컬 디렉터리에 동기화

reposyncyumdownloader와 밀접하게 관련되어 있지만(사실 거의 동일한 옵션을 지원함) 상당한 이점을 제공합니다. 바이너리 또는 소스 RPM 파일을 다운로드하는 대신 원격 저장소를 로컬 디렉터리에 동기화합니다.

잘 알려진 EPEL 저장소를 현재 작업 디렉토리 내의 epel-local이라는 하위 디렉토리에 동기화해 보겠습니다.

man reposync
mkdir epel-local
reposync --repoid=epel --download_path=epel-local

이 프로세스는 8867 패키지를 다운로드하는 데 시간이 꽤 걸립니다.

동기화가 완료되면 du 명령을 사용하여 새로 생성된 EPEL 저장소의 미러가 사용하는 디스크 공간의 양을 확인해 보겠습니다.

du -sch epel-local/*

이제 이 EPEL 미러를 유지하거나 원격 미러를 사용하는 대신 패키지를 설치하는 데 사용할지 여부는 사용자에게 달려 있습니다. 첫 번째 경우에는 그에 맞게 /etc/yum.repos.d/epel.repo를 수정해야 한다는 점을 명심하세요.

11. 완료되지 않거나 중단된 Yum 거래 수정

yum-complete-transaction은 시스템에서 완료되지 않거나 중단된 yum 트랜잭션을 포착하여 완료하려고 시도하는 yum-utils 프로그램의 일부입니다.

예를 들어 yum 패키지 관리자를 통해 Linux 서버를 업데이트할 때 다음과 같은 경고 메시지가 표시되는 경우가 있습니다.

완료되지 않은 거래가 남아 있습니다. 완료하려면 먼저 yum-complete-transaction을 실행하는 것이 좋습니다.

이러한 경고 메시지를 수정하고 문제를 해결하기 위해 yum-complete-transaction 명령이 완료되지 않은 트랜잭션을 완료하기 위해 그림에 나타나며 transaction-all* 에서 불완전하거나 중단된 yum 트랜잭션을 찾습니다. 및 transaction-done* 파일은 /var/lib/yum 디렉토리에서 찾을 수 있습니다.

불완전한 yum 트랜잭션을 완료하려면 yum-complete-transaction 명령을 실행하세요.


yum-complete-transaction --cleanup-only

이제 불완전한 트랜잭션 경고 없이 yum 명령이 실행됩니다.


yum update

참고: 이 팁은 우리의 단골 독자인 Mr. 토마스 여기 댓글 섹션에 있습니다.

요약

이 글에서는 yum-utils를 통해 제공되는 가장 유용한 유틸리티 중 일부를 다루었습니다. 전체 목록을 보려면 매뉴얼 페이지(man yum-utils)를 참조하세요.

또한 이러한 도구 각각에는 별도의 매뉴얼 페이지(예: man reposync 참조)가 있는데, 이는 해당 도구에 대해 자세히 알아보고 싶은 경우 참조해야 하는 주요 문서 소스입니다.

잠시 시간을 내어 yum-utils의 매뉴얼 페이지를 확인하면 별도의 기사에서 더 깊이 다루고 싶은 다른 도구를 찾을 수 있을 것입니다. 그렇다면 또는 이 기사에 대한 질문, 의견 또는 제안 사항이 있는 경우 아래 의견 양식을 사용하여 메모를 남겨서 어떤 내용인지 알려 주시기 바랍니다.