티스토리 뷰
yum과 dnf는 레드햇 계열 리눅스의 인터넷 기반 패키지 매니저다.
dnf(또는 yum) install 명령어로 어떤 패키지를 설치하려고 하면, 인터넷에서(더 구체적으로 말하면 리포지터리 파일 내 baseurl로 지정된 미러사이트 주소로 가서) 관련 파일을 받아와 설치한다. 그런데 인터넷이 연결되지 않았을 땐 어떻게 해야 할까? Rocky 리눅스의 경우 OS를 설치하면 기본적으로 패키지 파일들이 같이 따라온다. OS 설치 파일(CD-ROM)이 있다면 그 내부의 패키지 파일을 이용해서 dnf install 할 수 있게 설정할 수 있다.
먼저 CD(여기서는 이미지파일을 VMWare에)를 넣어준 상태여야 한다. CD-ROM은 자동으로 마운트되는데, lsblk로 마운트포인트를 확인해준다.

패키지 파일들은 Rocky-8-8-x86_64-dvd/BaseOS(,AppStream,Extras 등)/Packages 내부에 있다. 너무 많아서 알파벳순으로 디렉터리가 또 나눠져있다. 리포지터리파일을 만들어주기 위해서 그것까지는 필요 없고, BaseOS와 AppStream 디렉터리가 있는 디렉터리까지의 경로만 알면 된다. 여기서는 /run/media/root/ Rocky-8-8-x86_64-dvd 이다.
너무 기니까 새로 디렉터리를 만들어 마운트해준 후 사용해보겠다.
1. 디렉터리 만들어 패키지 파일이 든 장치 마운트해주기
마운트할 디렉터리 만들기 mkdir /DVD

마운트 mount /dev/sr0 /DVD
마운트 된 것 확인 lsblk

2. 리포지터리 파일 만들기
/etc/yum.repos.d/ 여기에 .repo로 끝나는 이름의 파일을 하나 새로 만들어준다.
vi /etc/yum.repos.d/DVD.repo

[BaseOS_Uniss]
name=Rocky8 BaseOS-Uniss
baseurl=file:///DVD/BaseOS
gpgcheck=0
[AppStream_Uniss]
name=Rocky8 AppStream-Uniss
baseurl=file:///DVD/AppStream
gpgcheck=0
위의 내용을 추가해주면 된다.
[] (대괄호) 안과 name=어쩌구 부분은 말그대로 이름이므로 임의로 지정해도 된다. 설치할 때 확인을 위해 알아볼 수 있게 Uniss라고 추가로 써주었다.
중요한 것은 baseurl이다.
file:// 외부가 아닌 내부 파일에서 찾아오겠단 뜻이고 그 뒤에 바로 이어서 파일을 찾을 BaseOS, AppStream의 경로를 절대경로로 입력해주면 된다. 절대경로이기 때문에 슬래쉬가 결과적으로 3개가 있는 게 맞다.
그리고 꼭 BaseOS와 AppStream까지 대소문자 구분해서 잘 써주기.

저장.
3. 인터넷 연결 끊기
정확한 확인을 위해 커넥션도 다운시켜주었다.
nmcli con(nection) down ens33

4. 패키지 설치 시도
dnf install httpd

BaseOS와 AppStream 이름을 보니 내가 만든 리포지터리 파일에서 가져온 것을 확인할 수 있다. 그런데 잘 보니, 내가 만든 파일이 아닌 곳에서 가져온 것들도 몇 개 보인다. 저장소가 그냥 appstream인 것들... 그래서인지 y를 입력하고 설치를 하려는데 오류가 발생한다.

인터넷을 끊어놨는데, 미러사이트에 들어가서 가져와야 하는 꾸러미가 있어서 그런 것 같다. 왜 그런가 생각해보니 기존의 /etc/yum.repos.d 아래에 있는 repo 파일들이 그대로 있어서인 것 같다. 그래서 순서가 좀 틀렸지만 이제라도 지워주기로.
5. 늦었지만 기존의 repo파일 지우기
한번에 싹 날릴것이기 때문에 repo 파일들이 있는 곳으로 이동 cd /etc/yum.repos.d/
전부 지우기 전에 내가 만든 DVD.repo 파일을 안전하게 /root 로 복사 cp DVD.repo /root
잘 복사되었나 확인 후, repo 파일을 다 지워버렸다. 위험하게 rm -rf ./*
잘 지워졌나 확인 후, /root 로 옮겨놓았던 DVD.repo 파일을 다시 가져오기 cp /root/DVD.repo ./
확인까지 완료.

다시 설치를 시도해본다.
dnf install httpd

이제 전부 내가 만든 repo 파일에서 저장소 정보를 가져오는 것을 확인할 수 있다.

y 입력해서 설치를 진행해보니 아까와는 다르게 오류 없이 설치가 완료되었다!!
rpm -qa | grep httpd 로 설치가 잘 되어있는지 확인.
끗!
실습은 RHEL(Red Hat Enterprise Linux)의 클론 버전인 Rocky Linux 8버전을 사용했으며 Rocky Linux 9버전에서도 거의 문제없이 실행된다. 9버전에 와서 달라진 점은 따로 기입했지만 빠진 것이 있을 수 있다.
'리눅스' 카테고리의 다른 글
| [Linux] RAID 구성/복구/삭제 (Rocky 8) (0) | 2023.10.13 |
|---|---|
| [Linux] ssh 연결 + 키 교환, root접속 차단, scp(Secure Copy) (Rocky 8) (0) | 2023.10.12 |
| [Linux] Telnet텔넷 원격 접속 + sudo 권한 주기 (Rocky 8) (0) | 2023.10.08 |
| [Linux] inode와 링크 : 소프트링크/하드링크 (Rocky8) (0) | 2023.10.08 |
| [Linux] 마운트mount : 파티션 생성과 포맷 (Rocky 8) (0) | 2023.10.08 |