iOS์—์„œ Linux ๋ช…๋ น์ค„ ์‹คํ–‰

iOS์—์„œ Linux ๋ช…๋ น์ค„ ์‹คํ–‰

iOS ์žฅ์น˜์—์„œ Linux ๋ช…๋ น์ค„์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ๊ณ„์…จ์Šต๋‹ˆ๊นŒ? "์™œ iPhone์—์„œ ๋ฌธ์ž ๋ฉ”์‹œ์ง€ ์•ฑ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋‚˜์š”?"๋ผ๊ณ  ๋ฌผ์œผ์‹ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต์ •ํ•œ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Opensource.com์„ ์ฝ์–ด๋ณด์‹œ๋ฉด ๋‹ต์„ ์•„์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. Linux ์‚ฌ์šฉ์ž๋Š” ์–ด๋–ค ์žฅ์น˜์—์„œ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์Šค์Šค๋กœ ๋งž์ถคํ™”ํ•˜๊ณ  ์‹ถ์–ดํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ฌด์—‡๋ณด๋‹ค๋„ ๊ทธ๋“ค์€ ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์‹ถ์–ดํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” 2๋…„ ๋œ iPad XNUMX Mini๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ, ์—ฌ์ „ํžˆ ์ „์ž์ฑ… ์ฝ๊ธฐ์™€ ๊ธฐํƒ€ ์ž‘์—…์— ๊ฝค ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๋˜ํ•œ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ ๋ฐ ์Šคํฌ๋ฆฝํŠธ ์„ธํŠธ๊ฐ€ ์žˆ๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ช…๋ น์ค„์— ์•ก์„ธ์Šคํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์—†์œผ๋ฉด ์ž‘์—…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ‘œ์ค€ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ต์ˆ™ํ•œ ํ™˜๊ฒฝ๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์ด๊ฒƒ์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ‚ค๋ณด๋“œ์— ์—ฐ๊ฒฐ

ํœด๋Œ€ํฐ์ด๋‚˜ ํƒœ๋ธ”๋ฆฟ์˜ ํ™”๋ฉด ํ‚ค๋ณด๋“œ๋ฅผ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๊ธฐ ์œ„ํ•ด ๋ช…๋ น์ค„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค. Bluetooth๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€ ํ‚ค๋ณด๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๊ฑฐ๋‚˜ ์นด๋ฉ”๋ผ ์—ฐ๊ฒฐ ์–ด๋Œ‘ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ์„  ํ‚ค๋ณด๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค(์ €๋Š” ํ›„์ž๋ฅผ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค). Kinesis Advantage ๋ถ„ํ•  ํ‚ค๋ณด๋“œ๋ฅผ iPhone 6์— ์—ฐ๊ฒฐํ•˜๋ฉด ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ์ด์ƒํ•œ ์žฅ์น˜๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๊ธฐ์—… ์‚ฌ์ด๋ฒ„๋ฑ ํด๋ž˜์‹์—์„œ ์—ญํ• ๊ทน ์„€๋„์šฐ๋Ÿฐ.

iOS์— ์…ธ ์„ค์น˜

iOS์—์„œ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ Linux ์‹œ์Šคํ…œ์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • Linux ์ปดํ“จํ„ฐ์— ์—ฐ๊ฒฐ๋œ SSH(Secure Shell)
  • iSH๊ฐ€ ํฌํ•จ๋œ Alpine Linux๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์ƒ ์‹œ์Šคํ…œ ์‹คํ–‰(์˜คํ”ˆ ์†Œ์Šค์ด์ง€๋งŒ Apple์˜ ๋…์  TestFlight ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ํ•ด์•ผ ํ•จ)

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

๋ณต์žกํ•œ ์†”๋ฃจ์…˜์œผ๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์ „์— ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์˜ต์…˜ 1: ์ƒŒ๋“œ๋ฐ•์Šค ์…ธ

๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋Š” iOS ์•ฑ์„ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. LibTerm. ๊ทธ๊ฒƒ ์˜คํ”ˆ ์†Œ์Šค 80๋‹ฌ๋Ÿฌ์— 2.7๊ฐœ ์ด์ƒ์˜ ๋ช…๋ น์„ ์ง€์›ํ•˜๋Š” ์ƒŒ๋“œ๋ฐ•์Šค ๋ช…๋ น ์…ธ. Python 3.7, Python XNUMX, Lua, C, Clang ๋“ฑ์ด ๋ฒˆ๋“ค๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

๊ฑฐ์˜ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‰˜, ๊ฐœ๋ฐœ์ž๋Š” "ํ™”๋ฉด ์ž…๋ ฅ ํ”Œ๋žซํผ์„ ์œ„ํ•œ ํ…Œ์ŠคํŠธ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค"๋ผ๊ณ  ์„ค๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. a-Shell ์†Œ์Šค๊ฐ€ ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜คํ”ˆ ์†Œ์Šค, ํ™œ๋ฐœํžˆ ๊ฐœ๋ฐœ ์ค‘์ด๋ฉฐ ํŒŒ์ผ ์‹œ์Šคํ…œ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ  Lua, Python, Tex, Vim, JavaScript, C ๋ฐ C++๋Š” ๋ฌผ๋ก  Clang ๋ฐ Clang++๋„ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. Python ํŒจํ‚ค์ง€๋ฅผ pip๋กœ ์„ค์น˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ต์…˜ 2: SSH

์•ฑ ๋‹ค์šด๋กœ๋“œ์˜ ๋˜ ๋‹ค๋ฅธ ๋‹จ๊ณ„๋Š” SSH ํด๋ผ์ด์–ธํŠธ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ค๋žซ๋™์•ˆ ์šฐ๋ฆฌ๋Š” ๋‹ค์–‘ํ•œ iOS์šฉ SSH ํด๋ผ์ด์–ธํŠธ ์•ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ Linux ๋˜๋Š” BSD๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. SSH๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ ์–ด๋–ค ์†Œํ”„ํŠธ์›จ์–ด๋กœ๋“  ๋ฐฐํฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์›๊ฒฉ์œผ๋กœ ์ž‘์—…ํ•˜๋ฉด ์ž‘์—… ๊ฒฐ๊ณผ๊ฐ€ iOS ์žฅ์น˜์˜ ํ„ฐ๋ฏธ๋„ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.

๋ธ”๋งํฌ ์‰˜ ์ธ๊ธฐ ์žˆ๋Š” ์œ ๋ฃŒ SSH ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ์˜คํ”ˆ ์†Œ์Šค. ์žฅ์น˜์˜ ์ž‘์€ ํ™”๋ฉด์„ ๋ฌด์‹œํ•œ๋‹ค๋ฉด ์ด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋‹ค๋ฅธ ๋ช…๋ น์ค„์„ ํ†ตํ•ด ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. Blink Terminal์€ ๋ณด๊ธฐ์—๋„ ์ข‹๊ณ  ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ ํ…Œ๋งˆ๋„ ๋งŽ์ด ์žˆ์œผ๋ฉฐ ์ƒˆ ๊ธ€๊ผด์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•˜๊ณ  ์ถ”๊ฐ€ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜์—ฌ ์ž์‹ ๋งŒ์˜ ํ…Œ๋งˆ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ต์…˜ 3: Linux ์‹คํ–‰

