favicon Jay Lee DevLog

728x90
300x250

리눅스를 사용하면 보통 리눅스 종류에 따라 yum이나 apt같은 명령어를 사용하여

pkg를 설치, 삭제한다. 이게 불가능한 경우에는 설치 패키지를 직접 만들어서 수동으로 설치하는 경우도 많지만

그놈의 의존성 때문에 여간 불편한게 아니다.

이러한 경우를 해결하기 위해 local repository를 만들어 사용한다.


1. local repository란?

일반적인 repository란 내가 yum을 이용할 때 해당 패키지들이 저장되어 있는 주소라고 생각하면 된다.

그럼 이러한 repository에 대한 정보는 어디서 확인 가능한가?

위처럼 /etc/yum.repos.d 경로에 이런식으로 저장되어 있다.

기본적으로 os를 설치하면 생성되는 파일들이라고 보면 된다.

하나 정도만 안에 내용을 살펴보면,

[appstream]
name=Rocky Linux $releasever - AppStream
mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=AppStream-$releasever
#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/AppStream/$basearch/os/
gpgcheck=1
enabled=0
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial

 

이런식으로 되어 있고,

그중 중요한 부분은 

mirrorlist : 다운받을 pkg가 들어있는 경로

enabled : 해당 repo를 사용할건지 안할건지

이정도만 알고 나머지는 필요할 때 찾아보면 된다.

 

그럼 현재 사용중인 repo들을 확인해보자.

yum repolist

해당 명령을 수행하면, 현재 repo들의 list가 나오고,

yum repolist enabled

 

repo 리스트 중에 현재 사용 상태로 되어 있는 리스트 출력

yum repolist disabled

반대로 미사용 상태의 리스트를 출력한다.


2. local repository 만들기

먼저 iso라는 파일에 대해 짧게 설명하면,

현재 내가 사용중인 os를 그 상태 그대로 저장하여 만든 파일이라고 보면 된다.

때문에 해당 iso에서는 os에 설치되어 있던 pkg들이 모두 포함되어 있다.

 

그렇다면 이 글에서 말하는 iso는

현재 내가 사용중인 os의 상태 그대로를 새로운 환경에 설치하기 위한 파일이라고 보면 된다.

iso파일이 있다는 전제하에 다음을 진행하면 된다.

 

나는 해당 iso 파일을 준비해뒀다.

이제 남은건 간단하다.

 

1. iso를 내가 원하는 경로에 mount

mkdir -p "mount 경로"
mount -o loop "iso 경로" "mount 경로"

 

2. mount하면 repo 파일이 해당 경로에 생긴다.

해당 명령을 실행하고 mount 경로로 이동해보면,

위와 같이 파일들이 생성되어 있는데,

이건 iso 파일마다 다 다르다.

나는 여기서 AppStream과 BaseOS를 repo로 사용할거다.

맨 밑에 있는 media.repo 파일을 수정해보자.

[BaseOS]
name=Rocky Linux 8.10 Base
mediaid=None
metadata_expire=-1
gpgcheck=0
cost=500
enabled=1
baseurl=file:///mnt/mount_iso/BaseOS/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[AppStream]
name=Rocky Linux 8.10 AppStream
mediaid=None
metadata_expire=-1
gpgcheck=0
cost=500
enabled=1
baseurl=file:///mnt/mount_iso/AppStream/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

위와 같이 만들어주고,

간단히 중요부분을 보자면,

baseurl에 보면 내가 mount한 경로로 설정되어 있는걸 확인할 수 있다.

내 mount 경로는 /mnt/mount_iso 이고 해당 경로에 BaseOS 경로를 repo로 사용하기 위해 위처럼 설정했다.

AppStream도 똑같은 이유다.

 

3. 해당 파일을 편집한 후 /etc/yum.repos.d 경로에 넣어준다.

이제 위에서 만든 파일을 해당 경로로 옮겨준다.

나는 이름만 rhel8dvd.repo로 바꿔서 넣어줬다.

4. 기존에 enabled 되어 있던 repo 리스트를 모두 disable 해준다.

yum repolist enabled # 리스트 조회
yum-config-manager --disable "저장소 ID"

저장소 ID는 repo 파일 내에 있는

해당 부분이 된다.

 

5. 내가 만든 repo만 enable 한 후 yum 을 사용하면 끝.

yum-config-manager --enable "저장소 ID"

나의 경우
yum-config-manager --enable BaseOS
yum-config-manager --enable AppStream

 

여기까지 했으면,

yum update

 

yum 명령을 사용하면 된다.

 

그러면 iso 파일 내에 있는 pkg만 local repository를 사용하여 설치가 가능해진다.

728x90
반응형

+ Recent posts

/ /

Contact

📧 dlwjdwls60@naver.com


블로그에 내용이 있으면 해당 글을 보여주며, 없으면 내용이 복사된 채로 ChatGPT로 연결됩니다.