Toolbox: ๋„๊ตฌ ์ƒ์ž ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ ํ˜ธ์ŠคํŠธ์—์„œ๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž˜ ์•Œ๋ ค์ง„ ๋ฐ”์ด๋„ˆ๋ฆฌ์šฉ shim ์ œ๊ณต

์— ๋งŒ๋“  2019๋…„ 04์›” 30์ผ  ยท  7์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: containers/toolbox

flatpak , podman , rpm-ostree ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๋ช…๋ น์€ ์‹ค์ œ๋กœ OCI ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. podman ์™€ ๊ฐ™์€ ์ผ๋ถ€๋Š” ์‚ฌ์šฉ์ด ์ œํ•œ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ๋žŒ๋“ค์€ ํ˜ธ์ŠคํŠธ์—์„œ ์ง์ ‘ ์‹คํ–‰ํ•  ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

๋™์‹œ์— ์šฐ๋ฆฌ๋Š” ๋ช…๋ น์ค„ ์ธํ„ฐํŽ˜์ด์Šค ์‚ฌ์šฉ์ž์˜ ์ƒ๋‹น ๋ถ€๋ถ„์ด ๋„๊ตฌ ์ƒ์ž ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ๋Œ€๋ถ€๋ถ„์˜ ์‹œ๊ฐ„์„ ๋ณด๋‚ผ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜๋ฉฐ ๋„๊ตฌ ์ƒ์ž ํ”„๋กœ์ ํŠธ์˜ ๋ชฉํ‘œ ์ค‘ ํ•˜๋‚˜๋Š” ์ž ๊ธด ์ƒํƒœ์—์„œ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ธ์ง€ ๋ถ€๋‹ด์„ ์ค„์ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Silverblue์™€ ๊ฐ™์€ ๋‹ค์šด ๋ฐ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ํ˜ธ์ŠคํŠธ OS. flatpak ๋ฐ rpm-ostree ์™€ ๊ฐ™์€ ๋ช…๋ น์€ ์ด๋Ÿฌํ•œ OS์™€ ์ธํ„ฐํŽ˜์ด์Šคํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ˜ธ์ŠคํŠธ์™€ ๋„๊ตฌ ์ƒ์ž ์…ธ ๊ฐ„์— ์ „ํ™˜ํ•˜๊ฑฐ๋‚˜ ๋ชจ๋“  ๋ช…๋ น์— flatpak-spawn --host ์™€ ๊ฐ™์€ ์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์—ฌ์•ผ ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋‚˜์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

๋˜ ๋‹ค๋ฅธ ์˜ต์…˜์€ flatpak , podman , rpm-ostree ๋“ฑ์˜ RPM์„ fedora-toolbox ๊ธฐ๋ณธ ์ด๋ฏธ์ง€์— ์‚ฌ์ „ ์„ค์น˜ํ•˜์ง€๋งŒ ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋’ค์— ๋‚จ๊ฒจ๋‘๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งค๋‰ด์–ผ๊ณผ ์‰˜ ์™„์„ฑ๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ toolbox ๋ช…๋ น์€ ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ๋ฅผ ํ†ตํ•ด ํ•ด๋‹น shim์„ ๋ฐฐ์น˜ํ•˜์—ฌ ๋„๊ตฌ ์ƒ์ž ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ํ˜ธ์ถœ์„ ํ˜ธ์ŠคํŠธ๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด fedora-toolbox ์ด๋ฏธ์ง€๊ฐ€ ์“ธ๋ชจ์—†๋Š” Go ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ์ธํ•ด ์ปค์ง€์ง€ ์•Š๊ณ  ๋ž˜ํผ๊ฐ€ ํ˜ธ์ŠคํŠธ์˜ toolbox ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ์—…๋ฐ์ดํŠธ๋œ ์ƒํƒœ๋กœ ์œ ์ง€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ„์นญ์— ๋Œ€ํ•ด ๋ช…์‹œ์  shim์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์˜ ํ•œ ๊ฐ€์ง€ ์ด์ ์€ ๋ช…๋ น ํ˜ธ์ถœ์„ ํ˜ธ์ŠคํŠธ๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์—†๋Š” ์ฝ”๋„ˆ ์ผ€์ด์Šค๋ฅผ ๊ฐ€๋กœ์ฑŒ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ˜ธ์ŠคํŠธ์™€ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์— ๊ณต์œ ๋˜์ง€ ์•Š๋Š” ๊ฒฝ๋กœ๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช…ํ™•ํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋กœ ์‹คํŒจํ•˜๋Š” ๊ฒƒ์ด ๋ชจํ˜ธํ•œ ์‹คํŒจ๋‚˜ ์ด์ƒํ•œ ๋ถ€์ž‘์šฉ๋ณด๋‹ค ๋‚ซ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ํŒจํ‚ค์ง€ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ์—…๋ฐ์ดํŠธ๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”์ธ๋“œ ์žฅ์ฐฉ ์‹ฌ์„ ๋ฐฉํ•ดํ•ฉ๋‹ˆ๊นŒ? RPM์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋™์•ˆ์ด๋‚˜ ์—…๋ฐ์ดํŠธํ•œ ํ›„์— ํ•ด๋‹น ํŒจํ‚ค์ง€์—์„œ ์“ธ๋ชจ์—†๋Š” ๋น„ํŠธ๋ฅผ ๋‹ค๋“ฌ์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