SSH๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Linux ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์€ ๋ช…๋ น์ค„์— ์•ก์„ธ์Šคํ•˜๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ ์™ธ๋ถ€ ์„œ๋ฒ„์™€ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ฐ€์žฅ ํฐ ์žฅ์• ๋ฌผ์€ ์•„๋‹ˆ์ง€๋งŒ ์™„์ „ํžˆ ๋ฌด์‹œํ•  ์ˆ˜๋Š” ์—†์œผ๋ฏ€๋กœ ์„œ๋ฒ„ ์—†์ด Linux๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋‹น์‹ ์˜ ๊ฒฝ์šฐ๋ผ๋ฉด, ํ•œ ๋‹จ๊ณ„ ๋” ๋‚˜์•„๊ฐ€์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. TestFlight ๊ฐœ๋ฐœ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด Apple App Store์— ๊ฒŒ์‹œ๋˜๊ธฐ ์ „์— ์„ค์น˜ํ•˜๋Š” ๋…์  ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. App Store์—์„œ TestFlight ์•ฑ์„ ์„ค์น˜ํ•œ ๋‹ค์Œ ํ…Œ์ŠคํŠธ ์•ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. TestFlight์˜ ์•ฑ์—์„œ๋Š” ์ œํ•œ๋œ ์ˆ˜์˜ ๋ฒ ํƒ€ ํ…Œ์Šคํ„ฐ(๋ณดํ†ต ์ตœ๋Œ€ 10๋ช…)๊ฐ€ ์ œํ•œ๋œ ์‹œ๊ฐ„ ๋™์•ˆ ์•ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹ค์šด๋กœ๋“œํ•˜๋ ค๋ฉด ์žฅ์น˜์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ํ…Œ์ŠคํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž์˜ ์›น์‚ฌ์ดํŠธ์— ์žˆ๋Š” ๋งํฌ๋กœ ์ด๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

iSH๋กœ Alpine Linux ์‹คํ–‰

์•„์ด์‰ฌ ๊ธฐ์„ฑ ๋ฐฐํฌํŒ์œผ๋กœ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์‹œ์ž‘ํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค TestFlight ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ์•ŒํŒŒ์ธ ๋ฆฌ๋ˆ…์Šค (์•ฝ๊ฐ„์˜ ๋…ธ๋ ฅ์œผ๋กœ ๋‹ค๋ฅธ ๋ฐฐํฌํŒ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).

์ค‘์š”ํ•œ ํŠน์ง• : ์‹คํ—˜์  ์ ์šฉ. iSH๋Š” ํ˜„์žฌ ํ…Œ์ŠคํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ฏ€๋กœ ์ง€์†์ ์ด๊ณ  ์•ˆ์ •์ ์ธ ์ž‘๋™์„ ๊ธฐ๋Œ€ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. TestFlight ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์‹œ๊ฐ„์ด ์ œํ•œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋นŒ๋“œ๋Š” 60์ผ ๋™์•ˆ๋งŒ ์ง€์†๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” 60์ผ ํ›„์— ์ œ๊ฐ€ ํƒˆ๋ฝํ•˜๊ณ  ๋‹ค์Œ iSH ํ…Œ์ŠคํŠธ ๋ผ์šด๋“œ์— ๋‹ค์‹œ ์ฐธ์—ฌํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ iOS์˜ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ๋‚ด๋ณด๋‚ด๊ฑฐ๋‚˜ Git ํ˜ธ์ŠคํŠธ์— ๋ณต์‚ฌํ•˜์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ํŒŒ์ผ์ด ์†์‹ค๋ฉ๋‹ˆ๋‹ค. SSH๋ฅผ ํ†ตํ•ด. ๋‹ค์‹œ ๋งํ•ด์„œ: ์ด๊ฒƒ์ด ๊ณ„์† ์ž‘๋™ํ•  ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค! ๋‹น์‹ ์—๊ฒŒ ์ค‘์š”ํ•œ ์–ด๋–ค ๊ฒƒ๋„ ์‹œ์Šคํ…œ์— ๋„ฃ์ง€ ๋งˆ์‹ญ์‹œ์˜ค! ๋ณ„๋„์˜ ์œ„์น˜์— ๋ฐฑ์—…ํ•˜์„ธ์š”!

iSH ์„ค์น˜

์„ค์น˜๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์„ธ์š” TestFlight ์•ฑ์Šคํ† ์–ด์—์„œ. ๊ทธ๋Ÿฐ ๋‹ค์Œ iSH๋ฅผ ์„ค์น˜ํ•˜๊ณ , ์„ค์น˜ ๋งํฌ๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์›น ์‚ฌ์ดํŠธ์—์„œ. AltStore๋ฅผ ์ด์šฉํ•œ ๋˜ ๋‹ค๋ฅธ ์„ค์น˜๋ฐฉ๋ฒ•์ด ์žˆ๋Š”๋ฐ ์‹œ๋„ํ•ด๋ณด์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ์œ ๋ฃŒ ๊ฐœ๋ฐœ์ž ๊ณ„์ •์ด ์žˆ๋Š” ๊ฒฝ์šฐ GitHub์—์„œ iSH ์ €์žฅ์†Œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์ง์ ‘ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

