본문 바로가기

개인적으로 공부한 것을 정리해 놓은 블로그입니다 틀린 것이 있으면 댓글 부탁 드립니다!


Linux

리눅스 공부 8 -설치 관리자 (dpkg 와 apt ), 자바 버전 관리

반응형

리눅스에서 특정 프로그램을 다운받았을때 압축본 혹은 deb라는 파일로 다운 받게된다.

압축본 같은 경우에는 압축을 풀어서 사용자가 설정후에 사용하고

deb확장자는는 설치관리자를 통해 설치되는데도 설정들이 설정된다. 

 

jdk를 예를들면 이전시간에 jdk.tar.gz 파일을 받아서 해제하고 환경변수를 설정하고 했지만 

deb확장자의 jdk를 다운받으면 dpkg라는 데비안 설치관리자를 통해 설정과 설치가 이뤄진다. 

사실 요즘에는 다른 패키지 관리자들을 사용하지만 기본이 되는 내용이니 알아는 둬야겠다. 

 

https://packages.ubuntu.com 에 들어가면 ubuntu에서 다운 받을 수 있는 패키지가 뭐가 있는지 알 수 있다.

 

tree 라는 패키지 시각화 프로그램을 다운 받아 보려한다. 

 

wget http://kr.archive.ubuntu.com/ubuntu/pool/universe/t/tree/tree_1.7.0-3_amd64.deb  (64비트)

 

wget을 통해 deb 확장자의 tree를 받을 수 있다. 원하는 폴더에서 해당 명령어를 쳐주면 파일이 웹을 통해 받아진다.

 

다운 받은  deb파일을 sudo dpkg -i 파일명.deb 명령어를 통해 설치할 수 있다. 프로그램 설치나 제거는 관리자권한으로만 가능하다. 

 

 

 

dpkg -i tree_1.7.0-3_amd64.deb  명령어로 tree를 설치했다  해당 명령어 아래로 쭉 살펴보면 패키지가 언패키징되고 셋팅되는 과정이 나온다 설치와 설정을 dpkg가 해주는 것이다 

 

설치완료후 tree라는 명령어를 사용하면 패키지 구조가 시각화 되서 나온다. 

 

dpkg --help를 쳐보면 옵션들이 나온다 맨 아랫줄을 보면

 

유저 친화적인 apt 혹은 aptitude를 사용하라고 나온다 . 

 

dpkg는 이정도면 알아두면 될 것 같다.  

 

 

APT (Advanced Packaging Tool)

 

이름 자체가 향상된  패키징 도구다 

 

위의 dpkg 같은 경우 wget을 통해 다운받고 dpkg로 설치하고 했지만 

 

APT 같은 경우는 mvnrepository와 같이 우분투 패키지 저장소라는 원격 저장소에 패키지들이 저장되어 있고 

 

그것을 다운받으면 설치와 설정까지 알아서 해준다.

 

/etc/apt/sources.list 를 보면  package 원격 저장소들의 리스트가 적혀있다.   

 

apt의 옵션들

 

- apt-cache 혹은 apt-get만 치면 해당 기능의 옵션들이 나오니 참고하면 된다.

 

apt-get update : sources.list에 있는 저장소를 뒤져서 제공하는 패키지를  캐시화 한다.

apt-get dist-update : 의존성 검사까지 함께  목록을 갱신한다. 

 

apt-cache search 패키지명 : cache에서 원하는 패키지를 찾는다 . 

apt-cache show  패키지명: 특정 패키지의 정보를 나타낸다.

apt-cache pkgnames : 패키지이름만 출력한다 

 

apt-get install  패키지명 : 패키지를 설치한다.

 

 

패키지명이 워낙 많으니 | 을 통해 필터링을 해줄 수 있다 .  ( | 은 왼쪽의 결과를 오른쪽으로 넘겨 처리한다.)

 

예를들어 패키지 명에서 jdk가 포함되는 것만 검색하고싶다면 

 

apt-get pkgnames | grep jdk <- 패키지명만 검색하고 검색한 것에서 jdk가 들어간 것만 골라낸다.

 

결과

 

 

자바 11을 받아보자

 

sudo apt-get install openjdk-11-jdk  

 

