패키지와 패키지 매니저
패키지 안에 존재하는 파일들
→ 패키지 안에는 모든 파일이 압축되어 있다
* 프로그램 파일
* 프로그램 설치 파일
* 프로그램 설치 설명서
* 프로그램에 대한 정보를 담은 파일
프로그램에 대한 정보를 담은 파일: 프로그램 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 |