https://www.lesstif.com/pages/viewpage.action?pageId=18219464#yum%EC%9C%BC%EB%A1%9C%ED%8C%A8%ED%82%A4%EC%A7%80%EA%B4%80%EB%A6%AC%ED%95%98%EA%B8%B0-%EC%A0%95%EB%B3%B4%EB%B3%B4%EA%B8%B0(info)

● 기본 yum 명령어 모음

# yum repolist : 현재 활성화된 yum repository 목록 확인
# yum repolist all : 비활성화된 yum repository 까지 확인 가능
※ /etc/yum.repos.d 디렉터리의 .repo파일 중이 enable=1 설정된 저장소만 표시

# yum list : 패키지목록보기 (설치된항목, 설치가능항목), @표시는 설치된것
# yum list installed : 설치된 패키지 목록 보기
※ yum list는 available과 installed 패키지를 출력해줌으로 ---> 서버 패키지와, repository 패키지를 모두 검색 함 (repolist 제거하면 repository 쪽의 패키지는 검색이 안됨을 확인함)

# yum install 패키지명
# yum remove 패키지명
# yum localinstall <*.rpm> : rpm파일로 바로 설치, rpm으로 설치하지 않고, yum으로 설치하면 yum 명령으로 관리가능 (yum필요이유 : 관리편이(rpm은 의존성 다 체크해야함), yum install (파일.rpm) 으로도 가능 (하지만 *.rpm으로 될지는 모르겠음)

# yum info 패키지명 : 서버상에 존재하는 패키지에 대한 정보를 보여줌 (rpm -qi와 동일)
# yum search (단어) : 서버든 repository든 어떤 단어가 포함되는건 출력

# yum clean 플래그 : yum 캐시 지우기 ( ※플래그명 : all, headers, packages, metadata, dbcache, plugins, expire-cache, rpmdb )
※ yum 캐시란 : yum은 빠른 처리를 위해 메타데이터, 패키지정보, 플러그인정보 등을 캐시해놓음

● yum 패키지 업데이트 

 ※ update든 upgrade든 패키지를 설치하는건 동일, upgrade는 최신 버전에선 필요없어진 옛날 패키지까지 포함해서 업데이트한다는 애기임 (update --obsoletes 플래그로 하는것도 동일하다고 함)
※ 시스템 업데이트는 minor버젼끼리 가능함 (6.4 --> 6.5), major버젼이 변경되지 않음 (6 --> 7)
   단, 예를 들어, centOS6.7에서 update를 하여 centOS6.9의 kernel 버젼이 업데이트 되더라도, /etc/system-release 에는 여전히 6.7로 나오는듯 함
 
# yum upgrade,  # yum update : 패키지 목록과 보유한 목록을 비교하여 실제 전체 패키지 업데이트를 수행합니다.
# yum update 패키지명 : 패키지만 업데이트

# yum check-update 또는 # yum list updates : 패키지중 업데이트 가능한 패키지 출력 (시스템에 설정된 yum repository와 패키지를 비교함) 

# yum update -x 패키지1 -x 패키지2  : 특정 패키지 제외하고 업데이트
또는 /etc/yum.repos.d/파일.repo 에서 아래와 같이 하면 됨.
 ### Black List Packages ### 
exclude=nginx*

# yum downgrade : 설치된 패키지를 다운그레이드 함

● yum 플러그인이란?
yum 은 플러그인으로 기능을 확장가능, 기본적으로 CentOS 의 빠른 미러 사이트를 찾아주는 fastestmirror, 보안 기능을 제공하는 yum security 플러그인 두 개가 기본 설치되어 있다. 
"yum search yum plugin" 을 실행하면 전체 yum 플러그인 목록을 확인할 수 있으니 플러그인 설명을 보며 필요한 플러그인이 있다면 설치해 보기 바란다.

# yum search yum plugin  ( yum 플러그인 목록)
................................................................................................................................................................................................
yum-plugin-aliases.noarch : Yum plugin to enable aliases filters
yum-plugin-changelog.noarch : Yum plugin for viewing package changelogs before/after updating
yum-plugin-fastestmirror.noarch : Yum plugin which chooses fastest repository from a mirrorlist
yum-plugin-security.noarch : Yum plugin to enable security filters
yum-plugin-tmprepo.noarch : Yum plugin to add temporary repositories
yum-plugin-verify.noarch : Yum plugin to add verify command, and options
yum-plugin-versionlock.noarch : Yum plugin to lock specified packages from being updated
yum-presto.noarch : Presto plugin for yum
................................................................................................................................................................................................

※ changelog 플러그인 : 패키지의 변경 이력을 볼 수 있음
   downloadonly 플러그인 : 패키지를 설치하지 않고 다운로드만 해줌
예) 플러그인 설치 예
# yum install yum-plugin-changelog yum-plugin-downloadonly -y

- changelog 플러그인 사용 예 )
# yum chagelog 2014-05 openssl : 2014년 05월 이후 openssl 패키지의 변경 이력 확인