1. Feature request 2. Container Realm 5. Help Wanted Project Pickle ๐Ÿฅ’

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

ํŒŒ์ƒ ๋„๊ตฌ ์ƒ์ž FROM registry.fedoraproject.org/f31/fedora-toolbox:31 ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ํŒŒ์ƒ ๋„๊ตฌ ์ƒ์ž์—์„œ /usr/local/bin/host-runner host-runner ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ค์–ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

$ cat /usr/local/bin/host-runner 
#!/bin/bash 
executable=$(basename $0)
set -x
exec flatpak-spawn --host $executable "$@"

๊ทธ๋Ÿฐ ๋‹ค์Œ ํ˜ธ์ŠคํŠธ ์ปจํ…์ŠคํŠธ์—์„œ ์‹คํ–‰ํ•˜๋ ค๋Š” ๋ชจ๋“  ํ•ญ๋ชฉ์— ๋Œ€ํ•ด host-runner ๋Œ€ํ•œ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

$ ls -l /usr/local/bin/
total 4
lrwxrwxrwx. 1 root root 13 Jan 28 14:16 chromium-browser -> ./host-runner
-rwxr-xr-x. 1 root root 89 Jan 31 10:39 host-runner
lrwxrwxrwx. 1 root root 13 Jan 29 10:51 podman -> ./host-runner
lrwxrwxrwx. 1 root root 13 Jan 28 12:39 systemctl -> ./host-runner
lrwxrwxrwx. 1 root root 13 Jan 28 12:39 virsh -> ./host-runner
lrwxrwxrwx. 1 root root 13 Jan 28 12:39 virt-install -> ./host-runner

์ฐธ๊ณ  : ์‚ฌ์šฉ์ž๊ฐ€ ํ˜ธ์ŠคํŠธ์— ํ”„๋ก์‹œํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋Š” ๋ช…๋ น ๋ชฉ๋ก์€ ์‚ฌ์šฉ์ž๋งˆ๋‹ค ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ตฌ์„ฑํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์„ ๋งŒ๋“  ๋‹ค์Œ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋„๊ตฌ ์ƒ์ž ๋‚ด์—์„œ ์ž‘์—…์„ ์‹คํ–‰ํ•˜์ง€๋งŒ ํ˜ธ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ํ”„๋ก์‹œ๋ฉ๋‹ˆ๋‹ค. ์œ ์ผํ•œ ์ถ”๊ฐ€ ๋น„ํŠธ๋Š” ์‹คํ–‰๋˜๋Š” ์‹ค์ œ ๋ช…๋ น์ด ์‹คํ–‰๋˜๊ธฐ ์ „์— stderr์— ์ธ์‡„๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

$ virsh list --all
+ exec flatpak-spawn --host virsh list --all
 Id   Name              State
