Ninja: ํ™˜๊ฒฝ์„ ํ†ตํ•œ ์ž์„ธํ•œ ์„ค์ • ์ง€์›

์— ๋งŒ๋“  2017๋…„ 12์›” 28์ผ  ยท  14์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ninja-build/ninja

๋•Œ๋•Œ๋กœ ์œ ๊ฐ์Šค๋Ÿฝ๊ฒŒ๋„ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ€์žฅ ๊น”๋”ํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์˜ˆ: MAKEFLAGS, DISTCC_HOSTS ๋“ฑ

ํ™˜๊ฒฝ์„ ํ†ตํ•ด ๋‹Œ์ž์˜ ์žฅํ™ฉํ•จ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด

VERBOSE=1 ๋‹Œ์ž

(๊ฑฐ์˜) ๋™๋“ฑํ•˜๋‹ค

๋‹Œ์ž -v

์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ์ข‹์€ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋‹จ์ผ UI ๋…ธ๋ธŒ๊ฐ€ Ninja,
๋ฐ ๋‹Œ์ž ํ˜ธ์ถœ ์Šคํฌ๋ฆฝํŠธ.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚ด ๋ฆฌ๋ˆ…์Šค ๋จธ์‹ ์—๋Š” ๊ทธ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์—†๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ณ„์ธต ํ‘œ์ค€ http://www.pathname.com/fhs/pub/fhs-2.3.pdf ์—์„œ ์ฐธ์กฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค

FHS์—์„œ /usr/local/sbin์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๊ทธ๊ฒƒ์ด ๋‹น์‹ ์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”์ž…๋‹ˆ๊นŒ? ์ด๊ฒƒ์„ ์œ„ํ•ด "sbin" ํด๋”๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ด์ƒํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

์•„๋งˆ๋„ /usr/local/bin์€ /usr/bin ๋ฐ ๊ธฐํƒ€ ์ด์ „์˜ PATH์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์ด ๋งํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์ด๋ ‡๊ฒŒ ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ ninja ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ œ์ž๋ฆฌ์— ๋ฐฐ์น˜ํ•˜์—ฌ PATH ์ˆ˜์ •์„ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณด์•ˆ ๋ฐ ์ง€์†์ ์ธ ์œ ์ง€ ๊ด€๋ฆฌ ๋ฌธ์ œ๋กœ ๊ฐ€๋“ ์ฐฌ ๋‚˜์œ ์ œ์•ˆ์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ๋ณด๋‹ค ํ•ญ์ƒ ๋จผ์ € ํฌํ•จ๋˜๋Š” ์‹œ์Šคํ…œ ์ „์ฒด ๋””๋ ‰ํ† ๋ฆฌ์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์ด ๋ฐ”์ด๋„ˆ๋ฆฌ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  ๊ทธ ์ž๋ฆฌ์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ์™œ ์šฐ๋ฆฌ๊ฐ€ ๋‹Œ์ž ์ž์ฒด์— ์ด๊ฒƒ์„ ํฌํ•จํ•˜์ง€ ์•Š๊ณ , ์ž์ฒด ์ผ๊ด€์„ฑ์ด ์žˆ๊ณ , ์Šคํฌ๋ฆฝํŠธ ํ˜ธ์ถœ๋กœ ์ธํ•œ ๋งŽ์€ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•˜๋Š”์ง€ ๋ฐ/๋˜๋Š” "๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ž์‹ ์˜ ์ง€๊ธˆ ์ž์‹ ์˜ ์Šคํฌ๋ฆฝํŠธ"๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์—ฌ๊ธฐ github์— ๋ฌธ์„œํ™”๋œ ๋‹Œ์ž ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์ง€์นจ์„ ๊ฐ€๋ฆฌ์ผฐ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  14 ๋Œ“๊ธ€

์ด์™€ ๊ฐ™์€ ๊ฒฝ์šฐ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋”ฐ๋ฅด๋„๋ก ์…ธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ˆ„๊ตฐ๊ฐ€ VERBOSE=1์ด Ninja ์ด์™ธ์˜ ํ”„๋กœ๊ทธ๋žจ์˜ ์ž์„ธํ•œ ์ •๋„๋ฅผ ์ œ์–ดํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋Š” ๋™๋“ฑํ•œ ํ™˜๊ฒฝ์„ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์™€ ๊ฐ™์€ ๊ฒฝ์šฐ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋”ฐ๋ฅด๋„๋ก ์…ธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋Š” ๋‹Œ์ž๋ฅผ ์œ„ํ•œ ๊ฒƒ์ธ๋ฐ, ๋‹Œ์ž๊ฐ€ ์ธ์‹ํ•˜์ง€ ๋ชปํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋”ฐ๋ผ๊ฐˆ๊นŒ์š”?

