article thumbnail image
Published 2021. 9. 2. 12:00

패키지와 패키지 매니저

패키지 안에 존재하는 파일들
→ 패키지 안에는 모든 파일이 압축되어 있다
 

* 프로그램 파일
* 프로그램 설치 파일
* 프로그램 설치 설명서
* 프로그램에 대한 정보를 담은 파일

프로그램에 대한 정보를 담은 파일: 프로그램 A를 설치하기 위해 프로그램 B가 필요하다는 정보
→ 프로그램 A 설치를 위해 프로그램 B를 먼저 설치한다
 

패키지 매니저를 이용하지 않고 개별로 설치하는 경우?

여러 프로그램을 개별 설치하는 경우 각각의 프로그램이 저장된 위치를 모두 알아야 함
업데이트 여부를 확인하기 위해 주기적으로 저장소를 방문해서 확인
→ 프로그램 수가 늘어나면 이를 모두 확인하기 쉽나?

→ 이런 단점을 보완하는 도구: 패키지 매니저(일종의 앱 스토어/구글 스토어)
 

패키지 매니저의 용도: 업데이트 확인, 프로그램의 제거 등

학습 목표

* 패키지와 패키지 매니저의 필요성을 이해
* 각 운영체제에 맞는 패키지 매니저 사용
ubuntu: apt 패키지 매니저
    - apt update: 패키지의 업데이트 여부 확인
    - apt list –-upgradable: 업데이트 필요한 파일 조회
    - apt upgrade: 프로그램 업그레이드
    - apt show: 프로그램의 정보 확인
    - apt install: 프로그램 설치
    - apt list --installed: 설치된 프로그램 목록 보기
    - apt remove: 프로그램 삭제
    - apt search: 패키지 검색

ubuntu 패키지 매니저: apt

apt 명령어 이용하기

* 패키지 목록 갱신: apt update(관리자 권한 필요)
→ 패키지를 다운로드 받을 수 있는 여러 저장소의 최신 정보를 업데이트
→ 주로 패키지 설치 전 최신 정보 갱신시 사용
→ 설치된 프로그램이 새로운 버전으로 변경되지는 않는다!

* 업그레이드 가능한 패키지 목록을 출력: apt list --upgradable
* 전체 패키지 업그레이드(버전 업): apt upgrade (관리자 권한)
* 특정 패키지만 업그레이드(버전 업): apt --only -- upgrade install 패키지이름 (관리자 권한)
* 패키지 설치: apt install 패키지이름 (관리자 권한)
* 설치된 패키지 보기: apt list --installed
* 패키지 검색: apt search 검색어
* 패키지 정보확인: apt show 패키지이름
* 패키지 삭제: apt remove 패키지이름 (관리자권한)

관리자 권한 사용

sudo 명령어를 사용

> sudo apt install wget        #wget 패키지 설치시

# wget은 url을 통해 파일을 다운로드 받는 프로그램

뭔가 잘 안되서 강제 종료할 때는 ctrl+c
 
터미널 창에 붙여넣기: ctrl+shift+v


Node.js

런타임(runtime)

어떤 프로그램이 동작할 때, 프로그램이 동작하는 곳
→ 대표적으로 웹 브라우저(크롬, 사파리), node.js 등이 있음
→ node.js를 통해서 서버와 같은 다른 프로그램을 만들 수 있다

> node 파일이름

> node runnode.js    #runnode.js 파일을 node.js 런타임에서 실행

런타임이란 프로그래밍 언어가 실행되는 환경
node.js는 JavaScript 런타임

학습목표

* nvm, Nodejs, npm 을 설치하고 버전 확인
* node 명령어를 통해 JavaScript 파일을 실행
* package.json 파일을 확인하고 npm install을 사용

nvm & node.js

패키지 매니저처럼 node.js의 버전을 관리하는 프로그램: nvm(Node Version Manager)

nvm 설치

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash    #wget을 통해 해당 주소에서 설치

오류 날시
source .bashrc
source .zshrc