----------------------------------
 43   f31_vanilla-f31   running
 47   tester            running
 -    fcos              shut off

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

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

/usr/libexec/toolbox/bin ์ถ”๊ฐ€ํ•˜๊ณ  ์‰˜ ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ $PATH ๋จผ์ € ์‚ฝ์ž…ํ•˜๋ฉด ํ›จ์”ฌ ๊ฐ„๋‹จํ•ด์งˆ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

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

๊ฐœ๋ฐœ์ž ํ๋ฆ„์— ์œ ์šฉํ•œ ํ•ญ๋ชฉ ๋ชฉ๋ก์— docker-compose ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ ํ•œ๋‘ ๊ฐœ๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์ง„์ž… ์žฅ๋ฒฝ์ด ์ •๋ง ๋‚ฎ๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋‹นํ•œ ์ˆ˜์˜ ์›น ์•ฑ ์œ ํ˜• ํ•ญ๋ชฉ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(์˜คํ”ˆ ์†Œ์Šค ์—ฌ๋ถ€).

ํŒŒ์ƒ ๋„๊ตฌ ์ƒ์ž FROM registry.fedoraproject.org/f31/fedora-toolbox:31 ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ํŒŒ์ƒ ๋„๊ตฌ ์ƒ์ž์—์„œ /usr/local/bin/host-runner host-runner ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ค์–ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

$ cat /usr/local/bin/host-runner 
#!/bin/bash 
executable=$(basename $0)
set -x
exec flatpak-spawn --host $executable "$@"

๊ทธ๋Ÿฐ ๋‹ค์Œ ํ˜ธ์ŠคํŠธ ์ปจํ…์ŠคํŠธ์—์„œ ์‹คํ–‰ํ•˜๋ ค๋Š” ๋ชจ๋“  ํ•ญ๋ชฉ์— ๋Œ€ํ•ด host-runner ๋Œ€ํ•œ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

$ ls -l /usr/local/bin/
total 4
lrwxrwxrwx. 1 root root 13 Jan 28 14:16 chromium-browser -> ./host-runner
-rwxr-xr-x. 1 root root 89 Jan 31 10:39 host-runner
lrwxrwxrwx. 1 root root 13 Jan 29 10:51 podman -> ./host-runner
lrwxrwxrwx. 1 root root 13 Jan 28 12:39 systemctl -> ./host-runner
lrwxrwxrwx. 1 root root 13 Jan 28 12:39 virsh -> ./host-runner
lrwxrwxrwx. 1 root root 13 Jan 28 12:39 virt-install -> ./host-runner

์ฐธ๊ณ  : ์‚ฌ์šฉ์ž๊ฐ€ ํ˜ธ์ŠคํŠธ์— ํ”„๋ก์‹œํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋Š” ๋ช…๋ น ๋ชฉ๋ก์€ ์‚ฌ์šฉ์ž๋งˆ๋‹ค ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ตฌ์„ฑํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์„ ๋งŒ๋“  ๋‹ค์Œ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋„๊ตฌ ์ƒ์ž ๋‚ด์—์„œ ์ž‘์—…์„ ์‹คํ–‰ํ•˜์ง€๋งŒ ํ˜ธ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ํ”„๋ก์‹œ๋ฉ๋‹ˆ๋‹ค. ์œ ์ผํ•œ ์ถ”๊ฐ€ ๋น„ํŠธ๋Š” ์‹คํ–‰๋˜๋Š” ์‹ค์ œ ๋ช…๋ น์ด ์‹คํ–‰๋˜๊ธฐ ์ „์— stderr์— ์ธ์‡„๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

$ virsh list --all
+ exec flatpak-spawn --host virsh list --all
 Id   Name              State
----------------------------------
 43   f31_vanilla-f31   running
 47   tester            running
 -    fcos              shut off

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

๋ณต์ œ๋ฅผ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋Œ€์‹  host-runner ๋ฅผ ~/.local/bin . ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋ ‡๊ฒŒ ๊ฒŒ์œผ๋ฅธ ๊ฒฐ๊ณผ