๋˜ํ•œ ์Šคํฌ๋ฆฝํŠธ์—์„œ ๋„๊ตฌ์˜ ๋ช…๋ น์ค„์„ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ๋„ˆ๋ฌด ๋งŽ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ•ญ์ƒ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ํ•ฉ๋ฆฌ์ ์ธ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์€ ๊ฐ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ช…๋ น์— ์ „๋‹ฌ๋œ ํ”Œ๋ž˜๊ทธ๋ฅผ ์กฐ์ •ํ•˜๋Š” ๊ณ ์œ ํ•œ ๋ฐฉ๋ฒ•์„ ์ฑ„ํƒํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋˜ํ•œ ๋น„ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.

์ด ์ƒํ™ฉ๊ณผ ๊ด€๋ จ๋œ ๋‹ค๋ฅธ PR ๋ฐ ๋ฌธ์ œ๋ฅผ ์ฝ์—ˆ์ง€๋งŒ ์ œ๋Œ€๋กœ ์ƒ๊ฐํ•œ ๋‹ต๋ณ€์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ninja ๊ฐ€ ์‹คํ–‰๋˜๋Š” ์œ„์น˜์™€ ๋ฐฉ๋ฒ•์„ ์ง์ ‘ ์ œ์–ดํ•˜๊ฑฐ๋‚˜ ์‹ค์ œ๋กœ ์ด์— ๋Œ€ํ•ด ๋ฌด์—‡์ด๋“  ํ•  ์ˆ˜ ์žˆ๋Š” ์œ„์น˜์— ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๊ตฌ์„ฑ ์‹œ์Šคํ…œ์—์„œ ninja.build ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ํŒŒ์ดํ”„๋ผ์ธ์˜ ์ผ๋ถ€๋กœ.

์ด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋Š” ๋‹Œ์ž๋ฅผ ์œ„ํ•œ ๊ฒƒ์ธ๋ฐ, ๋‹Œ์ž๊ฐ€ ์ธ์‹ํ•˜์ง€ ๋ชปํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋”ฐ๋ผ๊ฐˆ๊นŒ์š”?

์Šคํฌ๋ฆฝํŠธ๋Š” ์ด๋ฅผ ์ธ์‹ํ•˜๊ณ  -v ๋ฅผ ๋‹Œ์ž์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋‚ด๊ฐ€ ์˜ˆ์ธกํ•œ ๋Œ€๋กœ ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์ด ์ž์ฒด ๋…ผ๋ฆฌ ์ง‘ํ•ฉ์„ ์ธ์ฝ”๋”ฉํ•˜์—ฌ ์˜ต์…˜์„ ๋‹Œ์ž์—๊ฒŒ ์ „๋‹ฌํ•˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ์ „ํ˜€ ํ•ฉ๋ฆฌ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•„๋‹ˆ์š”, ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ํ•˜๋‚˜์˜ ์Šคํฌ๋ฆฝํŠธ๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ninja ๋ผ๋Š” ์ด๋ฆ„์„ ์ง€์ •ํ•˜๊ณ  ์‹ค์ œ ๋‹Œ์ž ์‹คํ–‰ ํŒŒ์ผ ์•ž์— PATH ๋„ฃ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ์ด๋ฏธ ๋‹ค๋ฅธ ์ˆ˜๋งŽ์€ ๋ฌธ์ œ ๋ณด๊ณ ์„œ์—์„œ ๋‹ค๋ฃจ์–ด์กŒ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๊นŒ? ๋˜ํ•œ ํ™˜๊ฒฝ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋Š” ์žฌํ˜„์„ฑ ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ ์ด๋Š” ํ•ฉ๋ฆฌ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์‚ฌ๋žŒ๋“ค์ด ๊ท€ํ•˜๊ฐ€ ์ œ์•ˆํ•œ ๊ฒƒ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค(secure PATH ).

๋˜ํ•œ ํ™˜๊ฒฝ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋Š” ์žฌํ˜„์„ฑ ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ ์ด๋Š” ํ•ฉ๋ฆฌ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ•ญ์ƒ ๊ฑฐ๊ธฐ์— ์žˆ์œผ๋ฉด ๋‹Œ์ž ์ž์ฒด๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ VERBOSE ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ์ „ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ PATH

