이 글에서는 로컬 HTTP 서버에서 패키지를 배포하고, 다운로드하고, 해당 패키지를 설치해 실행하는 과정을 다룹니다. 중간중간 기본적인 Bash 명령어와 Python을 활용한 간단한 서버 구성에 대해 설명하며, 초보자도 이해할 수 있는 방식으로 풀어보았습니다.
1. 로컬에서 패키지 다운로드 및 설치 준비
로컬 환경에서 HTTP 요청을 처리하고 패키지를 다운로드하는 실습을 해보기 위해 다음의 도구들이 필요합니다.
필수 패키지 설치
먼저, 패키지를 만들기 위한 도구인 dpkg-dev와, HTTP 서버에서 파일을 다운로드할 때 사용되는 wget을 설치합니다.
sudo apt-get update
sudo apt-get install -y dpkg-dev wget
- dpkg-dev: Debian 패키지를 생성하고 관리할 수 있는 도구.
- wget: HTTP, HTTPS 프로토콜을 통해 파일을 다운로드하는 명령어.
Debian 패키지란?
Debian은 운영체제의 이름입니다. Debian 기반의 배포판인 우분투와 같은 시스템에서는 .deb 형식의 파일을 설치할 수 있습니다. Debian 패키지는 그 운영체제에서 소프트웨어를 배포하고 설치하는 포맷입니다. 따라서 이 예제에서는 실제로 사용할 수 있는 패키지를 만들어 설치해 보게 됩니다.
2. 간단한 패키지 만들기
이제 간단한 Debian 패키지를 만들어보겠습니다.
디렉터리 설정
먼저 패키지를 만들 디렉터리를 생성합니다.
mkdir -p ~/my-local-package/{DEBIAN,usr/local/bin}
- DEBIAN 디렉터리: 패키지의 메타데이터 파일이 들어가는 디렉터리.
- usr/local/bin 디렉터리: 실행 파일이 위치할 디렉터리.
패키지 메타정보 설정
DEBIAN/control 파일을 생성해 패키지 정보를 기록합니다. (패키지 생성 시 필요한 정보입니다)
cat <<EOF > ~/my-local-package/DEBIAN/control
Package: my-local-package
Version: 1.0
Section: base
Priority: optional
Architecture: all
Essential: no
Maintainer: Your Name <youremail@example.com>
Description: My simple local package
This is a simple example package for local HTTP testing.
EOF
간단한 스크립트 생성
usr/local/bin에 hello라는 스크립트를 작성합니다.
echo -e "#!/bin/bash\necho 'Hello from my local package!'" > ~/my-local-package/usr/local/bin/hello
chmod +x ~/my-local-package/usr/local/bin/hello
- echo -e: 이스케이프 시퀀스(예: \n을 사용해 줄 바꿈)를 처리할 수 있도록 합니다.
- \n: 줄 바꿈 문자를 의미합니다.
- chmod +x: 파일에 실행 권한을 부여합니다.
- vi, nano 편집기를 이용해 해당 경로에 스크립트를 작성해도됩니다.
Debian 패키지 생성
dpkg-deb 명령을 사용해 .deb 패키지를 생성합니다.
dpkg-deb --build ~/my-local-package
이 명령어로 Debian 패키지 파일인 my-local-package.deb가 생성됩니다.
3. 로컬 HTTP 서버 실행
로컬에서 HTTP 서버를 실행하기 위해 Python의 http.server 모듈을 사용합니다.
cd /tmp
python3 -m http.server 8080
- python3 -m http.server 8080: HTTP 서버를 실행하며, GET 요청을 처리하여 현재 디렉터리의 파일을 제공할 수 있습니다. Python의 http.server 모듈은 GET 요청을 기본적으로 처리할 수 있기 때문에, 파일을 다운로드할 수 있는 간단한 HTTP 서버 역할을 합니다.
- -m 은 모듈을 의미합니다. http.server 모듈을 실행합니다. (서버 실행 중엔 터미널을 사용 할 수 없으므로 다른 터미널을 하나 더 준비해줍니다.)
4. 패키지 다운로드 및 설치
패키지 다운로드
다른 터미널에서 wget을 사용해 로컬 HTTP 서버에서 Debian 패키지를 다운로드합니다.
wget http://localhost:8080/my-local-package.deb
- wget: 주어진 URL로부터 파일을 다운로드하며, 기본적으로 현재 경로에 파일을 저장합니다.
패키지 설치
dpkg 명령을 사용해 다운로드한 패키지를 설치합니다.
sudo dpkg -i my-local-package.deb
- dpkg -i: Debian 패키지 파일을 설치하는 명령어입니다. 여기서 **-i**는 install의 약자입니다.
- sudo dpkg -i ./my-local-pakage.deb와 같습니다. 현재 경로의 패키지를 설치합니다.
5. 패키지 설치 후 실행
이제 터미널에서 hello 명령어를 입력하면, 우리가 만든 스크립트가 실행됩니다. 이는 스크립트가 /usr/local/bin에 저장되어 있기 때문입니다.
hello
출력 결과
'Hello from my local package!'
왜 hello가 실행될까?
Bash는 PATH 환경 변수에 포함된 디렉터리에서 명령어를 찾습니다. **/usr/local/bin**은 이 환경 변수에 포함되어 있으며, 따라서 hello 명령어를 입력하면 해당 경로에서 실행 파일을 찾을 수 있습니다.
6. 패키지 설치 시 파일이 저장되는 경로
패키지를 설치하면, 스크립트 파일이나 실행 파일은 다음과 같은 표준 경로에 저장됩니다.
- /usr/local/bin: 주로 사용자 정의 소프트웨어 및 패키지들이 설치됩니다.
- /usr/bin: 시스템 기본 명령어들이 설치됩니다.
- /bin: 시스템 부팅 시 필요한 기본적인 명령어들이 설치됩니다.
설치된 패키지의 파일 경로는 dpkg -L 명령어를 사용해 확인할 수 있습니다.
dpkg -L my-local-package
이 명령어는 해당 패키지의 설치된 파일 목록을 보여줍니다.
결론
이 글에서는 로컬 HTTP 서버를 사용해 .deb 패키지를 다운로드하고 설치하는 방법을 살펴보았습니다. 또한 echo, wget, dpkg, cat 명령어의 동작과 역할에 대해서도 배웠습니다. http.server 모듈을 사용하여 로컬에서 간단한 HTTP 서버를 실행할 수 있고, 이를 통해 패키지를 테스트하고 설치할 수 있는 방법을 실습해볼 수 있었습니다. 추가로, PATH 환경 변수와 Debian 패키지 설치 경로에 대한 개념도 다뤘습니다.
위 내용을 바탕으로, 로컬에서 패키지 설치와 테스트를 직접 해보시기 바랍니다. 더 많은 질문이 있으시면 언제든지 댓글로 남겨주세요!
'임베디드 관련 카테고리 > Linux command' 카테고리의 다른 글
chmod 권한의 의미와 숫자 표현 (1) | 2024.10.26 |
---|---|
우분투 스크립트로 2년 뒤의 날짜 계산하기 (0) | 2024.10.03 |
[Linux, Ubuntu] awk 명령어로 개행 없이 한 줄로 파일 읽기 (1) | 2024.10.02 |
리눅스에서 cat과 echo의 차이점과 공통점 (0) | 2024.09.27 |
리눅스에서 자주 사용되는 용어와 개념 (1) | 2024.09.26 |
댓글