[Ubuntu] 우분투 Package 관리[Ubuntu] 우분투 Package 관리

Posted at 2018. 6. 29. 19:12 | Posted in Linux/Ubuntu
반응형



■ 우분투 패키지 관리




 -. 우분투에서는 프로그램을 패키지라고도 부른다.

 -. 우분투에서는 패키지는 프로그램보다 더 큰 개념으로 프로그램뿐만이 아니라 라이브러리나 문서, 프로그램 소스 등도 전부 패키지 형태로 관리하고 배포한다.

 -. 우분투에서 사용하는 패키지 관리는 apt라고 부르는 패키지 관리 명령어 세트를 이용한다.

 -. 콘솔에서 apt 명령어 세트를 이용해 프로그램을 설치하는 것은 GUI상에서 혹은 우분투 소프트웨어 센터 프로그램을 설치하는 것과 동일하다.

    단지 GUI를 이용하지 않고 콘솔에서 사용자가 직접 패키지 명을 입력해서 설치하는 것만 다를 뿐이다.



 -. apt-get 명령어는 시스템에 영향을 주는 명령어이기 때문에 권한 상승을 해주는 명령어 sudo를 앞에 붙인다.

 -. 위 명령어를 입력하면 apt-get은 docky를 설치하기 위해서 어떤 라이브러리에 의존성이 있는지를 파악해서 해당 라이브러리까지 같이 자동으로 설치해 준다.

 -. 만약 설치하려고 하는 프로그램의 용량이 크다면 사용자에게 설치 후 용량이 얼마만큼 되는지 알려주면서 정말 설치할 것인지 물어본다.

 -. 키보드로 Y키를 누르게 되면 그 이후에는 apt-get이 알아아서 우분투 패키지 관리 서버에 접속해서

    필요한 패키지를 다운로드 한 다음에 사용자의 시스템에 설치를 완료한다.





# 우분투 패키지 관리의 장점


 대부분의 프로그램들은 혼자 작동하지 않는다. 수많은 라이브러리를 참조하면서 동작하는게 보통이다. 과거에 리눅스를 사용할 때 가장 어려웠던 부분이 바로 이런 프로그램이 설치 시 발생하는 수많은 라이브러리 의존성 문제였다. 프로그램마다 필요로 하는 라이브러리가 전부 다르고, 같은 라이브러리를 쓴다고 해도 서로 요구하는 라이브러리의 버전이 달라서 이를 관리하기가 매우 까다로웠다.


 -. 우분투의 패키지 관리는 이런 문제점을 사용자가 고민하지 않도록 패키지 서버를 운영하고 있다.

 -. 수많은 패키지를 보유하고 있으면서 패키지들의 각각 라이브러리 의존성 정보도 같이 관리하고 있다.

 -. 이런 데이터를 기반으로 패키지 서버를 통ㄹ해서 사용자가 패키지를 설치할 때마다 자동으로 관련 라이브러리까지 같이 설치해준다.


 이런 패키지 관리 시스템 덕분에 우분투에서 프로그램을 설치하는게 아주 쉬워졌다.




# 우분투 패키지 관리의 단점


 -. 인터넷에 접속이 가능해야 패키지 서버에 접속해서 관련 프로그램을 다운로드  받을 수 있다.

 -. 두 번째로 패키지 서버에서 과리되지 않는 프로그램을 다운로드  받기 때문에 소스를 직접 컴파일해서 설치한 경우보다

    자신의 시스템에 최적화된 프로그램을 사용할 수 없다.

 -. 소스를 다운바당서 설치하게 되면 자신의  시스템에 맞춰서 변수값을 바꾸어서 실행파일을 만들 수 있는 장점이 있는데,

    우분투 패키지 서버는 사용자가 설치할 프로그램의 소스를 컴파일 해주지 않는다.

 -. 패키지 설치 시에 오류로 인해 설치가 실패하게 되면 오류를 해결하기가 까다롭다.





■  GUI에서 우분투 패키지 관리


 -. 우분투  GUI에서는 시냅틱 패키지 관리자(Synaptic Package Manager)라는 프로그램을 이용하면 된다.

 -. 시냅틱 패키지 관리자는 우분투 소프트웨어 센터로는 설치할 수 없는 수 많은 패키지(프로그램, 라이브러리)들을 검색하고 설치할 수 있도록 해준다.

 -. 우분투 소프트웨어 센터는 오직 프로그램만 설치해 주는데, 시냅틱 패키지 관리자는 우분투 패키지 서버에 있는 모든 패키지를 검색하고 설치할 수 있다.

    예를 들면 특정 라이브러리 패키지를 강제로 설치하고 싶다면 시냅틱 패키지 관리자를 이용해야 한다.

 -. 시냅틱 패키지 관리자는 우분투에서 기본적으로 설치되어 있지 않으므로 우분투 소프트웨어 센터를 설치하면 된다.