๊ทธ๊ฒŒ ๋ฌด์Šจ ๋œป ์ด๋‹ˆ?

๋‚˜๋Š” VERBOSE ๊ด€์‹ฌ์ด ์—†์Šต๋‹ˆ๋‹ค. NINJAFLAGS ๋ฅผ ํ†ตํ•ด ํ”Œ๋ž˜๊ทธ๋ฅผ ๋…ธ์ถœํ•˜๋Š” ๋‹ค๋ฅธ ์ œ์•ˆ์ด ์ด ์ฃผ์ œ์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ๋งŽ์€ ๋ฌธ์ œ์—์„œ ์ œ์•ˆ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋” ์ ์ ˆํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ์ด๊ฒƒ์€ ์ˆ˜๋ฐฑ ๊ฐœ์˜ ํŒจํ‚ค์ง€๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ ๋ถˆํ•ฉ๋ฆฌํ•œ ์š”์ฒญ์ด๋ฉฐ, ๊ทธ ์ค‘ ์ผ๋ถ€๋Š” cmake๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ninja ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. make (์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ƒ์„ฑ๋˜๊ฑฐ๋‚˜ ์ž‘์„ฑ๋œ Makefile )์™€ ๊ฐ™์€ ๊ธฐ์กด ์‹œ์Šคํ…œ์ด CFLAGS ์™€ ๊ฐ™์€ ์‚ฌ์‹ค์ƒ์˜ ํ™˜๊ฒฝ์„ ๊ณ„์† ์กด์ค‘ํ•  ๋•Œ ์ข…์†์„ฑ ์—ญํ• ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋ถˆํ•„์š”ํ•œ ๋ž˜ํผ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๊ณผ๋„ํ•˜๊ฒŒ ๊ด€๋ จ๋ฉ๋‹ˆ๋‹ค Makefile CFLAGS , CXXFLAGS , LDFLAGS ๋“ฑ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ MAKEFLAGS -j$(nproc) ํšจ๊ณผ๋กœ ๋ฌด์–ธ๊ฐ€๋ฅผ ์„ค์ •ํ•˜๋Š”

์ด๊ฒƒ์€ ๋‹ค์‹œ ์•ˆ์ „ํ•œ ๊ฒฝ๋กœ์˜ ๊ฐœ๋…์— ์ด๋ฅด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. sudo ๋ฐ build/CI ์Šคํฌ๋ฆฝํŠธ์™€ ๊ฐ™์€ ์‹œ์Šคํ…œ์€ PATH ๋ฅผ ์•Œ๋ ค์ง„ ์–‘ํ˜ธํ•œ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ์ผ๋ฐ˜์ ์œผ๋กœ ๊นจ๋—ํ•œ chroot์— ์˜ํ•ด ๋’ท๋ฐ›์นจ๋˜๋Š” ๋นŒ๋“œ์˜ ์ž ์žฌ์  ์˜ค์—ผ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ์ค‘ ์ผ๋ถ€๋Š” cmake๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹Œ์ž ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒŒ ์–ด๋–ป๊ฒŒ ๋ฐ”๋€Œ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์–ด?

์ด๊ฒƒ์€ ๋‹ค์‹œ ์•ˆ์ „ํ•œ ๊ฒฝ๋กœ์˜ ๊ฐœ๋…์— ์ด๋ฅด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. sudo ๋ฐ build/CI ์Šคํฌ๋ฆฝํŠธ์™€ ๊ฐ™์€ ์‹œ์Šคํ…œ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๊นจ๋—ํ•œ chroot์— ์˜ํ•ด ๋’ท๋ฐ›์นจ๋˜๋Š” ๋นŒ๋“œ์˜ ์ž ์žฌ์  ์˜ค์—ผ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด PATH๋ฅผ ์•Œ๋ ค์ง„ ์–‘ํ˜ธํ•œ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ ninja ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ œ์ž๋ฆฌ์— ๋ฐฐ์น˜ํ•˜์—ฌ PATH ์ˆ˜์ •์„ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์ฃผ์œ„์— ๊ฐ„๋‹ค

