임베디드 관련 카테고리/Linux command

로컬에서 패키지 설치 및 실행 스크립트 작성: wget, dpkg, echo, cat의 이해

CBJH 2024. 9. 28.
728x90
반응형

이 글에서는 로컬 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 패키지 설치 경로에 대한 개념도 다뤘습니다.


위 내용을 바탕으로, 로컬에서 패키지 설치와 테스트를 직접 해보시기 바랍니다. 더 많은 질문이 있으시면 언제든지 댓글로 남겨주세요!

댓글