:: 우분투 소프트웨어 에서 Synaptic Package Manager를 설치한다. ::



:: Synaptic Package Manager 실행 화면 ::




 위 그림은 실행 화면을 보여주고 있다. 왼쪽 리스트에는 카테고리 별로 패키지가 구분되어 있고, 화면 중앙 각각의 개별 패키지 목록을 보여준다. 관리되고 있는 패키지 개수가 매우  많기 때문에 검색 기능을 이용해서 원하는 패키지를 찾는게 가장 효율적이다.





■ 터미널에서 apt 명령어 세트를 사용하는 법




#01. 패키지 정보를 최신으로 갱신하는 명령어


 $ sudo apt-get update


 -. 위 명령은 패키지 정보를 최신으로 갱신하는 명령어이다. 명령을 실행하면 우분투 패키지 서버에 접속해서 패키지 정보를 받아온다. 

 -. 반드시 인터넷에 접속된 상태에서만 수행하자.




#02. 갱신된 패키지 업데이트


  $ sudo apt-get upgrade


 -. 설치된 패키지 중에서 버전이 갱신된 패키지가 있다면 서버에서 최신 버전을 받아서 업그레이드 하는 명령어이다.

 -. 이 명령을 수행하기 전에 반드시 apt-get update명령을 수행해야 가장 최신 정보를 반영 할 수 있다.




#03. 우분투 버전 업데이트

 $ sudo apt-get dist-upgrade


 -. 우부투 버전 자체를 업그레이드 한다. 예를 들어 지금 사용하고 있는 버전이 Ubuntu 18.04인데 18.10 버전이 출시되어 버전업을 하고 싶다면 이 명령을 이용하면 된다.

 -. 이미 설치된 시스템을 업그레이드 하는 것이므로 완전 새로 설치하는 것에 비해서 불안할 수 있다.




#04. 패키지 정보 확인


 $ apt-cache show 패키지명

:: 위 예시는 docky 패키지 정보를 보여주고 있다. ::



 -. 지정한 패키지에 대한 정보를 보여준다.

 -. 패키지의 이름, 버전, 파일 크기, 라이브러리 의존성, 패키지 설명 등 매우  다양한 정보를 보여주고 있다.

 -. 여기서 보여지는 정보는 우분투 소프트웨어 센터시냅틱 패키지 관리자에서 보여지는 정보와 동일하다.




#05. 패키지를 새로 설치


 $ sudo apt-get install 패키지명 



 -. 패키지를 새로 설치한다. 패키지 명을 정확하게 입력해야 설치가 가능하다.

 -. 만약 정확한 패키지명을 모르겠다면 앞에 몇 글자 입력한 후에 <TAB>키를 누르면 예상되는 패키지 목록을 보여준다.




#06. 패키지 제거


  $ sudo apt-get remove 패키지명


 -. 지정한 패키지를 제거한다. 패키지 관련 파일은 삭제하지만, 설정 파일 같은 파일은 지우지  않는다.

 -. --purge 옵션을 붙여주면 패키지에 관련된 모든 파일을 같이 삭제한다.




#07. 패키지 설치 파일 삭제


 $ sudo apt-get autoclean


 -. 우분투는 패키지를 설치하는 과정에서 해당 설치 파일을 따로 관리하고 있다.

 -. 한번 다운받은 설치 파일을 또 서버에서 다운받지 않도록 하기 위해서다. 그런데 점점 설치하는 패키지가 많아지면 관련 설치 파일이 계속 저장 장치를 차지하게 된다.

 -. 이 명령을 사용하면 더 이상 사용하지 않는 패키지 설치 파일을 자동을 찾아서 제거해 준다.




#08. 설치된 패키지 목록 확인


 $ apt-cache pkgnames


 시스템에 설치된 패키지  목록을 보여준다. 리스트가 매우 길기 때문에 확인하기가 어려울 수 있다.

 이 명령보다는 시냅틱 패키지 관리자(Synaptic Package Manager)를 이용해서 확인하는게 더 편리하다.




#09. 라이브러리 의존성 확인


 $ apt-cache depends 패키지명


 지정한 패키지가 어떤 라이브러리에 의존성이  있는지 보여준다. 보통 의존성이 있는 라이브러리를 apt 패키지 관리자가 알아서 같이  설치해 주기 때문에, 보통은 확인 할 필요가 없다.



#11. 패키지 명 검색


 $ apt-cache search 패키지명


 패키지명을 일부라도  입력하면 검색해서 결과를 보여준다. 설치된 패키지뿐만 아니라 서버에서 관리되는 모든 패키지를 검색할 수 있다.




반응형
//