์ด ๊ฒฝ์šฐ ninja ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ œ์ž๋ฆฌ์— ๋ฐฐ์น˜ํ•˜์—ฌ PATH ์ˆ˜์ •์„ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋ถ€์ ์ ˆํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ๋Š” ์‹œ์Šคํ…œ ์ˆ˜์ค€ ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ์žฅ๋‚œ์„ ์ณ์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ ์ˆ˜์ค€ ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  ์Šคํฌ๋ฆฝํŠธ๋กœ ๋Œ€์ฒดํ•˜๋Š” ๋‹ค์ค‘ ์‚ฌ์šฉ์ž ์‹œ์Šคํ…œ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ก์„ ์œ„ํ•ด ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋งํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ €๋Š” C++ ๊ฐœ๋ฐœ ํŒ€์„ ์œ„ํ•œ ๋งž์ถคํ˜• ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์‹œ์Šคํ…œ์€ ์ˆ˜๋ฐฑ๋งŒ ์ค„์˜ C++ ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ „์—๋Š” ๋งŽ์€ ์ผ์„ ์ง์ ‘์ ์œผ๋กœ ์ˆ˜ํ–‰ํ–ˆ์ง€๋งŒ ์ง€๊ธˆ์€ ๋‹Œ์ž ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ๋งŒ์กฑ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ €๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๋•Œ ํ•จ๊ป˜ ๋ฌธ์งˆ๋Ÿฌ์•ผ ํ•  ๋ช‡ ๊ฐ€์ง€ ๋‹จ์„œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์›ํ•˜๋Š” ๊ฒƒ: ์ž์„ธํ•œ ์ •๋ณด ํ‘œ์‹œ ๋“ฑ์„ ํฌํ•จํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•˜๋Š” ๋‹จ์ผ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋‹Œ์ž ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์ธ์‹ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ: Ninja๋Š” ์—ฌ๋Ÿฌ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค.

ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฒƒ: ๋ž˜ํผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š” ์ด์œ : Windows์— ๋ฐฐํฌํ•  ๋•Œ ์ž˜ ์ž‘๋™ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์‹œ์Šคํ…œ์˜ ninja ํŒจํ‚ค์ง€์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— Linux์—์„œ๋Š” ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Linux ์‹œ์Šคํ…œ์— ๋ฐฐํฌํ•  ๋•Œ "์˜ค, ์‹œ์Šคํ…œ ์ˆ˜์ค€ ninja ํŒจํ‚ค์ง€์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  ์Šคํฌ๋ฆฝํŠธ๋กœ ๊ต์ฒดํ•˜์‹ญ์‹œ์˜ค"๋ผ๋Š” ์ œ์•ˆ์€ ๋ณด์•ˆ ๋ฌธ์ œ์™€ ์œ ์ง€ ๊ด€๋ฆฌ ๋ฌธ์ œ๋ฅผ ๋น„๋ช…์„ ์ง€๋ฅด๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค๋„ ์ง€๊ธˆ์€ ์‹œ์Šคํ…œ์˜ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ๋‹Œ์ž ํŒจํ‚ค์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ๋งˆ๋‹ค ์‹œ์Šคํ…œ์„ ๊ฐ€๋งŒํžˆ ์ง€์ผœ๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ํ”„๋กœ๊ทธ๋žจ์— ์ถ”๊ฐ€ํ•˜๊ธฐ์— ์œ„ํ—˜ํ•œ ๊ธฐ๋Šฅ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‹Œ์ž์˜ ์ž„๋ฌด๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์ž์‹ ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ป๊ฒŒ ๋“  ๊ทธ๊ฒƒ์„ ๋ง์น  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ๊ทธ๋“ค์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

Ninja์— ์ด์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋ฉด Ninja๊ฐ€ ๋ช‡ ๋งˆ์ดํฌ๋กœ์ดˆ ์ด์ƒ ๋Š๋ ค์งˆ ํ™•๋ฅ ์€ ์กด์žฌํ•˜์ง€ ์•Š์„ ์ •๋„๋กœ ๋‚ฎ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ท€ํ•˜์˜ ์ œ์•ˆ์€ ๋‹Œ์ž๊ฐ€ ๋งค๋ฒˆ ์Šคํฌ๋ฆฝํŠธ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ํฌํ•จํ•˜๋Š” ๋ž˜ํผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ์˜ค๋ฒ„ ํ—ค๋“œ๊ฐ€ ์ด๋ฏธ ์‹คํ–‰ ๋ฐ”์ด๋„ˆ๋ฆฌ์— ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ž์—ด ๋น„๊ต๋ณด๋‹ค ํ›จ์”ฌ ๋ฉ€๋ฆฌ, ์ด๋Š” ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ Linux ์‹œ์Šคํ…œ์— ๋ฐฐํฌํ•  ๋•Œ "์˜ค, ์‹œ์Šคํ…œ ์ˆ˜์ค€ ninja ํŒจํ‚ค์ง€์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  ์Šคํฌ๋ฆฝํŠธ๋กœ ๊ต์ฒดํ•˜์‹ญ์‹œ์˜ค"๋ผ๋Š” ์ œ์•ˆ์€ ๋ณด์•ˆ ๋ฌธ์ œ์™€ ์œ ์ง€ ๊ด€๋ฆฌ ๋ฌธ์ œ๋ฅผ ๋น„๋ช…์„ ์ง€๋ฅด๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