TestFlight๋Š” ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์žฅ์น˜์— iSH ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ™”๋ฉด์— ์•„์ด์ฝ˜์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ

iSH๋Š” Alpine Linux๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ x86 ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. Alpine์€ ํฌ๊ธฐ๊ฐ€ 5MB ๋ฏธ๋งŒ์ธ ์ž‘์€ ๋ฐฐํฌํŒ์ž…๋‹ˆ๋‹ค. ์•ŒํŒŒ์ธ ์ž‘์—…์€ ์ฒ˜์Œ์ด๋ผ ๋ฏธ๋‹ˆ๋ฉ€๋ฆฌ์ฆ˜์ด ๊ฑฐ์Šฌ๋ฆด ์ค„ ์•Œ์•˜๋Š”๋ฐ ์‹ค์ œ๋กœ๋Š” ๋„ˆ๋ฌด ๋งˆ์Œ์— ๋“ค์—ˆ์–ด์š”.

iOS์—์„œ Linux ๋ช…๋ น์ค„ ์‹คํ–‰
Alpine์€ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. APK, ์ด๋Š” apt๋‚˜ pacman๋ณด๋‹ค ์‰ฝ์Šต๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•:

apk add package

ํŒจํ‚ค์ง€๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•:

apk del package

๋‹ค๋ฅธ ๋ช…๋ น ๋ฐ ์ •๋ณด๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•:

apk --help

ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ์—…๋ฐ์ดํŠธ:

apk update
apk upgrade

ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ ์„ค์น˜

Alpine์˜ ๊ธฐ๋ณธ ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ๋Š” Vi์ด์ง€๋งŒ ์ €๋Š” Vim์„ ์„ ํ˜ธํ•˜๋ฏ€๋กœ Vim์„ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

apk add vim

์›ํ•˜๋Š” ๊ฒฝ์šฐ Nano ๋˜๋Š” Emacs๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‰˜ ๋ณ€๊ฒฝ

๋‚˜๋Š” ๋‹น์‹ ์— ๋Œ€ํ•ด ๋ชจ๋ฅด์ง€๋งŒ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค ๋ฌผ๊ณ ๊ธฐ ๊ป์งˆ. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์„ ํ˜ธํ•˜๋Š” ๊ฐ•ํƒ€ ๋˜๋Š” Zsh. ํ•˜์ง€๋งŒ ์•ŒํŒŒ์ธ์€ ์žฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค! Ash๋Š” ์ž์ฒด๊ฐ€ ์›๋ž˜ Ash์˜ ํฌํฌ์ธ Dash ์‰˜์˜ ํฌํฌ์ž…๋‹ˆ๋‹ค. ์•Œ๋ฆ„ํ€ด์ŠคํŠธ ๊ป์งˆ. ๊ทธ๋…€์˜ ์šฐ์„  ์ˆœ์œ„๋Š” ์†๋„์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‚ด์žฅ๋œ ์ž๋™ ์™„์„ฑ, ์ƒ‰์ƒ, Vim ํ‚ค ์ปจํŠธ๋กค, ๋‚ด๊ฐ€ ์ข‹์•„ํ•˜๊ณ  ๋ฌผ๊ณ ๊ธฐ ๊ป์งˆ์—์„œ ์•Œ๊ณ  ์žˆ๋Š” ๊ตฌ๋ฌธ ๊ฐ•์กฐ๋ฅผ ์œ„ํ•ด ์†๋„๋ฅผ ๋ฐ”๊พธ๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌผ๊ณ ๊ธฐ ์„ค์น˜:

apk add fish

์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ๊ณผ ๋งค๋‰ด์–ผ ํŽ˜์ด์ง€๊ฐ€ ํฌํ•จ๋œ Bash๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด ์„ค์น˜ํ•˜์„ธ์š”:

