- C계열
- Python
- Java
C언어를 컴파일할 수 있는 환경을 구축해 보자.
우분투에서는 C계열 언어를 지원하기 위해 build-essential이라는 패키지로 묶여 제공되고 있습니다.
apt show build-essential
Package: build-essential
Version: 12.9ubuntu3
Priority: optional
Build-Essential: yes
Section: devel
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Matthias Klose <doko@debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 21.5 kB
Depends: libc6-dev | libc-dev, gcc (>= 4:10.2), g++ (>= 4:10.2), make, dpkg-dev (>= 1.17.11)
Task: ubuntustudio-video, ubuntu-mate-core, ubuntu-mate-desktop
Download-Size: 4744 B
APT-Sources: http://archive.ubuntu.com/ubuntujammy/main amd64 Packages
Description: Informational list of build-essential packages
If you do not plan to build Debian packages, you don't need this
package. Starting with dpkg (>= 1.14.18) this package is required
for building Debian packages.
.
This package contains an informational list of packages which are
considered essential for building Debian packages. This package also
depends on the packages on that list, to make it easy to have the
build-essential packages installed.
.
If you have this package installed, you only need to install whatever
a package specifies as its build-time dependencies to build the
package. Conversely, if you are determining what your package needs
to build-depend on, you can always leave out the packages this
package depends on.
.
This package is NOT the definition of what packages are
build-essential; the real definition is in the Debian Policy Manual.
This package contains merely an informational list, which is all
most people need. However, if this package and the manual disagree,
the manual is correct.
GCC와 같은 Object Dump Linker는 binutils라는 패키지로 제공되고 있습니다.
$ apt show binutils
Package: binutils
Version: 2.38-4ubuntu2.1
Priority: optional
Build-Essential: yes
Section: devel
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Matthias Klose <doko@debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 115 kB
Provides: binutils-gold, elf-binutils
Depends: binutils-common (= 2.38-4ubuntu2.1), libbinutils (= 2.38-4ubuntu2.1), binutils-x86-64-linux-gnu (= 2.38-4ubuntu2.1)
Suggests: binutils-doc (>= 2.38-4ubuntu2.1)
Conflicts: binutils-mingw-w64-i686 (<< 2.23.52.20130612-1+3), binutils-mingw-w64-x86-64 (<< 2.23.52.20130612-1+3), binutils-multiarch (<< 2.27-8), modutils (<< 2.4.19-1)
Homepage: https://www.gnu.org/software/binutils/
Task: server-minimal, cloud-image, ubuntu-wsl, server, ubuntu-server-raspi, ubuntustudio-video, ubuntustudio-publishing, ubuntu-mate-core, ubuntu-mate-desktop
Download-Size: 3198 B
APT-Manual-Installed: no
APT-Sources: http://archive.ubuntu.com/ubuntujammy-updates/main amd64 Packages
Description: GNU assembler, linker and binary utilities
The programs in this package are used to assemble, link and manipulate
binary and object files. They may be used in conjunction with a compiler
and various libraries to build programs.
다만 WSL 환경에서 우분투를 설치하니 build-essential 패키지가 기본적으로 설치가 되지 않습니다. 따라서 이 부분은 별도로 설치를 진행해야 할 것 같습니다. 설명을 읽어보면 데비안 패키지를 빌드할 계획이 없다면 필요하지 않고 dpkg( >= 1.14.18)부터는 이 패키지가 필요하다고 합니다.
이를 위해 다음 명령어를 통해 설치해 주도록 하겠습니다.
sudo apt update
sudo apt install build-essential
설치 이후 gcc, g++, make 명령어가 활성화 됐는지 확인해 주시거나 버전을 확인해 주시면 됩니다.
이제 C언어 개발환경이 완료되었습니다.
1. 먼저 C 소스 코드 파일을 작성하거나 준비합니다. 일반적으로 `. c` 확장자를 가진 파일입니다. 예를 들어, `hello.c`라는 파일을 작성합니다.
#include <stdio.h>
int main(){
printf("hello.world\n");
}
2. 터미널 또는 명령 프롬프트를 열고, GCC 컴파일러를 실행합니다. 다음과 같은 명령어를 사용합니다:
gcc -o 출력_파일명 입력_파일명. c
여기서 `-o` 옵션은 출력 파일의 이름을 지정하는 데 사용되며, `입력_파일명. c`는 빌드하려는 C 코드 파일의 이름입니다.
예를 들어, 다음 명령어를 실행하여 `hello.c` 파일을 `hello`라는 이름의 실행 파일로 빌드할 수 있습니다:
gcc -o hello hello.c
명령어를 실행하면 GCC는 C 코드를 컴파일하여 기계어로 변환하고, 출력 파일로 명시한 이름의 실행 파일을 생성합니다. 만약 컴파일 과정에 오류가 발생하지 않는다면, 빌드된 실행 파일이 현재 작업 디렉터리에 생성됩니다.
4. 생성된 실행 파일을 실행하려면, 터미널 또는 명령 프롬프트에서 다음 명령어를 실행합니다:
./출력_파일명
위 예시에서는 `./hello`를 입력하여 `hello`라는 이름의 실행 파일을 실행할 수 있습니다.
python 환경을 확인해 보자.
현재 우분투가 공식적으로 지원하는 파이썬 패키지는 3.10, 3.9, 3.8, 3.7, 3.6입니다. 우분투 22.04 LTS에서는 파이썬 3.10이 기본적으로 설치되어 있으며, 우분투 20.04 LTS에서는 파이썬 3.8이 기본적으로 설치되어 있습니다
oncerun@DESKTOP-GAC7M8H:~$ python --version
Command 'python' not found, did you mean:
command 'python3' from deb python3
command 'python' from deb python-is-python3
oncerun@DESKTOP-GAC7M8H:~$ python3 --version
Python 3.10.6
- Ubuntu 18.04 LTS (Bionic Beaver): Python 2.7 및 Python 3.6까지 공식 지원
- Ubuntu 20.04 LTS (Focal Fossa): Python 2는 더 이상 공식적으로 지원되지 않으며, Python 3.8까지 공식 지원
- Ubuntu 21.04 (Hirsute Hippo): Python 2는 더 이상 공식적으로 지원되지 않으며, Python 3.9까지 공식 지원
즉, Ubuntu 18.04 LTS에서는 Python 2.7 및 Python 3.6을, Ubuntu 20.04 LTS에서는 Python 3.8을, Ubuntu 21.04에서는 Python 3.9를 우분투 22.04 LTS에서는 Python 3.10을 공식적으로 사용할 수 있습니다.
기본적으로 파이썬을 설치가 되어있다. 리눅스의 몇몇의 시스템 기능이 파이썬으로 작성되어 있기 때문에 파이썬을 지우는 행위는 추천하지 않는다.
pip라는 파이썬 패키지 관리자를 설치해 보자.
Python 3 패키지 앞에는 python3-, Python 2 패키지 앞에는 python2-가 붙습니다.
sudo apt update sudo apt install python3-pip
파이썬은 버전에 매우 민감하기 때문에 보통 가상환경을 만들어서 사용합니다.
이를 위해 anaconda라는 파이썬 패키지를 사용합니다.
https://repo.anaconda.com/archive/
해당 아카이브에서 특정 wget 혹은 curl을 통해 받는 것을 추천드립니다.
curl은 명령 줄 인터페이스를 통해 데이터를 전송하거나 받을 수 있는 컴퓨터 프로그램입니다. 주로 웹 서비스와 상호 작용하기 위해 사용되며, URL을 통해 데이터를 가져오거나 보낼 수 있습니다.
curl은 다양한 프로토콜을 지원하며, HTTP, HTTPS, FTP, SCP, SFTP 등을 사용하여 데이터를 전송할 수 있습니다. 주로 데이터 전송과 관련된 다양한 작업을 수행할 수 있는 다양한 옵션을 제공합니다.
일반적으로 curl은 다음과 같은 용도로 사용될 수 있습니다:
1. HTTP 요청 전송: curl을 사용하여 URL로 HTTP GET, POST, PUT, DELETE 등의 요청을 보낼 수 있습니다. 웹 서비스 API와 상호 작용하거나 웹 페이지의 내용을 가져올 수 있습니다.
2. 파일 다운로드: curl을 사용하여 웹 상의 파일을 다운로드할 수 있습니다. 예를 들어, curl을 사용하여 파일의 URL을 지정하면 해당 파일을 로컬 컴퓨터로 다운로드할 수 있습니다.
3. 파일 업로드: curl을 사용하여 로컬 컴퓨터의 파일을 원격 서버로 업로드할 수 있습니다. 예를 들어, HTTP POST 요청을 사용하여 파일을 웹 서비스에 업로드할 수 있습니다.
4. 헤더 정보 가져오기: curl을 사용하여 웹 서버에서 헤더 정보를 가져올 수 있습니다. 이를 통해 웹 서버의 응답 상태 코드, MIME 유형, 쿠키 등의 정보를 확인할 수 있습니다.
curl은 다양한 옵션을 제공하여 다양한 작업을 수행할 수 있습니다. 몇 가지 일반적인 curl 옵션은 다음과 같습니다:
- `-X, --request <command>`: HTTP 요청 메서드를 지정합니다. 예를 들어 `-X GET`은 GET 요청을 보내는 것을 의미합니다.
- `-d, --data <data>`: POST 요청 시 전송할 데이터를 지정합니다. JSON, XML 또는 폼 데이터와 같은 다양한 형식을 지원합니다.
- `-H, --header <header>`: 요청에 사용할 헤더를 추가합니다. 여러 개의 헤더를 지정할 수 있습니다.
- `-i, --include`: 응답에 헤더를 포함하여 출력합니다.
- `-o, --output <file>`: 다운로드한 데이터를 지정한 파일에 저장합니다.
- `-F, --form <name=content>`: 멀티파트 폼 데이터를 전송하기 위해 사용됩니다.
- `-u, --user <user:password>`: 인증을 위해 사용자 이름과 비밀번호를 지정합니다.
- `-L, --location`: 서버가 리디렉션을 할 경우, 리디렉션을 따라갑니다.
- `-v, --verbose`: 자세한 출력을 표시하여 디버깅에 도움을 줍니다.
- `-c, --cookie <cookie>`: 쿠키를 지정하여 요청에 포함시킵니다.
- `-s, --silent`: 진행 상황을 표시하지 않고 조용히 실행합니다.
위의 목록은 일부 일반적인 curl 옵션입니다. curl에는 더 많은 옵션이 있으며, 자세한 내용은 `curl --help` 명령을 통해 curl의 옵션 목록을 확인하시면 됩니다.
우분투 22 LTS에는 기본적으로 설치가 되어있습니다. 다음 명령어로 설치할 수 있습니다.
curl -o https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh
아나콘다는 기본적으로 용량이 꽤 큰 편이기 때문에 하드디스크 공간을 확인해주어야 합니다.
아나콘다의 init을 통해 초기화를 해주었다면. bashrc 파일이 수정되는데, 이를 유지하려면 source ~/. bashrc를 통해 적용을 해주면 된다.
자바를 설치해 보자.
c와 파이썬과 달리 자바는 기본적으로 설치가 되어있지 않다. 런타임 환경이나, 개발을 위한 환경인지 확인하고
jdk, jre를 골라 설치하면 된다. 다만 오라클이 인수하면서 openjdk를 보통 설치하게 된다.
sudo apt install openjdk-11-jre-headless # version 11.0.19+7~us1-0ubuntu1~22.04.1, or
sudo apt install default-jre # version 2:1.11-72build2
sudo apt install openjdk-17-jre-headless # version 17.0.7+7~us1-0ubuntu1~22.04.2
sudo apt install openjdk-18-jre-headless # version 18.0.2+9-2~22.04
sudo apt install openjdk-19-jre-headless # version 19.0.2+7-0ubuntu3~22.04
sudo apt install openjdk-8-jre-headless # version 8u372-ga~us1-0ubuntu1~22.04
sudo apt install openjdk-11-jdk-headless # version 11.0.19+7~us1-0ubuntu1~22.04.1, or
sudo apt install default-jdk # version 2:1.11-72build2
sudo apt install ecj # version 3.16.0-1
sudo apt install openjdk-17-jdk-headless # version 17.0.7+7~us1-0ubuntu1~22.04.2
sudo apt install openjdk-18-jdk-headless # version 18.0.2+9-2~22.04
sudo apt install openjdk-19-jdk-headless # version 19.0.2+7-0ubuntu3~22.04
sudo apt install openjdk-8-jdk-headless # version 8u372-ga~us1-0ubuntu1~22.04
우분투 공식 배포판에서 제공하는 openjdk, jre는 위 명령어를 통해 설치할 수 있다. (ecj는 이클립스에서 만든 컴파일러가 포함된 것 같다)
$ apt show default-jdk
Package: default-jdk
Version: 2:1.11-72build2
Priority: optional
Section: devel
Source: java-common (0.72build2)
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Java Maintainers <pkg-java-maintainers@lists.alioth.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 6144 B
Provides: java-sdk, java10-sdk, java11-sdk, java2-sdk, java5-sdk, java6-sdk, java7-sdk, java8-sdk, java9-sdk
Depends: default-jre (= 2:1.11-72build2), default-jdk-headless (= 2:1.11-72build2), openjdk-11-jdk
Homepage: https://wiki.debian.org/Java/
Cnf-Extra-Commands: javac,javadoc,jar
Download-Size: 908 B
APT-Sources: http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages
Description: Standard Java or Java compatible Development Kit
This dependency package points to the Java runtime, or Java compatible
development kit recommended for this architecture, which is
openjdk-11-jdk for amd64.
현재 default-jdk를 설치하면 openjdk-11 버전이 기본적으로 설치되는 것 같다.
만약 여러버 전의 jdk를 관리하고 싶다면 update-alternatives에 자바를 등록하여 변경할 수 있다는 점을 알아두자.
우분투에서 docker를 구축하는 방법은 다양하다.
https://docs.docker.com/engine/install/ubuntu/
1. apt를 이용하기.
sudo apt search docker.io
이는 비공식적이라고 합니다. 실제 도커의 공식문서를 확인하고 다운로드하여야 합니다.
2. 도커 리포지토리 설정하여 다운로드하기.
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
//docker 공식 GPG 키 추가
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
//docker repository 설정
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
// 패키지 색인 업데이트
sudo apt-get update
//설치
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
//확인
sudo docker run hello-world
3. 배치 쉘 스크립트로 쉽게 받기
이는 일반인 사용자도 쉽게 도커를 설치하기 위한 쉘 스크립트이다.
curl -fsSL https://get.docker.com | sudo sh
//option
-f, --fail: 서버에서 오류 응답 (HTTP 상태 코드 400 이상)을 받으면 오류를 표시하고 curl을 종료합니다.
-s, --silent: 진행 상황을 표시하지 않고 조용히 실행합니다. 오류 메시지를 출력하지 않습니다.
-S, --show-error: 오류 응답을 받았을 때 오류 메시지를 표시합니다.
-L 옵션은 리다이렉트를 따라가기를 의미합니다.
* docker를 윈도에 설치했다면 wsl ubuntu 배포판을 사용하는 경우 도커 명령어가 안될 수 있는데 Settings -> Resources -> WSL Integration에 Enable integration with additional distros에 원하는 배포판을 활성화하면 배포판에서 docker 사용이 가능하다.
wsl의 이미지 저장 위치 변경은 다음을 참고하자
https://www.neozest.com/entry/ChangeDefaultDockerImageLocationOnWindows
wsl이 아닌 경우 보통 /var/lib/docker에 저장하게 된다.
이는 root 디렉터리에 마운트가 되어 있는데, 이를 꽉 차게 되면 리눅스를 정상적으로 사용할 수 없게 된다.
도커의 설정파일 위치를 찾는다 기본적으로는 /lib/systemd/system/docker.service 파일에 설정된다.
여기서 ExecStart 설정 뒤에 "--data-root=/원하는 폴더 경로"를 추가해 주면 된다.
설정 파일을 변경해 주었으니 sudo systemctl daemon-reload를 통해 메모리에 다시 올려주고 이후 systemctl restart docker를 통해 재시작을 해주면 된다.
'Linux > Ubuntu' 카테고리의 다른 글
환경 구축 (0) | 2022.03.07 |
---|---|
Advanced Package Tool을 이용한 jdk설치 (0) | 2020.09.29 |
사용자 계정 만들기 (0) | 2020.09.10 |
댓글