์•„๋‹ˆ์š”, Linux์— ๋ฐฐํฌํ•  ๋•Œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ /usr/local/bin ์— ๋„ฃ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋‚ด ๋ฆฌ๋ˆ…์Šค ๋จธ์‹ ์—๋Š” ๊ทธ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์—†๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ณ„์ธต ํ‘œ์ค€ http://www.pathname.com/fhs/pub/fhs-2.3.pdf ์—์„œ ์ฐธ์กฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค

FHS์—์„œ /usr/local/sbin์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๊ทธ๊ฒƒ์ด ๋‹น์‹ ์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”์ž…๋‹ˆ๊นŒ? ์ด๊ฒƒ์„ ์œ„ํ•ด "sbin" ํด๋”๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ด์ƒํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

์•„๋งˆ๋„ /usr/local/bin์€ /usr/bin ๋ฐ ๊ธฐํƒ€ ์ด์ „์˜ PATH์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์ด ๋งํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์ด๋ ‡๊ฒŒ ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ ninja ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ œ์ž๋ฆฌ์— ๋ฐฐ์น˜ํ•˜์—ฌ PATH ์ˆ˜์ •์„ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณด์•ˆ ๋ฐ ์ง€์†์ ์ธ ์œ ์ง€ ๊ด€๋ฆฌ ๋ฌธ์ œ๋กœ ๊ฐ€๋“ ์ฐฌ ๋‚˜์œ ์ œ์•ˆ์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ๋ณด๋‹ค ํ•ญ์ƒ ๋จผ์ € ํฌํ•จ๋˜๋Š” ์‹œ์Šคํ…œ ์ „์ฒด ๋””๋ ‰ํ† ๋ฆฌ์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์ด ๋ฐ”์ด๋„ˆ๋ฆฌ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  ๊ทธ ์ž๋ฆฌ์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ์™œ ์šฐ๋ฆฌ๊ฐ€ ๋‹Œ์ž ์ž์ฒด์— ์ด๊ฒƒ์„ ํฌํ•จํ•˜์ง€ ์•Š๊ณ , ์ž์ฒด ์ผ๊ด€์„ฑ์ด ์žˆ๊ณ , ์Šคํฌ๋ฆฝํŠธ ํ˜ธ์ถœ๋กœ ์ธํ•œ ๋งŽ์€ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•˜๋Š”์ง€ ๋ฐ/๋˜๋Š” "๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ž์‹ ์˜ ์ง€๊ธˆ ์ž์‹ ์˜ ์Šคํฌ๋ฆฝํŠธ"๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์—ฌ๊ธฐ github์— ๋ฌธ์„œํ™”๋œ ๋‹Œ์ž ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์ง€์นจ์„ ๊ฐ€๋ฆฌ์ผฐ์Šต๋‹ˆ๋‹ค.

๋…๋ฆฝ์ ์ธ Ninja ๋นŒ๋“œ ์–ธ์–ด ์žฌ๊ตฌํ˜„ https://github.com/michaelforney/samurai ๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜ SAMUFLAGS๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋‹Œ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๋ชจ๋“  ๊ณณ์—์„œ samu๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์‹œ์Šคํ…œ /usr/bin/ninja๋กœ samu๋ฅผ ์„ค์น˜ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค(์ผ๋ถ€ Linux ๋ฐฐํฌํŒ์—๋Š” ์ด ๊ฒฝ์Ÿ ๊ตฌํ˜„์„ ๊ธฐ๋ณธ ๋˜๋Š” ๋‹Œ์ž ์ „์šฉ์œผ๋กœ ์„ค์น˜ํ•˜๋Š” ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค).

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