apk add bash bash-doc bash-completion

Alpine์˜ ๋ฏธ๋‹ˆ๋ฉ€๋ฆฌ์ฆ˜ ์ด๋ฐ์˜ฌ๋กœ๊ธฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค๋ฅธ ๋ฐฐํฌํŒ์— ํŒจํ‚ค์ง€๋œ ์ผ๋ถ€ ํ”„๋กœ๊ทธ๋žจ์ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ํŒจํ‚ค์ง€๋กœ ๋ถ„ํ• ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋˜ํ•œ ์‹œ์Šคํ…œ ํฌ๊ธฐ๋ฅผ ์›ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ •ํ™•ํ•˜๊ฒŒ ์‚ฌ์šฉ์ž ์ •์˜ํ•˜๊ณ  ์ค„์ผ ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Bash ์„ค์น˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”. ์ด ํŠœํ† ๋ฆฌ์–ผ.

๊ธฐ๋ณธ ์‰˜ ๋ณ€๊ฒฝ

๋ฌผ๊ณ ๊ธฐ๋ฅผ ์„ค์น˜ํ•œ ํ›„ ๋‹ค์Œ์„ ์ž…๋ ฅํ•˜์—ฌ ์ž„์‹œ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. fish ๊ทธ๋ฆฌ๊ณ  ๊ป์งˆ ์†์œผ๋กœ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ €๋Š” fish๋ฅผ ๊ธฐ๋ณธ ์‰˜๊ณผ ๋ช…๋ น์œผ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. chsh, ๋‹ค๋ฅธ ๋ฐฐํฌํŒ์—์„œ ์‚ฌ์šฉํ•œ ๊ฒƒ์€ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋จผ์ € fish๊ฐ€ ์„ค์น˜๋œ ์œ„์น˜๋ฅผ ์•Œ์•„๋ƒ…๋‹ˆ๋‹ค.

which fish

๋‚ด๊ฐ€ ์–ป์€ ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

/usr/bin/fish

๋‹ค์Œ์œผ๋กœ ๋กœ๊ทธ์ธ ์…ธ์„ fish๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์ž์‹ ์—๊ฒŒ ํŽธ๋ฆฌํ•œ ํŽธ์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ดˆ๋ณด์ž๋ผ๋ฉด Nano๋ฅผ ์„ค์น˜ํ•˜์„ธ์š”(๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์„ธ์š”). apk add nano) ๊ตฌ์„ฑ ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜๊ณ  CTRL+X๋ฅผ ํ†ตํ•ด ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ™•์ธํ•˜๊ณ  ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ €๋Š” Vim์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

vim /etc/passwd

๋‚ด ์ฒซ ๋ฒˆ์งธ ์ค„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.

root:x:0:0:root:/root:/bin/ash

fish๋ฅผ ๊ธฐ๋ณธ ์…ธ๋กœ ๋งŒ๋“ค๋ ค๋ฉด ์ด ์ค„์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝํ•˜์„ธ์š”.

root:x:0:0:root:/root:/usr/bin/fish

๊ทธ๋Ÿฐ ๋‹ค์Œ ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ณ  ์ข…๋ฃŒํ•˜์‹ญ์‹œ์˜ค.

๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์‰˜ ๊ฒฝ๋กœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ž˜ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ธŒ๋ผ์šฐ์ €๋กœ ๋Œ์•„๊ฐ€์„œ ๊ฐ•์ œ๋กœ ์…ธ์„ ์ข…๋ฃŒํ•˜๊ณ  ์•ˆ์ „์„ ์œ„ํ•ด iPad๋‚˜ iPhone์„ ๊ป๋‹ค๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. "Welcome to Alpine!" ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ iSH๋ฅผ ๋‹ค์‹œ โ€‹โ€‹์—ฝ๋‹ˆ๋‹ค. apk์—์„œ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์žˆ์œผ๋ฉด ํ‘œ์ค€ fish ๋กœ๊ทธ์ธ ํ™˜์˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์นœ๊ทผํ•œ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์‰˜ ํ”ผ์‰ฌ์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์„ธ!

