###1. APT
- advanced package tools
- sources.list
- mirror site
- apt vs apt-get, apt-cache
##1. apt(advanced package tool)
#1. debian의 dpkg를 랩핑한 front-end tool
1) 네트워크 설치 지원(mirror 탐색 가능)
2) dependency 탐색 및 설치 가능
dependency란 예로 들어 설명하면, 게임 설치 시 게임 실행하는 데 필요한 파일들을 의미한다. 이 파일들은 게임 실행파일의 dependency이다.
자세한 예로
A -> B -> C
A를 설치 하기 위해선 B의 설치가 B 설치를 필요하기 위해선 C의 설치가 필요로 한다. 이때 A 에서 B의 dependency가
B에서 C의 dependency 가 걸려있다고 말한다.
**dpkg에서 dependency..가 문제 있어서 apt- get -> apt 로 옮겼다
#2 binary (명령어)
1) apt-get : install/ remove/ upgrade .. .에 주로 사용
2)apt-cache : query 에 주로 사용
3)binary-extensions : apt-file
4)new binary :apt : apt는 위 1)2)3) 처럼 많은 명령어들을 통합시킬 목적으로 탄생한 패키지이다.
#3 apt : source list
1) 의미:
https://answers.sap.com/questions/4062870/what-is-sourcelist.html
Source list is mapping of Material, Plant and vendor.
-익명유저-
source list란 apt가 원격 네트워크로 package를 다운 받아 설치하며, 이 패키지(패키지 안에 sources 존재) 가 원격네트워크 어디에 위치하는지 알아야한다. 이때 다운 받을 패키지 리스트들이 위치한 곳이다.
/etc/apt/sources.list 에 소스 리스트 파일을 직접 편집할 수 있다.
그러나 /etc/apt/sources.list.d/ 에 *.list 파일명 추가하는 편이 좋다
but
실제로는 apt edit-sources 명령어로 편집을 할 것이다.
/etc/apt/sources.list 를 vim이나 cat을 통해 참고해보자.

##2. apt : source list : ubuntu
상기 내용에 대한 구조를 살펴보자
#1. sources.list format
deb [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]
deb-src [ option1=value1 option2=value2 ] uri suite [component1] [component2] [...]
1) uri : DEB 패키지를 제공하는 사이트의 URI
2)suite : distribution codename 디렉터리 이름 (==dist. version) (특정 패키지 버전의 code name)
=> 16.04 = xenial, 18.04 = bionic ...
=> https://wiki.ubuntu.com/Releases
3)component: suite의 구성 요소 및 라이선스 종류별 분류
=> 최소 1개 이상의 컴포넌트 지정해야함.
**[ ] 는 optional 생략가능
#2 component : suit의 구성 요소 및 라이선스 종류별 분류
| component 명 | 설명 |
| main | 메인 패키지, 우분투에서 모두 관리하는 패키지를 main 패키지라함. |
| restricted | 무료가 제한되는(restricted free) 라이센스 |
| universe | 커뮤니티에서 maintanence 관리, 완벽하게 official한 지원을 하지 않음 |
| multiverse | non-free |
| security | Important security updates |
| updates | recommended updates |
#3 source list: debian
1) debian 7.x 의 sources.list
# deb-src cdrom:[Debian GNU/Linux 7.5.0 _Wheezy_ ...생략 ]/wheezy main
# deb cdrom:[Debian GNU/Linux 7.5.0 _Wheezy_ ... 생략]/ wheezy main
deb http://security.debian.org/ wheezy/updates main
deb-src http://security.debian.org/ wheezy/updates main
2)CD -ROM 사용하지 않는다면 comment 처리 또는 삭제
3) source list에 URL 을 추가하려면?
deb http://ftp.kr.debian.org/debian/ stable main "stable: 안정화된 버전
deb http://ftp.kr.debian.org/debian/ wheezy-updates main
deb-src http://ftp.kr.debiaan.org/debian/ wheezy-updates main
위처럼 직접 편집하지 않고 보통은 아래와 같이 한다.
#4 /etc/apt/sources.list.d/kr.list
kr.list를 만들어 작업함
deb http://ftp.kr.debian.org/debian/ stable main
deb http://ftp.kr.debian.org/debian/ wheezy-updates main
deb-src http://ftp.kr.debian.org/debian/ wheezy-updates main
https://ftp.debian.org/debian/dists/stable/
Index of /debian/dists/stable
ftp.debian.org
해당 사이트에서 stable/ main , sheezy-updates main (이건 안나오네) 을 볼 수 있다.

#5 우분투 미러사이트 중 카카오 미러를 이용해보자.
https://mirror.kakao.com/ubuntu/dists/

상기 사이트를 참고하여 sources.list 작성
# kakao.list
deb http://mirror.kakao.com/ubuntu/ bionic main restricted universe
deb http://mirror.kakao.com/ubuntu/ bionic-updates main restricted universe
deb http://mirror.kakao.com/ubuntu/ bionic-security main restricted universe
uri: http://mirror.kakao.com/ubuntu/
suite : bionic-updates, bionic-main, bionic-security
component: main restricted universe
#6
#5를 어떻게 넣을까?
시스템에 있는 기능을 활용하자,.
$ sudo select-editor ( root mode) 타이핑하자