➜ ~ source .bashrc 
.bashrc:16: command not found: shopt .bashrc:24: command not found: shopt .bashrc:111: command not found: shopt /usr/share/bash-completion/bash_completion:45: command not found: shopt /usr/share/bash-completion/bash_completion:1512: parse error near `|' \[\e]0;\u@\h: \w\a\]\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$ 
source .zshrc 
➜ ~ nvm --version 
0.38.0
➜ ~

zsh와 oh-my-zsh를 깔았다면 환경변수 설정 문제로 인해 nvm 설치 후에 명령어가 없다고 할 수 있다. 이때는 ~/.bashrc 에 있는 nvm 환경변수 값(가장 최근에 추가되었으므로 가장 하단 line에 존재하는 약 3~4줄)을 복사해서 ~/.zshrc 에 붙여넣고 터미널을 재시작하면 된다

node.js 설치

> nvm install –lts        # 설치

> node -v            # 버전 확

nvm 간단 사용법

> nvm ls    # 현재 nvm을 통해 설치한 node version들을 출력
> nvm install 12.18.3    # 특정 버전을 설치하고 싶은 경우

> nvm use 버전숫자만    #nvm use 14.17.6

이런식으로 버전을 바꿔가면서 nvm으로 버전 관리할 수 있다
→ nvm은 다양한 node version을 설치하고 관리할 수 있는 프로그램


npm & package.json

> sudo apt install npm    # nvm 설치 후에 npm이 정상적으로 동작하지 않을 시 이렇게 수동 다운로드 하면됨

node로 js 파일 실행하기

> node 파일명.js    # node helloWorld.js    이런식으로하면 실행 결과 나옴

➜  helloworld node helloWorld.js 
Hello world!

npm과 package.json

남들이 만들어 놓은 모듈을 node.js에서는 npm 모듈이라 부른다
→ 이에 대한 정보를 담아둔 곳: package.json
→ 즉, 이 프로젝트(패키지) 전반에 관한 정보가 들어있음

npm: 일종의 모듈 스토어

→ 리눅스의 패키지 매니저: apt, masOS의 패키지 매니저: brew 이듯이

node.js 생태계의 패키지 매니저는 npm!

package.json

프로젝트에 관한 정보, CLI 에서 사용 가능한 명령(script), 개발과 관련된 dependency들(dependencies) 등이 적혀 있다
→ 일종의 제품 카탈로그!

중요한 점은 이 프로그램을 실행하기 위해 필요한 실제 모듈은 따로
node_modules 라는 폴더에 저장된다는 것. Package.json 에는 어떤 모듈인지만 적혀 있다!

이를 이용하면 프로젝트를 코드를 전달할 때 포함하고 있는 모든 모듈을 다 전달할 필요가 없다
→ package.json을 보고 직접 다운 받아서 사용(npm install 통해서)

devDependencies

의존성 모듈 들

devDependencies에는 이 프로젝트를 개발하는 환경에서 필요한 모듈들이 무엇인지가 적혀 있습니다. 예를 들면 코드 모양을 잡아주는 lint나 테스팅 모듈처럼, 실제 프로젝트 동작에 직접적으로 영향을 주지 않는 모듈들을 명시합니다.

> npm install mocha –save-dev    #--save-dev 옵션으롤 설치하면 자동으로 devDependencies에 추가됨

nvm vs npm

nvm: node들의 버전을 관리해 주는 매니저
npm: node.js의 기본 패키지 관리자

package.json

    script: CLI 에서 사용가능한 명령어들 실행시키기
    dependency: 이 프로젝트가 실행될 때 필요한 모듈들
    devDependency: 개발할 때 필요한 모듈들( ex. eslint, mocha, chai)

npm trends.com : 참고하면 좋을 사이트


CLI 명령어 더 알아보기

리눅스 권한(Permission)

> ls -l
drwxr-xr-x

[d]        # 디렉토리를 뜻함 [-]이면 파일이라는 뜻
[rwxr-xr-x]    # rwx / x-x/ r-x
        # 소유자/그룹/다른 사용자의 권한을 뜻함

명령어 옵션 -r-f

-r은 recursive의 약자로 특정 행동을 순환적으로 반복
-f는 force의 약자로 어떤 행위를 강제

GUI 상의 삭제와 달리 CLI에서 rm 명령어를 통한 삭제는 바로 삭제되는
개념(휴지통x)이므로 rm -rf를 할 때는 아주 주의해야 한다!

cat 대신 사용하는 명령어들

cat: 항상 전체 내용을 출력
 
head: 앞에서부터 특정 라인까지 출력

> head [-n lines | -c bytes] [file …]
> head -n 100 파일명    # 앞에서부터 100행까지 출력     -n 옵션은 생략 가능
> head -c 100        # 앞에서부터 100byte의 내용까지 출력
> head -100 파일명 > 저장_파일명

 
tail: 파일의 마지막 행을 기준으로 지정 행까지를 출력

> tail [옵션] [파일]
> tail -n 20 test.txt    # 뒤에서부터 20줄부터 마지막까지 출력
> tail +20 test.txt        # 특정행(20행)부터 마지막까지 출력(이 때는 + 사용)
> tail -f var/log/~/messages.log    # 로그등을 실시간 모니터링시는 -f 옵션

 
more: 화면 단위로 끊어서 출력

> more [파일명]
> more -n [파일명]        # n에 입력한 값만큼 끊어서 화면에 출력
> more +n [파일명]        # +n의 경우 n에 입력한 행부터 화면에 출력
> ls -al | more    # 보통 이런식으로 사용 많이 함!

 
less: more와 반대되는 의미. 한번에 보여지는 만큼만 읽어서 출력. 대용량 파일 볼 때 유용
→ enter키 누르면 1줄씩 출력/ space 누르면 한 화면씩 출력

주 사용법
> cat sample.txt | less
> less sample.txt

'SE Bootcamp 내용 정리' 카테고리의 다른 글

js/node - 배열, 객체  (0) 2021.09.03
git 기초  (0) 2021.09.02
Linux 기초 - 1  (0) 2021.09.01
css 기초 - 2  (0) 2021.08.31
css 기초 - 1  (0) 2021.08.27
복사했습니다!