iOS์—์„œ Linux ๋ช…๋ น์ค„ ์‹คํ–‰

Python ๋ฐ pip ์„ค์ •

๋‚˜๋Š” ์ถ”๊ฐ€ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค Python (๋ฒ„์ „ 3.x) ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ Python ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์„ค์น˜ํ•ด ๋ด…์‹œ๋‹ค:

apk add python3

Python 2.x๋Š” ์˜ค๋ž˜๋˜์—ˆ์ง€๋งŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

apk add python

pip๋ผ๋Š” Python ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ์„ค์น˜ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์„ค์ • ๋„๊ตฌ:

python3 -m ensurepip --default-pip

ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋ฏ€๋กœ ๊ธฐ๋‹ค๋ฆฌ์‹ญ์‹œ์˜ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ํŒŒ์ผ์„ ์ „์†กํ•˜๋Š” ๋„๊ตฌ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปฌ:

apk add curl

๋งค๋‰ด์–ผ ์ฝ๊ธฐ

Fish๋Š” ๋งค๋‰ด์–ผ ํŽ˜์ด์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‚ด์žฅ๋œ ์ž๋™ ์™„์„ฑ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ช…๋ น์ค„ ์‚ฌ์šฉ์ž์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ €๋Š” ๋งค๋‰ด์–ผ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. man, ๊ทธ๋Ÿฌ๋‚˜ Alpine์—๋Š” ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ„ฐ๋ฏธ๋„ ํ˜ธ์ถœ๊ธฐ๋กœ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ ๊ฒŒ:

apk add man man-pages less less-doc

๋‚จ์ž ์™ธ์— ๋‚˜๋Š” ์›…์žฅํ•œ ๊ฒƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค tldr ํŽ˜์ด์ง€ ํ”„๋กœ์ ํŠธ, ๋‹จ์ˆœํ™”๋œ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ธฐ๋ฐ˜ ๋งค๋‰ด์–ผ ํŽ˜์ด์ง€๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” pip๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

pip install tldr

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

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

์ถ”๊ฐ€ ์ •๋ณด

iSH Wiki์—๋Š” "์ž‘๋™ํ•˜๋Š” ๊ฒƒ" ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ๋ณด๊ณ ์„œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. npm์ด ์ง€๊ธˆ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์œ„ํ‚ค ํŽ˜์ด์ง€์—์„œ๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. iSH ํŒŒ์ผ์— ์•ก์„ธ์Šค iOS ํŒŒ์ผ ์•ฑ์—์„œ. ์ด๋Š” ํŒŒ์ผ์„ ์ด๋™ํ•˜๊ณ  ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

Git์„ ์„ค์น˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ! apk add git ) ์ž‘์—…์„ ์›๊ฒฉ ์ €์žฅ์†Œ์— ํ‘ธ์‹œํ•˜๊ฑฐ๋‚˜ SSH๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  GitHub์—์„œ ํ›Œ๋ฅญํ•œ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ์–ผ๋งˆ๋“ ์ง€ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

iSH์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ ๋งํฌ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ด‘๊ณ ์˜ ๊ถŒ๋ฆฌ์—

๋ธŒ๋””์‹œ๋‚˜ ์ œ๊ณต Linux์˜ ๊ฐ€์ƒ ์„œ๋ฒ„ ๋˜๋Š” ์œˆ๋„์šฐ. ์šฐ๋ฆฌ๋Š” ๋…์ ์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค ๋ธŒ๋žœ๋“œ ์žฅ๋น„, ์ž์ฒด ๋””์ž์ธ์˜ ์ตœ๊ณ ์˜ ์„œ๋ฒ„ ์ œ์–ดํŒ์ด์ž ๋Ÿฌ์‹œ์•„์™€ EU ์ตœ๊ณ ์˜ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์„œ๋‘˜๋Ÿฌ ์ฃผ๋ฌธํ•˜์„ธ์š”!

iOS์—์„œ Linux ๋ช…๋ น์ค„ ์‹คํ–‰

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€