###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 꾸미는 거임)

(잘 사용안함)

 

 

해당 내용은  프로그래머스 리눅스 강의 김선영 선생님의 강의를 들으며 기록했습니다.

+ Recent posts