PPA와 update-java-alternatives를 이용한 JDK 설치하기


PPA (Personal Package Archive) 를 이용한 소프트웨어 설치


ppa는 ubuntu를 제공하는 canonical이 함께 운영하는 플랫폼이다

 

canonical 제공 PPA 사이트
https://launchpad.net/

 

개인화된 우분투 패키지를 호스팅도 해주고 사용자가 직접 작성한 패키지를 업로드해서 사용하거나 할 수 있다

(maven 사용할 때 사용자 아키타입 올라가 있는 원격 저장소 생각하면 됨)
이곳에서 원하는 패키지의 주소를 가져온다
 

openjdk ppa ubuntu 구글링

Open JDK 8버전 ppa
검색 결과 : https://launchpad.net/~openjdk-r/+archive/ubuntu/ppa


사이트에서 하라는 대로 그대로 따라 쳐준다

sudo add-apt-repository ppa:openjdk-r/ppa PPA 주소 추가
sudo apt-get update apt resouces 업데이트
apt-cache search jdk | grep jdk 목록에 제대로 업데이트 되었는지 확인
sudo apt-get install openjdk-8-jdk JDK8 버전 설치


openJDK 8버전 설치 완료

java -version 이나 whereis java 로 어디에 있는 어떤 버전을 사용 중인지 확인해본다


기타) Oracle JDK 8버전 ppa (라이선스 있음)
https://launchpad.net/~webupd8team/+archive/ubuntu/java



update-java-alternatives를 이용해 JDK 버전 선택적으로 사용하기

 

update-java-alternatives -l  설치된 java 목록 보기
sudo update-java-alternatives -s packagename packagename으로 jdk 변경



 



<향상된 패키지 관리 도구 APT를 이용한 OpenJDK 설치하기>

 


소프트웨어 설치 with APT (Advanced Packaging Tool)


우분투 패키지 저장소라는 원격 저장소에서 왠만한 툴들을 저장하고 있어서 따로 찾아올 필요가 없다

/etc/apt/sources.list 저장소 정보 목록

 

명령어
apt-get update 저장소 패키지 정보를 업데이트
apt-get dist-update 의존성 검사를 통한 목록 갱신
apt-cache search X 패키지 검색
apt-cache show X 패키지 정보 보기
apt-get install X 패키지 설치
apt-get remove X 패키지 실행파일만 제거
apt-get purge X 패키지 설정파일까지 모두 제거

 

유용한 명령어  
apt-cache pkgnames | less 설치할 수 있는 패키지 less 목록으로 보기
apt-cache search jdk | grep jdk jdk 검색
apt-cache pkgnames | grep jdk 뒤에 붙는 설명을 보기 싫을 때 사용
sudo apt-get install openjdk-11-jdk jdk11버전 설치 (jdk8 버전은 따로 정보를 추가해줘야 한다)


APT cache에 JDK8 버전이 없다면 PPA를 이용해 설치하자


 

 

<Debian 설치 패키지 관리자>

 


dpkg : package manager for Debian

윈도우의 msi 같은 것을 생각하면 된다
설치 후 환경 설정까지 도와줌
배포본을 어떤 것을 사용하느냐에 따라 패키지 관리자는 다르고 당연히 확장자도 다름


 

패키지 설치

 

$ dpkg -i packagename.deb

이런식으로 설치한다

dpkg같은 설치 관리자는 os마다 프로그램은 다르지만 기본적으로 깔려있으니 설치하려들지 말자

뭘 설치하려는지만 찾으면 된다


우분투 패키지 사이트 : https://packages.ubuntu.com/

Browse through the lists of packages: 의 리스트는 Ubuntu 버전명들이다
18.04LTS처럼 버전을 숫자로 표기하는 경우도 있고, trusty, xenial 식으로 연대표처럼 코드명으로 나눈 경우도 있음

여기서 원하는 패키지를 검색해서 인스톨하면 됨

 

tree 설치해보기


디렉토리 내부를 tree 구조로 보기 편하게 만들어주는 패키지

패키지 사이트 Search the contents of packages에서 tree 검색
file이 /user/bin/tree 인 것을 클릭해서 패키지로 들어간다
cpu Architecture amd64 클릭
Asia 쪽 미러사이트 주소 복사

$wget 주소붙여넣기

cd ~/download/
sudo dpkg -i 다운받은설치파일.deb

 

설치까지 완료됬으면 이제 tree명령어를 ls처럼 사용해주면 된다

tree tree 구조로 디렉토리 및 파일 보기


 

자주쓰는 옵션
dpkg -? 도움말 보기
dpkg -l 현재 설치된 패키지 목록 보기 (dpkg -l packagename packagename이 설치되어있는지 확인)
dpkg -L 해당 패키지가 어디에 설치되어있는지 확인
dpkg -i 패키지 설치
dpkg -r 패키지 실행파일만 삭제
dpkg -P 패키지 설정파일까지 모두 삭제

 

