Ubuntu의 기본 Package 관리방법
https://ahyuo79.blogspot.com/2015/07/ubuntu.html
APT가 기존의 것보다 상당히 많은 것 같아서 아래와 같이 나열해본다.
- APT Command 관련 명령어
- apt-get
- apt-cache
- apt (apt-get/apt-cache 혼합)
- apt-add-repository (add-apt-repository와 동일 )
- apt-key
- apt-ftparchive
- apt-extracttemplates
- apt-key
- apt-mark
- apt-sortpkgs
상당히 많은 것 같은데, 현재 다 알필요가 없는 것 같아서 주요한 것만 다시 정리
- update-alternative 명령
- 내가 Download한 binary를 Package로 등록/삭제
- 설치되었으며, 중복된 Package 중 내가 원하는 Version 선택가능
- 관련 Manual
https://wiki.debian.org/HowToPackageForDebian
1.1 apt / update-alternatives 사용법
apt를 보면 apt-get/apt-cache 기능을 간략하게 사용하는 것 같다.
$ apt Usage: apt [options] command CLI for apt. Basic commands: list - list packages based on package names search - search in package descriptions show - show package details update - update list of available packages install - install packages remove - remove packages upgrade - upgrade the system by installing/upgrading packages full-upgrade - upgrade the system by removing/installing/upgrading packages edit-sources - edit the source information file
동일한 2개 Package를 설치했을 경우 선택가능 및 내가 원한것을 link로 연결하여 package에 연결한다.
$ sudo update-alternatives update-alternatives: 아래의 옵션 중에 하나를 선택해서 사용한다. --install link name path priority [--slave link name path]... --set name path --remove name path --remove-all name --all --auto name --display name --get-selections --set-selections --query name --list name --config name
- 실행파일 link 존재
- 설정관리 File 존재
2. 중복된 Package Version 변경 ( update-alternatives)
일반적으로 package 가 설치가 되면, /usr/bin/실행파일 link 파일생성이 되고 관련 Package와 연결이 되어있다.
그래서 중복된 Package이지만 Version 이 다른 것을 여러개 설치가 가능하다.
- OpenJDK 두 개의 Version 설치
$ sudo apt-get install openjdk-7-jdk openjdk-6-jdk
- OpenJDK 중 java 의 version 변경
$ ls /var/lib/dpkg/alternatives/ | grep java // 사용여부 확인 (등록된 Link 확인) java javac javadoc javah javap javaws $ sudo update-alternatives --config java // Version 설정변경 대체 항목 java에 대해 (/usr/bin/java 제공) 2개 선택이 있습니다. 선택 경로 우선순ꡬ태 ------------------------------------------------------------ 0 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 자동 모드 * 1 /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061 수동 모드 2 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 수동 모드
- OpenJDK의 java 설치위치 확인
$ sudo update-alternatives --list java /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
- OpenJDK의 java의 구조 파악
$ sudo update-alternatives --query java Name: java Link: /usr/bin/java Slaves: java.1.gz /usr/share/man/man1/java.1.gz Status: manual // Manual/Auto Mode Best: /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java // 추천해주는 Package (Auto mode) Value: /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java // 현재 사용중인 Package Alternative: /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java // 실제 설치된 대체 Package 주소 Priority: 1061 // 우선순위이며 Auto Mode일 경우 높은 것을 자동설정 Slaves: java.1.gz /usr/lib/jvm/java-6-openjdk-amd64/jre/man/man1/java.1.gz Alternative: /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java // 실제 설치된 대체 Package 주소 Priority: 1071 Slaves: java.1.gz /usr/lib/jvm/java-7-openjdk-amd64/jre/man/man1/java.1.gz
설정된 모드를 더 쉽게 보여준다.
$ sudo update-alternatives --display java java - 수동 모드 링크가 현재 /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 가리킴 /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java - 우선순위 1061 슬레이브 java.1.gz: /usr/lib/jvm/java-6-openjdk-amd64/jre/man/man1/java.1.gz /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java - 우선순위 1071 슬레이브 java.1.gz: /usr/lib/jvm/java-7-openjdk-amd64/jre/man/man1/java.1.gz 현재 가장 '좋은' 버전은 '/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java'입니다.
- java 실제 구조파악
$ ll /usr/bin/java lrwxrwxrwx 1 root root 22 2월 24 2017 /usr/bin/java -> /etc/alternatives/java* $ ll /etc/alternatives/java // 실행파일 link 존재 lrwxrwxrwx 1 root root 46 10월 16 12:49 /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java* $ vi /var/lib/dpkg/alternatives/java // 관련 설정정보 (수동모드) manual /usr/bin/java java.1.gz /usr/share/man/man1/java.1.gz /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061 /usr/lib/jvm/java-6-openjdk-amd64/jre/man/man1/java.1.gz /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 /usr/lib/jvm/java-7-openjdk-amd64/jre/man/man1/java.1.gz
- 로그를 통한 설정확인
$ ls /var/lib/dpkg/alternatives/ // 현재 update-alternatives를 설정된 file 전체검색 animate fonts-japanese-gothic.ttf jconsole newt-palette tdbbackup appletviewer from jdb orbd telnet automake ftp jexec pack200 text.plymouth awk gconftool jhat pager tnameserv builtins.7.gz gem jinfo php traceroute6 ...... $ cat /var/log/alternatives.log | tail -n 50 // 본인이 최근에 update-alternatives 사용한 흔적 ,더이전 log는 *.log.1 기록
3. Download 한 실행파일 연결/제거 (update-alternatives)
Open JDK Download
https://jdk.java.net/
https://jdk.java.net/archive/
OpenJDK를 Download 하여 Link를 설정해보고 Link를 제거해보자.
- 기본사용법
slave는 master 설정에 따라 동작한다고 한다.
- Link 생성 및 설정변경 (Link만 생성)
$ sudo update-alternatives --install /usr/bin/java java /home/jhlee/jdk-9/bin/java 1091 $ sudo update-alternatives --config java // 설정을 변경 대체 항목 java에 대해 (/usr/bin/java 제공) 3개 선택이 있습니다. 선택 경로 우선순ꡬ태 ------------------------------------------------------------ 0 /home/jhlee/jdk-9/bin/java 1091 자동 모드 1 /home/jhlee/jdk-9/bin/java 1091 수동 모드 * 2 /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061 수동 모드 3 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 수동 모드
- Link 제거 (Link만 제거)
$ sudo update-alternatives --remove java /home/jhlee/jdk-9/bin/java update-alternatives: 수동으로 선택한 대체 항목을 지우는 중 - java을(를) 자동 모드로 변경합니다 update-alternatives: using /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java to provide /usr/bin/java (java) in 자동 모드
https://blog.thinkbee.kr/linux/linux-update-alternatives/
https://askubuntu.com/questions/26498/how-to-choose-the-default-gcc-and-g-version
https://blog.thinkbee.kr/linux/linux-update-alternatives/