설치 후에  java -version 으로 자바 버전을 확인해보면  자바 11버전이 출력된다. 

 

환경변수까지 알아서 추가 됬다. 

 

현재 이미 8버전이 깔려 있기 떄문에 whereis java 로 java가 어디어디에 깔려있는지 

 

확인 해보면 apt를 통해받은 java 11은 /usr/bin/java 폴더에 설치되는데

 

환경변수에서 직접 설치한 java 8보다  더 앞 순서로 등록되어있기 떄문에 

 

java 8이 아닌 java 11이 실행된다.

 

 

이렇게 한 프로그램안에 여러개 java 버전이 있을때  버전을 선택하여 사용하는 방법을 알아보자 

 

 

PPA (Personal Package Arcive)

 

apt는 기본적으로 /etc/apt/sources.list에 들어 있는 원격 저장소에서 패키지들을 가져온다. 

 

만약 원하는 패키지가 없을때 sources.list에 원하는 패키지를 가지고 있는 저장소를 추가해야한다. 

 

런치패드라는 개인 저장소를 제공하는 커뮤니티에서  유저들이 자신의 저장소에 패키지들을 올려놓고 

 

다른 유저들이 다운 받을 수 있게 해주는데  이런 저장소를  PPA라한다  

 

예를 들면 jdk 8 같은 경우 apt-get pkgnames | grep openjdk-8 로 찾아보면 없다 . 

 

떄문에 다른 유저의 PPA에서 가져와야한다 . 구글에 openjdk 8 ppa ubuntu라고 쳐보면 

 

많은 PPA 들이 나온다 대부분 설명 PPA를 추가하는 스크립트들이 잘 적혀있으니 보고 따라하면 된다. 

 

https://launchpad.net/~openjdk-r/+archive/ubuntu/ppa  

 

위의  링크는 오픈 jdk 여러 버전들이 저장되있는 PPA이다

 

PPA를 추가하는 스크립트도 나와있다 따라서 쳐보자 

 

ppa를 추가 했으면 apt-get update로 업데이트 해주면된다 

 

 

openjdk-8-jdk 가 잘 추가되었다. 

 

 

 

linux 자바 버전 선택하여 사용 

 

 

현재 우분투가 가지고 있는 자바버전을 확인을 원하면 

 

update-java-alternatives -l  을 치면된다. 

 

 

 

우분투에 자바 버전이 2개가 있다 

 

update-java-alternatives -s  패키지명   <- 명령어로 자바 버전을 바꿀 수 있다 . 

 

근데 위의 명령어로 할시에 no alterantives for mozilla-javaplugin.so 라고 에러가 뜬다. 

 

하지만 jdk 버전은 잘 바뀐다.  

 

찾아보니 일종의 버그라고한다. 

 

해결을 위해 두가지 방법이있따 

 

sudo update-java-alternative —jre-headless -s java-1.8.0-openjdk-amd64

 

  jre를 healess 버전으로 실행시켜야한다  (제대로 이해한건지 모르겠어서 이유는 못적겠다.)

 

sudo update-alternatives --config java

 

위의 명령을 실행시키면 

 

아래 그림과 같이 출력된다. 

 

 

 

깔려있는 자바리스트가 쫙나오고 선택 해주면 된다. 확인과 선택을 한번에 할 수 있는게 이 방법이 편한 것 같다.

 

 

 

MacOs 의 패키지관리자 homebrew 

 

맥os 역시 linux와 같은 unix 기반의 운영체제이다 POSIX라는 unix 표준을 따르기 떄문에 사용법은 비슷하다. 

 

MacOs에서는 homebrew 라는 패키지 매니저를 사용하는데 루비기반으로 만들어 졌으며 현재  표준으로 사용되는 

 

패키지 매니저이다 

 

https://www.44bits.io/ko/keyword/homebrew  homebrew 에 대해서는 왼쪽의 링크로들어가서 보면 정말 잘 정리되어 있다. 

 

https://www.lifewire.com/mac-os-x-is-not-linux-distribution-2204744 (MacOS 와 Linux 차이의차이)

 

MacOS를 사용한다면 읽어보면 좋을 것 같다. 

 

반응형