Yum Local Repository
Tags: linux, bash
Published: 2023-02-09 05:35:04

> Yum Repository는 패키지를 모아놓은 저장소입니다. Yum을 통해 패키지를 설치 시,
활성화된 Yum 저장소에서 패키지를 다운로드하여 설치하기 때문에 패키지가 Yum 저장소에 없을 경우 설치할 수 없습니다. 이런 경우에는 사용자가 직접 리포지토리를 만들고 유지 관리해야 하며 **수동**으로 yum 패키지 관리자에 리포지토리 구성을 추가해야 합니다. 이러한 유형의 리포지토리는 종종 사용자 지정 패키지 또는 공식 리포지토리에서 사용할 수 없는 패키지에 사용됩니다.
> 

<aside>
👉 로컬 저장소를 자세히 살펴보기 전에 먼저 'yum' 명령어의 sytanx에 대해 설명드리겠습니다.

</aside>

# Yum 명령어

> **YUM** 이란 Yellowdog Updater Modified 의 약자로, RPM 기반의 시스템을 위한 자동 업데이터이자 소프트웨어와 같은 패키지 설치/ 삭제 도구입니다.
> 

- 명령어 사용법
    
    
    | 명령어 | 정 |
    | --- | --- |
    | yum repolist | yum 패키지를 설치하는 원격지 저장소 정보 확인 리눅스 경로에선
    /etc/yum.repos.d/ 하위에 원격지 저장소 정보들이 있음 |
    | yum clean all | 캐쉬된 데이터를 삭제 |
    | yum install (패키지명) | 패키지를 설치(의존성 있는 패키지까지 설치) |
    | yum update (패키지명) | 해당 패키지의 새 버전이 있으면 update한다. |
    | yum remove (패키지명) | 패키지를 삭제(의존성 있는 패키지까지 삭제) |
    | yum search (키워드) | 키워드로 시작하는 패키지를 검색 |
    | yum list | 서버에 있는 패키지의 목록을 보여줌 |
    | yum list updates | 설치된 패키지 중 업데이트된 패키지만 확인 |
    | yum list available | 설치된 패키지 리스트를 확인 |

# Local Repository Example

- **수동 저장소 생성**

다음은 수동으로 로컬 yum 저장소를 생성하고 구성하는 방법의 예입니다:

리포지토리의 디렉토리를 만듭니다:

```bash
mkdir /opt/myrepo
```

리포지토리에 포함할 패키지를 새로 만든 디렉토리로 다운로드합니다:

```bash
wget http://example.com/mypackage-1.0.rpm -P /opt/myrepo
wget http://example.com/mypackage2-1.0.rpm -P /opt/myrepo
```

*GNU Wget은 HTTP 통신 또는 FTP 통신을 사용해 서버에서 파일 또는 콘텐츠를 다운로드할 때 사용하는 소프트웨어입니다.

repodata 디렉토리를 생성합니다:

```bash
sudo createrepo /opt/myrepo
```

*’yum’ 패키지를 오프라인에서 다운로드 해야할 때 dependency 문제를 방지하기 위해 ‘createrepo’ 를 사용하여 설치셋을 만듭니다.

/etc/yum.repos.d/ 디렉토리에 다음 내용을 포함하는 새 .repo 파일을 생성합니다:

```bash
[myrepo]
name=My Repository
baseurl=file:///opt/myrepo
enabled=1
gpgcheck=0
```

yum 메타데이터를 업데이트합니다:

```bash
sudo yum clean metadata
sudo yum makecache
```

이렇게 하면 yum 명령을 사용하여 새로 생성된 리포지토리에서 패키지를 설치, 업데이트 및 제거할 수 있습니다.

위의 예에서는 wget 명령을 사용하여 패키지를 다운로드하고 repo 명령을 사용하여 repodata 디렉토리를 생성했습니다. 패키지를 리포지토리 디렉토리에 복사하거나 rsync를 사용하는 등의 다른 방법을 사용하여 패키지를 리포지토리에 추가할 수 있습니다. 또한 보안 문제를 방지하기 위해 GPG 키로 패키지에 서명하는 것을 고려할 수 있습니다.

또한 이 예에서는 파일 프로토콜(file://)을 사용하여 저장소에 액세스했으며, http, https, ftp 등의 다른 프로토콜도 사용할 수 있습니다.

위의 내용은 예에 불과하며, 요구 사항 및 패키지 가용성에 따라 사용자 정의할 수 있습니다.

- **자동 저장소 생성**

다음은 자동 로컬 yum 저장소를 생성하고 구성하는 방법의 예입니다:

리포지토리의 디렉토리를 만듭니다:

```bash
mkdir /opt/localrepo
```

리포지토리에 포함할 패키지를 새로 만든 디렉토리에 복사합니다:

```bash
cp /path/to/package1.rpm /opt/localrepo
cp /path/to/package2.rpm /opt/localrepo
```

repodata 디렉토리를 생성합니다:

```bash
sudo createrepo /opt/localrepo
```

/etc/yum.repos.d/ 디렉토리에 다음 내용을 포함하는 새 .repo 파일을 생성합니다:

```bash
[localrepo]
name=Local Repository
baseurl=file:///opt/localrepo
enabled=1
gpgcheck=0
```

다음 내용을 사용하여 /etc/yum.repos.d/localrepo.repo라는 새 yum configuration 파일을 생성합니다:

```bash
[localrepo]
name=Local Repository
baseurl=file:///opt/localrepo
enabled=1
gpgcheck=0
```

yum 메타데이터를 업데이트합니다:

```bash
sudo yum clean metadata
sudo yum makecache
```

이제 yum install <package_name> 명령을 실행하면 yum이 먼저 로컬 저장소에서 패키지를 검색합니다. 로컬 리포지토리에서 패키지를 찾을 수 없는 경우 구성된 다른 리포지토리에서 패키지를 검색합니다.

위의 예에서 저장소에 액세스하기 위해 파일 프로토콜(file://)을 사용했으며 http, https, ftp 등의 다른 프로토콜도 사용할 수 있습니다.

또한 보안 문제를 방지하기 위해 GPG 키로 패키지에 서명하는 것을 고려할 수 있습니다.
gpg 명령을 사용하여 패키지에 서명하고 .repo 파일의 gpgcheck 값을 1로 업데이트할 수 있습니다.