팁) 사실 더 좋은게 있어서 dpkg는 쓰이지 않는다 (...)

 


JDK 설치에 관해
oracle 사이트에서 deb 파일도 지원하고 있으므로 JDK를 받아서 사용하면 된다
(없으면 rpm 파일을 받아서 에일리언 툴을 써서 패키지 전환을 하거나 tar.gz 압축 버전을 받아서 풀어써야 한다)
또는 APT를 사용해서 편하게 설치한다


 

 

< JDK 전역화 하기 (시스템 환경변수 설정하기) >

 

 

시스템 수준의 JDK 설치하기

 

 

현재 개인 사용자의 홈디렉토리에(~) JDK 파일이 위치해 있다면
먼저 압축 푼 JDK 폴더를 windows의 program files와 같은 사용자들이 공용으로 사용하는 폴더로 옮겨준다

sudo mkdir /usr/local/java
sudo mv ~/download/jdk1.8.0/ /usr/local/java/

 

파일 내 PATH 문자열 끝에 JDK :실행경로를 추가해준다

sudo nano /etc/environment
PATH="/~:/usr/local/java/bin"

 

잘 등록되었는지 확인해보자

cat /etc/environment
파일에는 잘 등록되어도 재로그인 하지 않으면 echo $PATH에 보이지 않는다


재로그인 하는 게 번거롭다면 source 명령어를 사용한다

source /etc/environment


단 souce 사용 시 environment만 읽어오므로 Run Level 스크립트 코드에 따라 절차적으로 진행되어야 할
개인 사용자 설정은 읽어오지 않으므로 홈디렉토리 환경변수도 기존 절차에 따라 추가적으로 읽어와야 한다

source ~/.profile


찝찝하면 그냥 재로그인 하면 됨

 


잘 적용되었는지 확인
echo $PATH
java -version


+ 다른 계정에서도 잘 사용되는지 확인


나중에 Tomcat 등의 WAS를 사용할 때는 JDK 디렉토리의 rwxs권한과 소유권자, 소유권그룹을 설정해줘야 한다

(서버 프로그램이 끌어다 쓰는 거니까 권한 설정 해줘야함)



 

 

<프로필과 환경변수를 설정하는 방법>

 

 

전에 봤던 거 참고하자

