Rocky Linux / DNF 사용법
Rocky Linux에서 프로그램을 설치하거나 업데이트할 때 가장 많이 사용하는 명령어 중 하나가 dnf입니다. dnf를 사용하면 패키지를 직접 다운로드할 필요 없이 저장소(Repository)에서 필요한 패키지를 검색하고 설치할 수 있으며, 설치된 패키지의 업데이트와 삭제, 시스템 전체 업데이트도 간단하게 처리할 수 있습니다.
Rocky Linux뿐만 아니라 RHEL, AlmaLinux, Fedora 등 RPM 기반 리눅스를 관리한다면 dnf 사용법을 알아두는 것이 좋습니다.
패키지 검색하기
설치하려는 패키지의 정확한 이름을 모르는 경우 dnf search를 사용할 수 있습니다.
# dnf search 키워드
예를 들어 nginx와 관련된 패키지를 검색하려면 다음과 같이 실행합니다.
# dnf search nginx
패키지 이름과 설명을 대상으로 검색하여 관련된 패키지 목록을 보여줍니다. 특정 프로그램을 설치하고 싶은데 패키지 이름을 정확하게 모를 때 유용한 명령어입니다.
패키지 설치하기
Rocky Linux에서 dnf를 이용하여 패키지를 설치하는 기본 명령어는 다음과 같습니다.
# dnf install 패키지명
예를 들어 vim을 설치하려면 다음과 같이 실행합니다.
# dnf install vim
설치를 진행하기 전에 설치되는 패키지와 용량 등의 정보가 표시되고 계속 진행할 것인지 묻습니다.
확인 과정 없이 바로 설치하고 싶다면 -y 옵션을 추가합니다.
# dnf install -y vim
서버를 자동으로 구성하는 스크립트 등에서는 -y 옵션을 자주 사용합니다. 하지만 어떤 패키지가 함께 설치되는지 확인해야 하는 상황에서는 -y를 사용하지 않고 내용을 확인한 후 진행하는 것이 좋습니다.
여러 패키지 한 번에 설치하기
여러 개의 패키지를 한 번에 설치할 수도 있습니다.
# dnf install 패키지1 패키지2 패키지3
예를 들어 다음과 같이 실행할 수 있습니다.
# dnf install vim wget curl
확인 과정 없이 설치하려면 다음과 같이 합니다.
# dnf install -y vim wget curl
여러 가지 기본 도구가 필요한 서버를 구성할 때 편리합니다.
패키지 삭제하기
설치된 패키지를 삭제하려면 remove를 사용합니다.
# dnf remove 패키지명
예를 들어 vim을 삭제하려면 다음과 같이 실행합니다.
# dnf remove vim
확인 과정 없이 삭제하려면 -y 옵션을 추가합니다.
# dnf remove -y vim
패키지를 삭제할 때는 해당 패키지와 의존 관계에 있는 다른 패키지가 함께 제거될 수 있으므로 실제로 삭제되는 패키지 목록을 확인하는 것이 좋습니다.
설치된 패키지 확인하기
현재 시스템에 설치된 패키지 목록을 확인하려면 다음 명령어를 사용합니다.
# dnf list installed
많은 패키지가 출력될 수 있으므로 특정 패키지가 설치되어 있는지 확인하려면 패키지 이름을 지정하는 것이 편리합니다.
예를 들어 httpd 패키지를 확인하려면 다음과 같이 실행합니다.
# dnf list installed httpd
RPM 명령어를 이용해서도 설치된 패키지를 확인할 수 있습니다.
# rpm -qa
특정 문자열이 포함된 패키지만 확인하고 싶다면 grep과 조합할 수도 있습니다.
# rpm -qa | grep httpd
패키지 정보 확인하기
특정 패키지에 대한 상세 정보를 확인하려면 dnf info를 사용합니다.
# dnf info 패키지명
예를 들어 nginx 패키지의 정보를 확인하려면 다음과 같이 실행합니다.
# dnf info nginx
패키지의 버전, 아키텍처, 저장소, 설명 등의 정보를 확인할 수 있습니다. 패키지를 설치하기 전에 어떤 버전이 제공되는지 확인할 때 유용합니다.
업데이트 가능한 패키지 확인하기
현재 설치된 패키지 중 업데이트할 수 있는 패키지가 있는지 확인하려면 다음 명령어를 실행합니다.
# dnf check-update
업데이트 가능한 패키지가 있다면 패키지 이름과 버전 등의 정보가 출력됩니다.
참고로 dnf check-update는 업데이트 가능한 패키지가 발견되었을 때 일반적인 성공 종료 코드인 0이 아니라 100을 반환할 수 있습니다. 따라서 셸 스크립트에서 이 명령어를 사용할 때는 종료 코드 처리에 주의해야 합니다.
특정 패키지 업데이트하기
특정 패키지만 업데이트하려면 다음과 같이 실행합니다.
# dnf upgrade 패키지명
예를 들어 nginx를 업데이트하려면 다음과 같이 합니다.
# dnf upgrade nginx
환경에 따라 다음과 같이 update를 사용한 명령도 볼 수 있습니다.
# dnf update nginx
일반적인 Rocky Linux 관리에서는 upgrade를 사용해도 됩니다.
시스템 전체 업데이트하기
Rocky Linux에 설치되어 있는 패키지를 전체적으로 업데이트하려면 다음 명령어를 실행합니다.
# dnf upgrade
확인 과정 없이 진행하려면 다음과 같이 합니다.
# dnf upgrade -y
시스템 업데이트에는 커널이나 주요 라이브러리가 포함될 수 있습니다. 업데이트 후 새로운 커널이 설치되었거나 중요한 시스템 구성 요소가 변경되었다면 필요에 따라 시스템을 재부팅합니다.
운영 중인 서버라면 무조건 재부팅하기보다는 서비스 영향과 업데이트 내용을 확인한 후 재부팅 일정을 잡는 것이 좋습니다.
사용 가능한 패키지 목록 확인하기
저장소에서 설치할 수 있는 패키지를 확인하려면 다음과 같이 실행합니다.
# dnf list available
설치된 패키지를 포함하여 패키지 목록을 확인하려면 다음 명령어를 사용할 수 있습니다.
# dnf list
패키지가 매우 많기 때문에 실제 서버 관리에서는 특정 패키지를 검색하거나 이름을 지정하는 방법이 더 편리합니다.
저장소 목록 확인하기
Rocky Linux에서 활성화되어 있는 저장소를 확인하려면 다음 명령어를 사용합니다.
# dnf repolist
활성화된 저장소가 표시됩니다.
비활성화된 저장소를 포함하여 전체 저장소를 확인하려면 다음과 같이 실행합니다.
# dnf repolist --all
패키지를 설치할 수 없거나 원하는 버전의 패키지가 검색되지 않을 때는 저장소가 정상적으로 활성화되어 있는지 확인해 보는 것이 좋습니다.
특정 저장소를 지정하여 사용하기
특정 작업에서 저장소 하나를 추가로 활성화하려면 --enablerepo 옵션을 사용할 수 있습니다.
# dnf --enablerepo=저장소ID install 패키지명
반대로 특정 저장소를 제외하려면 --disablerepo를 사용할 수 있습니다.
# dnf --disablerepo=저장소ID install 패키지명
저장소 문제를 분석하거나 특정 저장소의 패키지만 사용하고 싶을 때 활용할 수 있습니다.
불필요한 패키지 삭제하기
다른 패키지의 의존성 때문에 설치되었지만 현재는 더 이상 필요하지 않은 패키지를 삭제하려면 다음 명령어를 사용할 수 있습니다.
# dnf autoremove
실제로 삭제되는 패키지를 확인한 후 진행하는 것이 안전합니다.
확인 없이 삭제하려면 다음과 같이 할 수 있습니다.
# dnf autoremove -y
운영 서버에서는 중요한 패키지가 제거되지 않는지 목록을 확인한 후 실행하는 것을 권장합니다.
dnf 캐시 삭제하기
dnf는 패키지와 저장소 관련 데이터를 캐시에 저장합니다. 캐시를 정리하려면 다음 명령어를 실행합니다.
# dnf clean all
저장소 캐시를 다시 생성하려면 다음과 같이 실행할 수 있습니다.
# dnf makecache
패키지 검색이나 설치 과정에서 저장소 메타데이터와 관련된 문제가 발생할 때 다음과 같이 캐시를 삭제하고 다시 생성해 보는 것도 문제 해결 방법 중 하나입니다.
패키지 다시 설치하기
이미 설치된 패키지를 다시 설치해야 한다면 reinstall을 사용할 수 있습니다.
# dnf reinstall 패키지명
예를 들어 httpd를 다시 설치하려면 다음과 같이 실행합니다.
# dnf reinstall httpd
패키지에 포함된 파일이 손상되었거나 실수로 삭제된 경우 등에 사용할 수 있습니다.
dnf 명령어 사용 기록 확인하기
dnf를 이용해 수행했던 설치, 삭제, 업데이트 등의 작업 기록을 확인할 수 있습니다.
# dnf history
각 작업에는 ID가 표시됩니다. 특정 작업의 상세 내용을 확인하려면 다음과 같이 실행합니다.
# dnf history info ID
예를 들어 작업 ID가 10이라면 다음과 같습니다.
# dnf history info 10
어떤 패키지가 언제 설치되거나 업데이트되었는지 확인해야 할 때 유용합니다.
dnf 사용 시 주의할 점
dnf는 간단한 명령어로 시스템의 중요한 패키지를 설치하거나 삭제할 수 있기 때문에 운영 서버에서는 몇 가지 사항에 주의해야 합니다.
특히 다음과 같이 전체 시스템을 업데이트하는 명령어는 실행하기 전에 서비스 영향을 확인하는 것이 좋습니다.
# dnf upgrade
커널, OpenSSL, 데이터베이스 관련 라이브러리 등 중요한 패키지가 업데이트될 수 있기 때문입니다.
또한 다음 명령어를 실행할 때도 삭제되는 패키지 목록을 확인하는 것이 좋습니다.
# dnf remove 패키지명
# dnf autoremove
편의를 위해 -y 옵션을 사용할 수 있지만, 운영 서버에서는 무조건 -y를 추가하기보다 변경되는 패키지 목록을 먼저 확인하는 것이 안전합니다.