제목
[Package Manager] 패키지 관리도구란?
관련 게시글
[Package Manager] 패키지 관리도구란?
목차
0. 들어가면서
1. 패키지란?
2. 패키지 관리도구란?
0. 들어가면서
최근, OS를 rhel8로 마이그레이션을 하게 되어
소프트웨어 이관 작업을 진행했습니다.
운영환경에 적용하기 전,
기존 소프트웨어의 rpm을 VM에 여러번 설치하고,
각 소프트웨어 간 의존성을 테스트하면서
패키지 관리 도구의 편리함을 체감했습니다.
서버에서 소프트웨어 패키지를 설치, 패치, 제거하는 것은 일반적인 작업입니다.
많은 사람들이 사용하는 python, java, postgresql 등의 소프트웨어를 이용하고 설치합니다.
GUI 환경이라면 관련 홈페이지에 들어가서 다운로드 받을 수 있습니다.
cmd 환경에서는 wget, yum, dnf, rpm, apt-get, npm 등
다양한 명령어를 통해 소프트웨어 패키지를 설치합니다.
아래는 그 예시입니다.
# 현재 경로에 관련 의존성 패키지들과 함께 python38 rpm확장자로 다운로드하기
dnf download --resolve --downloaddir=./ python38
# osgeo소프트웨어 다운로드 관리 사이트에서 liblas를 tar로 다운로드하기
wget http://download.osgeo.org/liblas/libLAS-1.8.1.tar.bz2
# curl을 설치하기
apt-get install curl
# tar파일을 압축해제하기
tar xzvf /path/to/FILE.tar.gz
1. 패키지란?
패키지는 소프트웨어 배포의 기본단위입니다.
패키지는 소프트웨의 배포 및 설치가 용이하도록 미리 구성한 것입니다.
패키지는 소프트웨어와 소프트웨어의 실행에 필요한
라이브러리, 설정 파일, 문서 등 구성요소를 하나의 묶은 것입니다.
구성요소를 관리하는 것은 필수적입니다.
소프트웨어의 일관성을 유지하거나,
버전을 변경할 때,
문제를 분석할 때 유용합니다.
2. 패키지 관리 도구란?
패키지 관리 도구는 시스템에 설치된 소프트웨어를
효율적으로 관리하기 위해 사용되는 도구입니다.
패키지 관리도구는 원격지에 있는 패키지의 설치를 돕고,
명령어를 통해 소프트웨어 업데이트를 간단하게 합니다.
그리고 설치 시 발생할 수 있는 의존성 문제를 해결합니다.
2.1. 패키지 관리 도구의 필요성
수많은 소프트웨어와 라이브러리들이 상호 의존성을 가지므로,
오류가 발생할 수 있습니다.
아래는 그 예시입니다.
의존성 오류 메시지
ERROR: Could not find a version that satisfies the requirement termcolor~=1.1.0 (from tensorflow==2.4.0) (from versions: 2.0.0, 2.0.1, 2.1.0, 2.1.1, 2.2.0, 2.3.0, 2.4.0)
ERROR: No matching distribution found for termcolor~=1.1.0 (from tensorflow==2.4.0)
의존성 tar파일 구성요소
위 패키지들의 버전에 대한 정보를 어느 정도 알고 있는 것이 아니라면,
수동으로 관리할 경우 오류가 발생할 확률이 높습니다.
패키지 관리 도구를 사용하면,
모든 오류를 해결할 수 있는 것은 아니지만,
상대적으로 오류를 해결하기 쉬워집니다.
2.2. 패키지 관리 도구의 장점
패키지 관리 도구를 사용하는 것의 장점은 아래와 같습니다.
2.2.1. 간단한 제거
패키지를 제거할 때, 명령어를 사용하여 상황에 맞는 제거를 진행할 수 있습니다.
# 기본 제거
sudo apt remove -y 패키지명
sudo yum remove -y 패키지명
sudo dnf remove -y 패키지명
# 설정파일 포함 제거
sudo apt purge -y 패키지명
# 의존성 정리(필요없는 패키지 자동 정리)
sudo apt autoremove -y
sudo dnf autoremove -y
2.2.2. 서버 내 버전 확인
각 명령어를 사용하여,
서버 내에 설치된 패키지(+버전)를 확인할 수 있습니다.
apt list --installed 패키지명
yum list installed 패키지명
dnf list installed 패키지명
2.2.3. 간단한 다운그레이드
설치와 마찬가지로 다운그레이드 또한 간편합니다.
apt-get install 패키지명=버전
yum downgrade 패키지명
dnf downgrade 패키지명
2.3. 주의사항
패키지 관리도구를 사용하면 편리하지만,
몇 가지 주의해야 할 것이 있습니다.
2.3.1. 일관성
패키지 관리 도구와 수동 설치 방식을 병행하지 않도록 합니다.
어떤 때는 rpm으로 패키지를 설치하고, 또 어떤 때는 tar로 패키지를 설치하는 경우가 있을 수 있습니다.
패키지 관리 도구는 시스템에 설치된 패키지를 데이터베이스로 관리하여,
의존성, 업데이트, 제거 등의 작업을 일관되게 처리할 수 있도록 설계되어 있습니다.
반면, tar로 패키지를 설치하는 경우에는
의존성, 업데이트, 제거 등의 메타데이터가 기록되지 않기 때문에
해당 작업에 어려움이 발생할 수 있습니다.
2.3.2. Repository
사용하는 사용하는 레파지토리에 패키지가 존재하지 않을 수 있습니다.
따라서 해당 패키지를 사용하려면,
레파지토리를 추가해야 합니다.
아래는 RHEL에서 레파지토리를 추가하는 명령어 예시입니다.
sudo dnf install \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
참고자료
https://www.debian.org/doc/manuals/debian-faq/pkgtools.html#pkgprogs
Chapter 8. The Debian package management tools
8.1.6. Other package management tools
www.debian.org
https://documentation.ubuntu.com/server/how-to/software/package-management/index.html
Install and manage packages
The recommended way to install Debian packages (“deb” files) is using the Advanced Packaging Tool (APT), which can be used on the command line using the apt utility. The commands contained within a...
documentation.ubuntu.com
https://docs.fedoraproject.org/en-US/quick-docs/package-management/
Package management system
Package Management System Introduction Fedora is a distribution that uses a package management system. This system is based on rpm , the RPM Package Manager, with several higher level tools…
docs.fedoraproject.org
https://www.redhat.com/en/blog/how-manage-packages
Linux package management with YUM and RPM
Installing, patching, and removing software packages on Linux machines is one of the common tasks every sysadmin has to do. Here is how to get started wi...
www.redhat.com
'OS' 카테고리의 다른 글
[VM] VM OS - ssh 접근 (0) | 2024.08.17 |
---|---|
[CentOS] CentOS란? VM에 CentOS 9 설치하기(ISO 파일) (0) | 2024.08.15 |
[Home Server] SSH 서버-클라이언트 연결, 도커 설치 (0) | 2024.05.16 |
[Home Server] USB로 우분투 설치, 인터넷 연결, SSH 설정, 공유기 설정 (0) | 2024.05.08 |
[Linux Command Line] Cron 크론 (0) | 2024.01.12 |