- downloadonly 플로그인 사용 예 )
# yum install postfix -y --downloadonly : 패키지를 설치하지 않고 rpm 을 다운로드만 해주는 플러그인으로 사용
다운로드 받은 패키지는 yum.conf 의 cachedir에 저장됨

● yum repository 설정

- /etc/yum.repos.d/디렉토리내 .repo파일의 설정 내역

※ 참고 baseurl등에 들어가는 변수 설명
  $basearch : "x86_64" 같은 시스템의 아키텍처 문자열로 치환되며(uname -m 과 동일) 
  $releasever : RHEL이나 CentOS 의 메인 릴리스 버전(6 등)으로 치환된다. 
  (※ 64비트의 CentOS 6.5 를 설치했을 경우 cachedir 은 "/var/cache/yum/x86_64/6/" 이다.)

1) repositoryid 종류 
    [base] - yum 서버의 기본 패키지 경로 설정
    [updates] - 업데이트된 패키지를 위한 경로 설정
    [extras] - 사용중인 패키지와 관련된 추카 패키지 경로
    [centosplus] - 존재하는 패키지들의 기능적으로 확장된 추가 패키지 경로
    [contrib] - User에 의해 제작된 패키지 경로 설정

2) name : repository(저장소) 이름
3) mirrorlist : 등록된 주소를 자동으로 찾고 그 사이트를 이용하여 업데이트
4) baseurl : 직접 yum 저장소 URL 지정
5) enabled : 해당 저장소 활성화 여부(0안함, 1함)
6) gpgcheck : gpg 체크 여부 (패키지 변조 및 정상 여부 파악) (0, 1) --> 사용한다면 해당 repository에 들어가보면 gpgkey가 있고 다운로드 받아야함

●  특정버젼으로 커널 업그레이드 1

※ 최신버젼 업그레이드
# yum update

yum update를 하면 최신으로 업데이트 하기 때문에 (repository가 자동으로 최신버젼을 받아온다)
예를 들어 baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/ 설정되어 있다면,
---> baseurl=http://mirror.centos.org/centos/6/updates/x86_64/ 을 의미하기 때문에, $releasever 변수는 특정 OS 마이너버젼(예: 6.7)이 아니기 때문에, 
      6의 의미가 centos 6에 모든 커널버젼이 있는 repository라서, 6.10 최신 커널로 업데이트 됨. 

yum repository에 원하는 커널버젼의 mirror site 주소를 적용시킨 후 업데이트
※ 내부망 서버일 경우, 외부 통신과 막혀 있다면, local에 다운받아 적용하면 될듯 (파일다운로드 받고(파일위치는 아래 repository설정 참고), local repository는 적용해야함)

1) repository 파일 백업
# cp -r /etc/yum.repos.d /etc/yum.repos._bak

# vi /etc/yum.repos.d/CenOS-Base.repo
[base]
baseurl=http://vault/centos.org/centos/7.2.1511/os/$basearch/
[update]
baseurl=http://vault/centos.org/centos/7.2.1511/updates/$basearch/

# yum clean all (yum 캐시지우기)
# yum repolist (확인)
# yum update -y kernel

※ centos7 일경우
# grub2-editenv list (현재설정된 부팅 1순위 확인)
# grub2-set-default 0 (업데이트된 커널로 부팅 설정)
# systemctl reboot

※ centos6 일경우
# vi /etc/grub.conf
설치된 커널들의 정보가 리스트 되어 있는데
여기서 맨위 커널부터 차례로 0,1,2,3.... 순서이며
default=0 기본설정값 : 맨위의커널로 부팅함

------------------------------------------------------------------------------------------------------------------------

●  특정 커널 업데이트 2 (repository에 없는, 커널소스 컴파일 포함)

1) 사전준비
# yum update (모든패키지 업데이트)
# yum install ncurses-devel (커널업데이트 중 make menuconfig 명령 통해 환결 설정 할때 , 화면 깨지는 상황 피하기 위해 해당 라이브러리 설치)
# yum groupinstall "Development Tools: (커널설치시 필요패키지 묶여 있는 패키지 설치)

2) 커널다운로드
 - https://kernel/org/ (원하는 커널 다운로드) stable 또는 longtem 다운로드 추천...
※ 이 화면에 나오는 커널은 몇개 안되고, www.kernel.org/pub/linux/kernel 에서 버젼별로 확인
 - 인터넷이 된다면 예) # wget http://www.kernel.org/pub/linux/kernel/v4.x/linux-4.9.99.tar.xz

# tar xvzf linux-4.9.99.tar.xz
# cd /usr/src/
# ln -s /다운로드 받은곳/linux-4.9.99 linux

3) 커널 컴파일 및 환경설정
# cd /usr/src/linux
# make mrproper  (기존에 설정되어 있던 모든 의존관계, 환경설정 값들을 제거)