초기화 스크립트 작성 위치
1) BIOS (Basic Input Output System)
2) Master Boot Record (MBR)
3) LILO or GRUB
4) Kernel
5) init : process number i(PID=1)
  -/linuxrc : load modules / initialize devices / exits
  -/sbin/init
    -/etc/inittab : run boot scripts
      -/etc/init.d/rcS
        -/etc/tcS.d/S* scripts
        -/etc/rc.boot/*
6) Run Levels


굵게 표시한 프로세스 순서에서 프로필과 환경변수 스크립트를 실행하는 파일들이 동작한다
저 경로에 기존 환경변수 설정 파일이나 프로필 설정 파일이 있다는 거다


Shell 스크립트 실행 순서
로그인 할 때 실행되는 스크립트 RC(Run Commands)
Bash 시작 스크립트
>
로그인 쉘 /bin/login first user log in runlevel #3  /etc/profile(모든 사용자 설정 파일) 
[/etc/bash.bashrc, /etc/profile.d] ~/.profile(개인 사용자 설정 파일)
>
비 로그인 쉘 /bin/bash or /bin/su or teminal virtual terminal run   /etc/bash/bashrc, ~/.bashrc
>
Bash 로그아웃 스크립트 ~/.bash_logout

 

원하는 건 저 두개임


모든 사용자 로그인 프로필 설정 방법1)
cd /etc profile 모든사용자 설정 파일 위치
sudo nano /etc/profile 코드 최하단에 프롬프트 설정, 컬러 등 명령어 추가 한 뒤 저장
source 명령어를 이용해 profile을 적용하거나 재로그인 해야 적용됨
모든 사용자 계정에 적용된 것을 확인한다

 

모든 사용자 로그인 프로필 설정 방법2)
cd /etc/profile.d 디렉토리로 이동
sudo nano alias.sh 원하는 .sh 파일을 만들어 설정 명령어를 작성
재로그인 후  적용된 것 확인

 

개인 사용자 로그인 프로필 설정 방법)
cd ~; ls -a 개인 홈 디렉토리 이동, 숨김 파일 및 디렉토리 확인 (.profile 숨겨져 있음)
nano .profile 코드 최하단에 명령어 추가한 뒤 저장
(미리 작성 된 코드 중 $PATH 관련 코드 제어문도 확인할 수 있다)  -여기서 조건문으로 불러오는구나 하면 된다
재로그인 후 개인 사용자 계정에만 적용된 것을 확인한다



Linux 데스크탑을 통해 DOS 창을 띄울 때는 비 로그인 쉘로 실행되는데 기존의 로그인 설정을 바탕으로
.bashrc 설정 파일만 실행된다
로그아웃 할 때마다 사용하고 싶은 스크립트 명령이 있다면 ~/.bash_logout에 작성해주면 된다



환경 변수를 설정할 수 있는 파일들

 


/etc/environment

환경변수 설정 파일

 

PAM (Pluggable Authentication Modules)
플러그형 인증 모듈

/etc/pam.d$ PAM을 사용하는 인증 서비스를 모아둔 곳

 

내용이 뭔지 보면
/etc/pam.d$ cat login
>> reading this file *in addition to /etc/environment* does not hurt
session required pam_env.so readenv=1 envfile=/etc/default/locale

pam 모듈을 사용하는 인증 서비스는 environment 폴더에서 읽어 들인다는 걸 알 수 있다

잘 모르겠지만 그냥 환경변수 설정 파일은 저 디렉토리에 이꾸나~ 하면 될듯


cat /etc/environment
>> PATH="/~:/~:/~"

environment 파일의 내부를 보면 환경 변수가 작성되어 있다
이걸 편집기로 조물딱 하면 환경변수를 편집할 수 있다

 

 

<컴퓨터 켜고 끄기와 Run Level>

 

 

리눅스 부팅 순서
1) BIOS (Basic Input Output System)
2) Master Boot Record (MBR)
3) LILO or GRUB
4) Kernel
5) init : process number i(PID=1)
  -/linuxrc : load modules / initialize devices / exits
    -/sbin/init
    -/etc/inittab : run boot scripts
      -/etc/init.d/rcS
      -/etc/tcS.d/S* scripts
        -/etc/rc.boot/*
6) Run Levels

 



리눅스 Run Levels

 

 

ps -p 1 ef (명령어) 1번 프로세스 목록 확인
/etc/rc (디렉토리 경로) 런 레벨에 따라 실행되는 프로그램들 위치

 


 
(rc0.d ~ rcS.d 위 스샷의 런 레벨에 따라 디렉토리로 묶여있음)

 

init number 명령어를 통해 해당하는 디렉토리의 스크립트들을 실행시켜줄 수 있다


 

컴퓨터 시작과 종료 명령어



종료 방법  
$poweroff 사용자가 자신 뿐일 경우 메세지 없이 바로 종료
$shutdown 여러 사용자가 사용할 경우 메세지를 날리는 방식으로 종료해줄 수 있다
$halt 종료
$init 0 종료
halt, reboot, poweroff, telinit, and shutdown are all one program

 

shutdown 옵션  
-H --halt Halt the machine
-P --poweroff Power-off the machine
-r --reboot Reboot the machine
-h Equivalent to --poweroff, overrridden by --halt
-k Don't halt/power-off/reboot, just send warnings
--no-wall Don't send wall message before halt/power-off/reboot

 

재시작
$reboot 다른 사용자가 사용중일 때는 root 계정으로 강제 재부팅
$shutdown  
$init 6  

 

AWS 사용 안하고 직접 설치한 서버에 원격으로 접속해서 켜고 끌때는 이렇게 하면 된다

서버가 옆에 있다면 그냥 전원 버튼 눌러서 끄셈

 

 

<명령어 별칭 만들어 사용하기>



자주 사용하는 ls 명령어도 별칭이다

 

확인해보자

type ls
>> ls is aliased to 'ls --color=auto'

 

type ll
>> ll is aliased to 'ls -alF'

 

 

 

별칭 만드는 법

 

alias 별칭='명령어 -옵션'
ex)
alias ls='ls --color=auto'


주의) 별칭 생성 또는 변경 후 프로필에 저장하지 않을 경우 종료 후 재진입하면 기본설정으로 돌아온다


 

 

<출력 색상 변경하기>

 


putty 같은 흰색 테마의 클라이언트로 원격접속해서 사용할 때는 그나마 괜찮지만
일반적인 콘솔로 Linux에서 작업하면 시커먼게 존내 안보이는 상태가 되버리기 때문에
가시성을 위해 출력색상을 변경하는 법을 알아두면 좋다

 

색상 변경 예
~$ LS_COLORS="di=0;33"

 

위와 같은 명령어로 변경해 줄 수 있다

di는 파일 종류, 뒤에 숫자는 텍스트 형식이다

 

파일 종류명
di directory
fi file
ln symbolic link
pi fifo file
so socket file
bd block (buffered) special file
cd character (unbuffered) special file
or symbolic link pointing to a non-existent file (orphan)
mi non-existent file pointed to by a symbolic link (visible when you type ls -l)
ex file which is executable (ie. has 'x' set in permissions)

 

텍스트 형식
0 default color
1 bold
4 underlined
5 flashing test
7 reverse field

 

굉장히 많기 때문에 참고 사이트 남김

텍스트 형식 및 색상표
참고 사이트 https://linuxhint.com/ls_colors_bash/


주의) 출력 색상 변경 후 프로필에 저장하지 않을 경우 종료 후 재진입하면 기본설정으로 돌아온다

+ Recent posts