[user<strong i="8">@toolbox</strong> ~] podman ps
+ exec flatpak-spawn --host podman ps
+ exec flatpak-spawn --host podman ps
/var/home/user/.local/bin/podman: line 4: exec: flatpak-spawn: not found

๋ฌผ๋ก  ~/.local/bin ๊ฐ€ ํ˜ธ์ŠคํŠธ ๋ฐ ์ปจํ…Œ์ด๋„ˆ์˜ PATH์— ์žˆ์œผ๋ฏ€๋กœ host-runner๋Š” ํ˜ธ์ŠคํŠธ์—์„œ host-runner๋ฅผ ์‹คํ–‰ํ•œ ~/.local/bin ..์—์„œ podman ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์‹คํ–‰ํ–ˆ์ง€๋งŒ flatpak-spawn์€ ์‹คํ–‰๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์— ์„ค์น˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ์ค‘์ฒฉ ์žฌ๊ท€๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ๊ฐํžˆ ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.wink:

์–ด์จŒ๋“  ๋ณ€๊ฒฝํ•˜์—ฌ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

executable=$(basename $0) ์—์„œ executable=/usr/bin/$(basename $0) ๊นŒ์ง€๋Š” ํ˜„์žฌ๋กœ์„œ๋Š” ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

ํŽธ์ง‘ : ์ด๊ฒƒ์€ ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ˜ธ์ŠคํŠธ์—์„œ ~/.local/bin/podman ๋ฅผ ํ˜ธ์ถœํ•˜๋ ค๊ณ  ํ•˜๋ฉด ํ˜ธ์ŠคํŠธ์˜ toolbox ๊ฐ€ ๋” ์ด์ƒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋‚ด ์†”๋ฃจ์…˜์€ ๋„๊ตฌ ์ƒ์ž ์ปจํ…Œ์ด๋„ˆ์˜ PATH์—๋งŒ ์ถ”๊ฐ€ํ•˜๋Š” ๋ณ„๋„์˜ bin ๊ฒฝ๋กœ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

flatpak-spawn --host ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋ฉ‹์ง„ ํŠธ๋ฆญ์ž…๋‹ˆ๋‹ค! ๋‹ค์Œ์€ ~/.local/bin ์—์„œ ์ž‘๋™ํ•˜๊ณ  ์‹ค์ˆ˜๋กœ ๋ช…๋ น์„ ์ง์ ‘ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฌดํ•œ ๋ฃจํ”„๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ์ˆœ์ˆ˜ํ•œ sh* ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

#!/bin/sh
set -o errexit
set -o nounset

executable="$(basename "$0")"

if [ "$(basename "$(realpath "$0")")" = "${executable}" ]; then
  echo "can't run ${executable} via ${executable}" >&2
  exit 1
fi

# This seems like the best way to detect if we're inside a toolbox container.
if [ -n "${TOOLBOX_PATH:-}" ]; then
  set -x
  exec flatpak-spawn --host "${executable}" "$@"
fi

# Otherwise do a little dance to find the executable that would have run if not
# for $0 being on the path, and run that instead.
executable="$(
  # Remove this script's directory from PATH; this assumes that you'll never want
  # to run a sibling via this script.
  dir="$(dirname "$0")"
  PATH="$(echo "${PATH}" | sed "s+:${dir}:++")"
  PATH="$(echo "${PATH}" | sed "s+${dir}:++")"
  PATH="$(echo "${PATH}" | sed "s+:${dir}++")"
  command -v "${executable}"
)"

exec "${executable}" "$@"

(์ด๊ฒƒ์€ ์ž‘๋™ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์ด์ƒํ•œ ์ค‘์ฒฉ ์‹คํ–‰ ์‚ฌ๋ก€์—์„œ ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.)

* realpath ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •

๋˜ ๋‹ค๋ฅธ ์˜ต์…˜์€ ์ปจํ…Œ์ด๋„ˆ ๋‚ด์˜ podman์ด ํ•ญ์ƒ --remote ์ž…๋‹ˆ๋‹ค. API ์„œ๋ฒ„์šฉ ์†Œ์ผ“์€ ๋„๊ตฌ ์ƒ์ž ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ๋ณด์ด๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

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