2024. 2. 12. 17:51ㆍLinux/CentOS7
Package를 관리에는 크게 세가지 방법이 있다
yum
(Yellodog Update Modified)
-yum으로 설치시 의존성 문제까지 해결해준다.
(의존성 : 설치시 필수 프로그램)
-배포파일을 만들어둔 회사에서 repository에올려주지 않으면
yum명령어 사용이 불가능하다
-항상 최신 버전이 아닌 안정화된 버전을 올려둔다
-설치 경로 지정불가
rpm
(Redhat Package Manager)
의존성 문제에서 완벽히 자유롭지 못하다
-i 일반적인 설치 옵션
-v 설치 진행과정을 보기위한 옵션
-h #모양으로 진행과정을 표시해준다.
-U 패키지가 설치되있지 않거나 높은 버전이있으면 업데이트한다.
-V RPM 패키지가 설치된 이후 RPM 데이터베이스에 저장된 내용과 원본의 내용을 비교하여 검증
source 설치
비교적 어렵고 복잡한 설치방법
커스터 마이징이 가능하다(디렉토리 지정, 필요한 라이브러리만 설치등)
의존성 문제도 직접 해결해야한다.
yum 명령어
centos 8 부터는 dnf 로 바뀌었다. (yum과 같이 공존해 사용한다.)
yum list로 repository(저장소)에 업로드된 파일들을 살펴볼 수 있다.
정말 많아서 확인이 불가능하다. (1만개 이상)
그래서 자신이 원하는 파일을 찾으려면
grep이라는 명령어를 사용한다
어떤 문자열이 포함된 행을 출력해준다
yum list | grep dhcp 를 입력해주자
| 라는 파이프 기호는
앞의 명령어를 출력값을 가지고
뒤의 명령어를 출력해달라는 의미다.
위 사진처럼 내가 원하는 것만 출력할 수 있다.
추가적으로 | 기호 외에도
명령어 사이에
&& , || , ;
기호도 존재하는데 각각
&& : 앞의 명령어가 성공하면 뒤의 명령어를 수행하라는 의미
|| : 앞의 명령어가 실패하면 뒤의 명령어를 수행하라는 의미
; : 성공여부와 상관없이 명령어를 이어서 수행한다.
yum install httpd 명령어를 입력해보자
y를 입력하면 설치가 되는데 설치는 하지말자
끝단 쯤 패키지 명과
의존성 관련된 설치파일까지
설치 및 지원 아키텍쳐가 쓰여있다.
설치 버전은
2.4.6-99 인데 위에서 말했든 yum에는 안정된 파일만 올라온다.
apache 서버에서 그 사실이 맞는지 확인해보자
https://downloads.apache.org/httpd/
확인해보면 안정된 버전이 올라오기 때문에
yum으로 설치하는 것은 최신버전은 아니라는 것만 알아두자
리포지토리를 확인해보면 updates또는 base 라고 쓰여있다.
왜이런 것일까?
이에 대해서 이야기 하려면 리포지토리에 대해 알 필요가 있다!
repository
/etc/yum.repos.d/ 를 확인해보면 우리가 사용하고 있는 리포지토리를 알 수 있다.
vi /etc/yum.repos.d/CentOS-Base.repo 명령어로
확인해보자
파일안에 총 4개의 리포지토리의 링크가 존재한다.
이때 다시 yum 명령어를 입력했을때 지나쳤던
출력물을 확인해보자
리포지토리 세가지가 모두 표시되어있다.
그런데 우리가 방금 확인한 리포지토리는 centosplus까지 네개였다.
그런데 왜 세가지만 표시된걸까??
이는 CentOS-Base.repo를 다시 확인해보면 알 수 있다.
바로 centosplus는 비활성화 됐기 때문이다
다시 yum으로 돌아가서
위 사진을 다시 확인해보면
각자의 다른 리포지토리에서 다운로드 받는 것을 알 수 있다.
또한 yum install 마지막 부분을 부면
y : 다운로드 및 설치
d : 다운로드만
N : 작업 취소
d를 입력해 다운로드만 해보자!
d 만 입력했는데 경로를 묻지도 않고 다운로드가 완료됐다
위에서 말했듯 yum은 경로를 지정할 수 없어서
우리가 지정된 경로로 찾아가야한다
ls /var/cache/yum/x86_64/7/ 에서 탭을 입력해 하위 디렉토리를 확인하자
6개의 하위 파일,디렉토리가 출력됐다.
방금 yum 명령어로 update,base 리포지토리가 각각 2개 3개 존재했었다.
지금 위치에서
하위 /base/package, /updates/package 를 확인해보자
yum에서 다운로드 했던 파일 5개가
각 리포지토리 경로에 맞게
다운로드 된 것을 볼 수 있다.
다시 yum install httpd로 이번엔 설치해주자
설치가 완료됐다.
다시 설치 파일들이 있던 경로를 확인해보자
설치가 완료된 패키지 파일들은 모두 경로에서
삭제된 것을 볼 수 있다!
yum 은 설치후에 다운로드한 패키지를 모두 삭제한다.
또한 설치 된 패키지를 다시 다운로드 하려해도
yum 명령어로는 할 수 없다.
(이미 설치된 파일이라고 출력됨)
삭제방법
yum remove (패키지명)
명령어로 삭제를 진행해보자
문제가 한가지 발생했다.
분명히 우리가 yum으로 설치했을땐
리포지토리에서 5개의 파일을 다운로드 했으나
삭제는 httpd 한가지만 진행됐다.
의존성 파일이 삭제되지 않은 것이다!
이 경우엔 우리가 직접 삭제 해주어야 한다
yum 설치시 목록에 존재했던 아래 4가지 파일을 삭제하자
이렇게 하나하나 입력해서 모두 삭제 해주었다.
이러한 과정은 조금 번거롭다.
이를 해결해주는 옵션도 존재한다!
remove가 아닌
autoremove 명령어를 이용하는 것이다.
yum 으로 다시 httpd를 설치해주자
-y 옵션을 넣어주면 설치여부를 묻지않고 바로 설치한다!
이제 autoremove로 지워보자!
의존성 파일까지 다같이 삭제됐다!
yum list installed
httpd 을 다시 yum로 설치해보자
그다음 yum list installed 명령어를 입력해보자
그럼 설치된 App 리스트를 볼 수 있는데
httpd와 그 의존성 파일은 끝부분이 @updates로 돼있다.
그 외의 파일들은 @anaconda 라는 처음 보는 이름으로 쓰여있다.
anaconda는 부트로더를 의미한다.
이말은 즉, 저 파일들은 OS가 설치될때 설치된 파일들이란 의미를 가지고있다.
그 이외의 파일들은 모두 우리가 설치한 것이다.
grep 명령어로 updates나 base만 긁어내보자
실습때 설치했던 파일들만 출력된다.
yum history
history 명령어는 yum이 수행했던 명령어의 기록을 볼 수 있다.
수행한 계정, 시간 , 행동등 모두 출력되지만
정작 무엇을 설치했는지 알기가 힘들다.
이럴땐 하나의 항목을 선택해 확인할 수 있다.
14번 항목을 확인해보자
yum history list 14
선택해주면 이렇게 세부 항목이 나온다
우리가 방금 설치한 httpd다.
yum history undo 14 명령어를 입력해보자
입력했더니 삭제가 실행됐다
이처럼 history에서 undo로 삭제할 수도 있다.
또한 redo로 다시 설치할 수도 있다!
이상 yum에 대해서 알아보았다.
rpm
rpm을 알아보기 앞서
현재 rpm 파일이 없어서 확인할 수가 없다..
하지만 방금 yum install 후 d를 입력하면
rpm 파일이 사전경로에 다운로드 된 것을 기억할 것이다.
yum install createrepo 를 입력해주자
createrepo 다운로드에 앞서서
libxml2 라는 파일이 의존성업데이트와
updates 리포지토리에 있는 것을 볼 수가 있다.
그런데 저 파일과 관련된 파일이 무수히 많이 때문에 따로 사전설치 해주려한다.
현재 작업은 N으로 멈춰주자
그리고
yum -install libxml2 으로 설치해주자
그리고 다시 creatrepo를 다운로드해주자
파일들의 경로를 잘 기억해두자
경로로 가서 확인해보면 4개의 rpm파일이 있는 것을 볼 수 있다.
이것을 /repo 디렉토리를 만들어 옮겨주자
4개 모두 옮겼으면
이제 rpm으로 설치를 시작해보자
내 위치를 /repo로 옮겨주자
그리고 rpm -ivh로 createrepo 를 설치해보자
그럼 의존성 문제로 인해서 설치를 실패했다고 나온다
직접 하나하나 설치해주자
먼저 python-deltarpm을 설치하자
또 의존성 오류가 발생했다.
이런식으로 의존성이 꼬리를 물기 시작하면 굉장히 번거로워진다.
deltarpm 먼저 설치해주자
이번엔 설치가 잘 진행됐다
python 파일을 설치해보자
-i 옵션만 입력했는데 이렇게 아무것도 표시되지 않는다.
아직은 헷갈릴 수 있으니 옵션을 활용해 식별이 쉽게 해주자
libxml2 도 설치해주자
다른 옵션도 사용해 설치해봤다.
마지막 createrepo를 설치하자!
rpm 명령어도 list 처럼 설치된 파일들을 확인할 수 있다.
-q :조회옵션
-a : 시스템에 설치된 전체 패키지 출력
-i : 설치된 패키지 정보까지 확인
-l : 패키지 내부 파일목록 확인
-f : 지정한 파일이 어떤 패키지에 속하는지 확인
옵션으로 확인한다
rpm -qa createrepo
createrepo 파일이 설치 됐는지 확인해보자
담백하게 확인해준다.
i 옵션을 추가해 세부적으로 확인할 수도 있다.
l 옵션은 내부 파일까지 보여준다.
위의 리스트중 하나의 파일을 복사해서 f 옵션에 입력해보자
creatrepo를 제대로 표시해준다!
-V 옵션을 사용하면 설치시 파일과 현재 파일을 비교해준다.
설치된 프로그램을 입력하면 위 사진처럼 .......T. ~~~~가 떠 있는 것을 볼 수 있다.
검증내용 | 표시 |
이상 무 | . |
MD5체크섬 | 5 |
파일 크기 | S |
심볼릭 링크 | L |
갱신일 | O |
장치 | D |
사용자 | U |
그룹 | G |
퍼미션 파일 타입 | M |
위의 표시가 변경사항마다 표시가 된다!
삭제방법
-e : 삭제 옵션
삭제후 -qa로 확인해보면 잘 삭제된 것이다.
다른 것도 삭제해보자
지긋지긋하게도 삭제시조차 의존성 문제가 발생했다.
파일들을 순서대로 삭제해주자..
잘 삭제되었다...
rpm은
source 설치에 비해서 편리한 편이지만
역시 의존성 문제에서 자유롭지 않은 것을 볼 수 있다.
여담으로
createrepo.rpm 파일도
yum localinstall createrepo.rpm 명령어로 설치할 수 있다.
이렇게 되면
yum 명령어로 의존성 문제까지 해결해준다!
yum history에도 기록이 남기 때문에
yum을 이용하는 것이 centos에서 권장하는 방법이다.
source 설치
설치 3단계
환경설정
설치 위치나 필요 라이브러리등을 지정
# ./configure --prefix=설치할 디렉토리 --with-라이브러리or 다른source설치 지정(의존성)
컴파일
사람이 인식할 수 있는 프로그래밍 언어로 작성된 코드를 기계어로 번역하는 과정
# make <-> make disclean
App 설치
# make install <-> make uninstall
실습에 앞서
/web 디렉토리를 만들어주자
source 설치를 위해서
https://downloads.apache.org/httpd/
위 링크에서 httpd....tar.bz2 파일을
/web 디렉토리로 이동한 다음
wget 명령어로 링크를 복사해 받아주자
tar xvfj httpd 명령어로 압축해제 하자!
httpd 폴더가 잘 생겨났다.
환경설정 configure 파일이 존재하는 것이 보인다. 이것으로 source 설치 해주는 것이다.
먼저 readme 나 install 파일이 존재하는데 설치 전 한번씩
읽어보는 것을 추천한다.
install을 읽어보자
vi INSTALL 로 확인해보면
설치 및 실행 관련된 명령어를 셜명해주고 있고
PREFIX 자리에 일반적으로 /usr/local/apache2 가 들어간다고 말해주고 있다.
./configure --prefix=/usr/local/apache2 명령어를 입력해보자
에러가 발생했다...
의존성 문제인 것이다.
apr도 설치해주자
apache.org 에서 apr을 찾아서 wget으로 다운로드 해주자!
다운로드 전에 /web 디렉토리로 이동해주자
다운로드 뒤 압축도 해제해주자
위같이 압축해제 했다면 apr로 이동후
readme 나 INSTALL 파일을 확인해주자
INSTALL은 없지만 readme 파일이 보인다 읽어보자
확인해보면 이번엔 prefix 경로가
내가 원하는 경로 아무곳이나 지정하라고 나와있다.
/web/apr 경로에 설치해보자
확인해보면 또 에러가 발생했다..
C compiler를 찾을 수 없다는 메세지다..
또 의존성 문제다..
C 컴파일러는 용량이 크고
수동 설치가 오래걸린다...
이런 파일들을 한번에 설치해두겠다.
gcc 와 expat 을 설치해두자
yum install gcc expat-devel를 입력하면 된다.
설치가 완료 됐다!
이제 다시 apr을 source 설치하자!
./configure --prefix=/web/apr 를 다시 입력해주자
설치가 완료됐다.
make로 컴파일을 진행하자!
컴파일이 끝나면
make install 로 설치를 진행하주자
설치중에 항상 에러 메세지가 없는지 잘 확인하자
이제 httpd를 설치하러 가면 된다!
httpd 디렉토리에서 source 설치를 진행하자
./configure --prefix=/usr/local/apache2 --with-apr=/web/apr
--with-apr=로 apr 파일이 어디에 위치해 있는지 알려줘야 한다!
이번엔 APR-util 파일을 찾을 수 없다고 한다...
또 설치 해주자..
apache의 apr 폴더에 util 파일이 존재한다 wget로 받아주자....
반드시 /web 디렉토리에서 받아주자!!!!
이번엔 wget 명령어가 실행되지 않는다
에러 문구를 읽어보니 인증서가 만료 됐으니 --no check-certificate 를 사용해 다운로드 하라고 한다
다시 다운로드 해주자
이번엔 다운로드가 잘 됐다.
압축을 해제하고 source 설치 해주자
디렉토리 내부에 또 readme가 존재 한다 ! 확인하고 설치하자
에러가 출력됐지만 이번엔 다행히도
설치 된 apr의 경로를 알려달라는 메세지다
--with-apt=/web/apr 을 추가해서 입력해주자
잘 진행됐다!
이제 make, make install로 컴파일, 설치까지 진행하자
이제 진짜 httpd를 설치하러 가보자!!!
httpd 디렉토리로 이동 후 명령어를 입력하자
./configure --prefix=/usr/local/apache2 --with-apr=/webapr --with-apr-util=/web/aprutil
이번에도 실패했다..
pcre가 필요한듯 하다
홈페이지 주소까지 알려주니 wget으로 설치해주자..
(wget 은 반드시 /web 디렉토리에서!!!)
https://sourceforge.net/projects/pcre/files/pcre/8.45/
위 사이트에서
pcre-8.45.tar.bz2 파일의 링크를 복사하는데
링크 주소 끝이 파일로 끝나는 것이 아니라 download로 끝나고 있다
파일명으로 끝나게 지워줘야한다!
다운로드를 진행하니 인증서가 또 다시 만료 됐다고 한다..
아까와 같이 옵션을 추가해 다운로드 해주자..
다운로드가 완료 됐으니 pcre를
압축해제 해준뒤에
source 설치하자
또다시 에러가 발생했다..
이번엔 C++ 컴파일러가 필요하다고 한다...
컴파일러는 아까 말했듯 용량이 크고 설치가 오래 걸리니
yum 으로 설치해주자
yum install -y gcc-c++
다시 pcre를 설치하자...
설치가 잘 진행 됐으니
컴파일러와 설치까지 한번에 입력해주겠다.
설치가 완료 됐다..
이제 정말로 httpd를 설치해보자....
디렉토리 이동후 source 설치를 진행하자
with 옵션 추가 apr , apr-util, pcre 해주는 것도 잊지말자
./configure --prefix=/usr/local/apache2 --with-apr=/web/apr --with-apr-util=/web/aprutil
--with-pcre=/web/pcre/bin/pcre-config
pcre의 경우 경로가 조금 다르니 유의해서 입력해주자
드디어!! 에러없이 잘 설정 됐다!
이제 컴파일 설치까지 진행하자
설치가 완료됐다..
우리가 너무 멀리 돌아와서 잊었을 수도 있지만
맨처음 httpd 파일의 INSTALL 파일에
httpd 의 실행을 위한 명령어가 소개 됐었다.
/usr/local/apache2/bin/apachectl start 였었다..
입력해주자!
그리고 방화벽을 해제해주자!
systemctl stop firewalld 를 입력하면 된다
그리고 웹 브라우저를 켜서
리눅스의 ip로 접속해보면
아직 it works! 라고 뜨면 성공한 것이다!
삭제방법
삭제 자체는 비교적 간편하다..
일단 httpd 실행을 중지시켜주자
/usr/local/apache2/bin/apachectl stop 입력
httpd 설치 경로를 삭제해주고
다운로드 받았던 파일이 모인 /web 디렉토리도 삭제한 뒤
yum 으로 설치한 파일들도 삭제해주자..
rm -rf /usr/local/apache2
rm -rf /web
yum autoremove -y gcc gcc-c++ expat-devel
그럼 httpd 의 source설치 및 삭제가 끝난 것이다...
과정을 보면 알겠지만 source 설치는
굉장히 번거롭고 복잡한 작업을 요한다...
하지만 /web/httpd 처럼 내가 원하는 디렉토리에 설치할 수 있었다.
이상 Package 관리에 대해서 알아보았다..
'Linux > CentOS7' 카테고리의 다른 글
Linux 15 . dhcp 서비스 (1) | 2024.02.13 |
---|---|
Linux 14 . process 관리 (0) | 2024.02.13 |
Linux 12 . Local Repository (0) | 2024.02.08 |
Linux 11 . Linux 설치 시 lvm 수동설정 (0) | 2024.02.06 |
Linux 10 . LVM (0) | 2024.02.05 |