원하는 에디터를 설정한다. 필자는 3 번 vim 으로 설정함.
#7 kakao mirror 설정: apt edit-sources kakao.list
1) 실제 편집되는 파일 /etc/apt/sources.list.d/kakao.list
$ sudo apt edit-sources kkakao.list
입력 후 하기와 같이 타이핑해 넣으면 된다. (#5 카카오 리스트 참조, 3개 리스트들)

저장후 나오면

$ sudo apt update 통해 갱신하자.
source list 갱신은 언제하나? source list 추가/편집 또는 오랫만에 작동시키는 경우 갱신한다.
KR 우분투 미러보단 카카오 우분투 미러사이트가 더 빠르다. (KR 우분투는 주석을 통해 막자)

해당 부분들 다 주석처리 하기

##3 apt : list
#1. apt list [options] [package pattern]
1) 패키지 목록 출력
2) options:
a) 옵션이 지정되지 않으면 해당 버전에서 제공되는 패키지의 최신 목록 출력
** 동일 패키지 중에서는 가장 최신의 패키지만 출력함.
b) --installed: 설치된 패키지 리스트
c) --upgradable: 업그레이드가 가능한 패키지리스트
d) --all-versions: 모든 버전의 패키지 리스트
# apt list
# apt list --installed
# apt list --upgradable
# apt list bash* bash단어로 시작하는 것만 나온다.
pakage pattern 은 option
##4 apt: search
#1 apt search [-n] <regex>
1) 패키지를 키워드로 검색, 키워드는 REGEX(정규식)으로 입력
2) options:
a) -n: 검색 대상을 name 필드로 한정.
# apt search bash
"name이 아닌 description에 bash가 들어간 경우까지 검색
# apt search -n bash
"name의 중간에 bash가 있어도 검색
# apt search -n '^bash'
"name의 시작부분에 bash가 있는 경우만 검색
^ : pattern 으로 시작부분을 의미
##5. apt: show <package name>[=version]
#1. 패키지 정보 출력
# apt show bash
"정보가 나온다. 한글로나온다면 영문으로 바꾸기 (LANG 환경변수 설정)
# apt list --all-versions bash
# apt showw bash=4.4.18-2ununtu1
"특정버전의 정보를 볼수있음

##6 apt : remove, purge, autoremove
#1. <remove|purge|autoremove> <package>[=version]
1) remove : 패키지만 삭제 (config 파일은 남김)
2) purge: 패키지 삭제(config도 삭제)
만일 설정이 꼬여 재설치해도 config가 남아서 문제가 되면 purge로 삭재후 재설치 해야한다.
3)autoremove: 의존성이 꺠지거나 버전관리로 인해 쓰이지 않는 패키지 자동제거
# apt -y install htop
''일단 설치
# apt show htop
''정보 확인
# apt purge htop
# apt autoremove 로 불필요한 패키지 자동 제거
##7. pcp 패키지를 검색 및 설치해보기
#1
# apt search -n '^pcp*'
" 패키지 이름만 필요할 때는 apt-cache를 사용하는게 편함
# apt-cache pkgnames pcp
" pcp로 시작되는 패키지명이 보임.
# apt install pcp -y
" pcp 패키지 설치
-y 는 중간에 apt -y install pcp 로 위치하거나 맨끝에 위치하는 경우가 있다.,
#2 만약 패키지 설치시 의존성 에러가 발생한다면?
시스템에 설치된 7.47 우분투2.15와 설치할 패키지 버전인 7.47.0-1ubuntu2 과는 dependency 문제발생.
다운그레이드 해야함
시스템에 설치 가능한 all-versions를 확인 후 같이 설치해야함.
#apt list —all-versions libcurl3-gnutls
#apt install curl libcurl3-gnutls=다운그레이버전명
The following packages will be DOWNGRADED: 로 나오면 다운그레이드 완료
다운그레이로 해결되지 않을 시 구글링해보자 ~
##8 aptituide
#1. TUI 방식의 APT (APT 꾸미는 거임)
(잘 사용안함)
해당 내용은 프로그래머스 리눅스 강의 김선영 선생님의 강의를 들으며 기록했습니다.
'프로그래머스 > 리눅스' 카테고리의 다른 글
| 리눅스의 기초(4-5) ssh server (0) | 2022.11.06 |
|---|---|
| 리눅스의 기초 (4-4) Linux Admin - 네트워크 설정 ( 매니저) (0) | 2022.11.06 |
| 리눅스 기초(4-2) Package Manger (0) | 2022.11.06 |
| 리눅스의 기초 (4-1) -File System (basic) (0) | 2022.11.06 |
| 리눅스의 기초(3-7) encoding, 편리한 기능들 (vim editor Final) (0) | 2022.11.06 |