# make clean  (이전에 커널 컴파일 경험이 있다면 오브젝트파일과 이전 커널 옵션등을 정리, 커널컴파일에 필요하지 않는 소스파일 정리)
# cp /boot/config-`uname -r` ./.config  (현재 리눅스의 커널설정파일을 이용해, 다운로드 받은 커널을 컴파일할 소스파일 복사)
 
# make menuconfig (신규커널정보 설정을 위한 툴 실행 --> 기존 커널설정정보 그대로 가져가고 싶다면 명령 실행하지 말자) --> 이부분 하려면 따로 찾아보자
# make oldconfig (위의 명령 menuconfig를 실행했다면 실행하지 말자)
# make all (.conig 파일 이용하여 커널소스빌드 --> 시간 꽤 걸림)
# make modules_install  (커널소스빌드내용을 모듈로 설치)
# make install  (커널설치)

4) 커널적용
# vi /boot/grub/grub.conf   또는 vi /boot/grub2/grub.conf (centOS 7부터)
default=0을 주석처리하고, default=1입력

5) 재부팅 및 업데이트 확인
# uname -r
※ 신규 커널 패닉시 ---> 이전커널로 재부팅 : 리눅시 재식작 후 영문자 E 눌러 이전커널로 부팅

※ 컴파일 도중 에러  : openssl/opensslv.h 그런파일 디렉토리 없습니다. 오류발생 ---> 해결책) yum install libssl-dev

●  커널업데이트 없이 패키지 업그레이드 할 경우 

# yum update --exclude=kernel* : 커널업데이트 금지 설정
또는 /etc/yum.conf 파일에 exclude=kernel* 를 추가한다.
# yum upgrade : 패키지 목록과 보유한 목록을 비교하여 실제 패키지 업데이트를 수행 ( 앞에서 커널에 대한 패키지 목록 갱신을 안했기 때문에, 업그레이드 목록에는 빠지는 듯함)

------------------------------------------------------------------------------------------------------------------------

●  특정버젼으로 커널 자동 업그레이드 할 경우 

# uname -r
또는 # cat /proc/version : 현재부팅되어 있는 커널정보 확인
http://vault.centos.org/  --> 리눅스 커널이미지 버전 컴색

# cd /etc/yum.repos.d
# cp CentOS-Base.repo CentOS-Base.repo.bak (백업)
# vi CentOS-Base.repo : 패키지저장소(Repository) URL 설정
base url을 변경 하고 gpgkey 수정
# yum -y update
# yum upgrade
# reboot

※ redhat linux 위키피디아 (RHEL 버젼별 - 커널버젼정보) 
예)RHEL6
Red Hat Enterprise Linux 6 (Santiago), November 10, 2010; 7 years ago, uses Linux kernel 2.6.32-71[22]
6.1, also termed Update 1, May 19, 2011; 6 years ago (kernel 2.6.32-131)
6.2, also termed Update 2, December 6, 2011; 6 years ago (kernel 2.6.32-220)
6.3, also termed Update 3, June 20, 2012; 5 years ago (kernel 2.6.32-279)
6.4, also termed Update 4, February 21, 2013; 5 years ago (kernel 2.6.32-358)
6.5, also termed Update 5, November 21, 2013; 4 years ago (kernel 2.6.32-431)
6.6, also termed Update 6, October 13, 2014; 3 years ago (kernel 2.6.32-504)
6.7, also termed Update 7, July 22, 2015; 2 years ago (kernel 2.6.32-573)
6.8, also termed Update 8, May 10, 2016; 21 months ago (kernel 2.6.32-642)
6.9, also termed Update 9, March 21, 2017; 11 months ago (kernel 2.6.32-696)
6.10, also termed Update 10, 2018-06-19 (kernel 2. 6.32-754)
---------------------------------------------------------------------------------------------------------------------
RHEL7
Red Hat Enterprise Linux 7.0 (Maipo), 2014-06-10 Uses Linux kernel 3. 10.0-123
7.1, also termed Update 1, 2015-03-05 (kernel 3. 10.0-229)
7.2, also termed Update 2, 2015-11-19 (kernel 3. 10.0-327)
7.3, also termed Update 3, 2016-11-03 (kernel 3. 10.0-514)
7.4, also termed Update 4, 2017-07-31 (kernel 3. 10.0-693)
7.5, also termed Update 5, 2018-04-10 (kernel 3. 10.0-862)
7.6, also termed Update 6, 2018-10-30 (kernel 3. 10.0-957)
7.7, also termed Update 6, 2019-08-06 (kernel 3. 10.0-1062)
---------------------------------------------------------------------------------------------------------------------
RHEL8
Red Hat Enterprise Linux 8 (Ootpa)은 Fedora 28, 업스트림 리눅스 커널 4.18, systemd 239 및 그놈 3.28을 기반으로합니다. 
첫 번째 베타 버전은 2018 년 11 월 14 일에 발표되었습니다 . Red Hat Enterprise Linux 8은 공식적으로 2019-05-07에 발표되었습니다.
Red Hat Enterprise Linux 8.0 (Ootpa), 2019-05-07 (kernel 4.18.0-80)