부록 G. busybox 대안

이전의 Red Hat Enterprise Linux 릴리즈와 달리 Red Hat Enterprise Linux 6에는 설치전과 설치후 환경에서 셀 명령을 제공하기 위한 busybox이 포함되어 있지 않습니다. 표 G.1. “busybox 대안”에는 busybox의 명령어 목록이 있으며, 동일한 기능을 bash로 수행하는 방법과 이를 %pre와 %post 환경에서 사용가능한지에 대한 정보가 있습니다. 이 표에는 또한 해당 명령어의 정확한 경로가 포함되어 있습니다. 하지만 대부분의 경우 설치 환경에서 PATH 환경 변수가 적절히 설정되기 때문에 전체 경로를 지정해야할 필요는 없습니다.
어떤 명령들은 %post에서만 사용할 수 있습니다. 해당 명령은 타겟 시스템에서 수행되어야 하며, 사용 가능한지 여부가 그 명령을 제공하는 패키지가 설치되었는지에 따라 달라집니다. 표 G.1. “busybox 대안”에서 "새로운 명령 또는 대안"열에 표시된 각각의 명령을 Red Hat Enterprise Linux 6가 제공하긴 하지만, 모든 명령어를 모든 설치된 시스템에서 사용가능한 것은 아닙니다.
어떤 명령이 사용 불가능한 것으로 나온다면, 그와 동일한 기능을 하는 파이썬 스크립트를 작성할 수도 있습니다. 파이썬 언어는 %pre와 %post 스크립트 작성자가 사용할 수 있으며, 즉시 사용할 수 있는 완전한 파이썬 모듈과 함께 제공됩니다. 따라서, 특정 명령을 설치된 환경에서 사용할 수 없는 경우, 파이썬을 스크립트 언어로 사용할 것을 권장합니다.

표 G.1. busybox 대안

Busybox 명령 %pre %post 새로운 명령 또는 대안
addgroup 아니오 /usr/sbin/groupadd
adduser 아니오 /usr/sbin/useradd
adjtimex 아니오 아니오 없음
ar 아니오 /usr/bin/ar
arping /sbin/arping or /usr/sbin/arping
ash /bin/bash
awk /sbin/awk, /sbin/gawk, /usr/bin/gawk [a]
basename /bin/bash [b], /usr/bin/basename
bbconfig 아니오 아니오 없음 — 이 명령은 Busybox에만 사용가능합니다.
bunzip2 /usr/bin/bunzip2, /usr/bin/bzip2 -d
busybox 아니오 아니오 없음
bzcat /usr/bin/bzcat, /usr/bin/bzip2 -dc
cal 아니오 /usr/bin/cal
cat /usr/bin/cat
catv 아니오 아니오 cat -vET or cat -A
chattr /usr/bin/chattr
chgrp /usr/bin/chgrp
chmod /usr/bin/chmod
chown /usr/bin/chown
chroot /usr/sbin/chroot
chvt /usr/bin/chvt
cksum 아니오 /usr/bin/cksum
clear /usr/bin/clear
cmp 아니오 /usr/bin/cmp
comm 아니오 /usr/bin/comm
cp /usr/bin/cp
cpio /usr/bin/cpio
crond 아니오 아니오 없음 — 스크립틀릿에서는 데몬을 쓸 수 없습니다
crontab 아니오 /usr/bin/crontab
cut /usr/bin/cut
date /usr/bin/date
dc 아니오 /usr/bin/dc
dd /usr/bin/dd
deallocvt 아니오 /usr/bin/deallocvt
delgroup 아니오 /usr/sbin/groupdel
deluser 아니오 /usr/sbin/userdel
devfsd 아니오 아니오 없음 — Red Hat Enterprise Linux는 devfs를 사용하지 않습니다.
df /usr/bin/df
diff 아니오 /usr/bin/diff
dirname /bin/bash [c], /usr/bin/dirname
dmesg /usr/bin/dmesg
dnsd 아니오 아니오 없음 — 스크립틀릿에서는 데몬을 쓸 수 없습니다
dos2unix 아니오 아니오 sed 's/.$//'
dpkg 아니오 아니오 없음 — Debian 패키지를 지원하지 않습니다
dpkg-deb 아니오 아니오 없음 — Debian 패키지를 지원하지 않습니다
du /usr/bin/du
dumpkmap 아니오 아니오 없음
dumpleases 아니오 아니오 없음
e2fsck /usr/sbin/e2fsck
e2label /usr/sbin/e2label
echo /usr/bin/echo
ed 아니오 아니오 /sbin/sed, /usr/bin/sed
egrep /sbin/egrep, /usr/bin/egrep
eject /usr/bin/eject
env /usr/bin/env
ether-wake 아니오 아니오 없음
expr /usr/bin/expr
fakeidentd 아니오 아니오 없음 — 스크립틀릿에서는 데몬을 쓸 수 없습니다
false /usr/bin/false
fbset 아니오 /usr/sbin/fbset
fdflush 아니오 아니오 없음
fdformat 아니오 /usr/bin/fdformat
fdisk /usr/sbin/fdisk
fgrep /sbin/fgrep, /usr/bin/fgrep
find /usr/bin/find
findfs 아니오 아니오 없음
fold 아니오 /usr/bin/fold
free 아니오 /usr/bin/free
freeramdisk 아니오 아니오 없음
fsck /usr/sbin/fsck
fsck.ext2 /usr/sbin/fsck.ext2, /usr/sbin/e2fsck
fsck.ext3 /usr/sbin/fsck.ext3, /usr/sbin/e2fsck
fsck.minix 아니오 아니오 없음 — Minix 파일 시스템을 지원하지 않습니다.
ftpget /usr/bin/ftp 또는 Python ftplib 모듈
ftpput /usr/bin/ftp 또는 Python ftplib 모듈
fuser 아니오 /sbin/fuser
getopt 아니오 /usr/bin/getopt
getty 아니오 아니오 없음
grep /sbin/grep, /usr/bin/grep
gunzip /usr/bin/gunzip, /usr/bin/gzip -d
gzip /usr/bin/gzip
hdparm /usr/sbin/hdparm
head /usr/bin/head
hexdump 아니오 /usr/bin/hexdump
hostid 아니오 /usr/bin/hostid 또는 Python
hostname /sbin/hostname, /usr/bin/hostname
httpd 아니오 아니오 없음 — 스크립틀릿에서는 데몬을 쓸 수 없습니다
hush 아니오 아니오 없음
hwclock /usr/sbin/hwclock
id 아니오 /usr/bin/id 또는 Python
ifconfig /sbin/ifconfig, /usr/sbin/ifconfig
ifdown 아니오 아니오 ifconfig device down
ifup 아니오 아니오 ifconfig device up
inetd 아니오 아니오 없음 — 스크립틀릿에서는 데몬을 쓸 수 없습니다
insmod /sbin/insmod, /usr/sbin/insmod
install 아니오 /usr/bin/install 또는 mkdir/cp/chmod/chown/chgrp
ip /sbin/ip, /usr/sbin/ip
ipaddr 아니오 아니오 ifconfig 또는 ip
ipcalc /sbin/ipcalc, /usr/bin/ipcalc
ipcrm 아니오 /usr/bin/ipcrm
ipcs 아니오 /usr/bin/ipcs
iplink 아니오 아니오 ip
iproute 아니오 아니오 ip
iptunnel 아니오 /sbin/iptunnel
kill /sbin/kill, /usr/bin/kill
killall /usr/bin/killall
lash 아니오 아니오 없음
last 아니오 /usr/bin/last
length 아니오 아니오 Python 또는 bash
less /usr/bin/less
linux32 아니오 아니오 없음
linux64 아니오 아니오 없음
ln /sbin/ln, /usr/bin/ln
load_policy /sbin/load_policy, /usr/sbin/load_policy
loadfont 아니오 아니오 없음
loadkmap 아니오 아니오 없음
login /usr/bin/login
logname 아니오 /usr/bin/logname
losetup /usr/bin/losetup
ls /usr/bin/ls
lsattr /usr/bin/lsattr
lsmod /usr/bin/lsmod
lzmacat 아니오 /usr/bin/lzmadec
makedevs 아니오 아니오 /usr/bin/mknod
md5sum /usr/bin/md5sum
mdev 아니오 아니오 없음
mesg 아니오 /usr/bin/mesg
mkdir /sbin/mkdir, /usr/bin/mkdir
mke2fs /usr/sbin/mke2fs
mkfifo 아니오 /usr/bin/mkfifo
mkfs.ext2 /usr/sbin/mkfs.ext2
mkfs.ext3 /usr/sbin/mkfs.ext3
mkfs.minix 아니오 아니오 없음 — Minix 파일시스템을 지원하지 않습니다
mknod /usr/bin/mknod
mkswap /usr/sbin/mkswap
mktemp /usr/bin/mktemp
modprobe /sbin/modprobe, /usr/sbin/modprobe
more /usr/bin/more
mount /sbin/mount, /usr/bin/mount
mountpoint 아니오 아니오 mount 명령의 출력을 살펴보십시오
msh 아니오 아니오 없음
mt /usr/bin/mt
mv /usr/bin/mv
nameif 아니오 아니오 없음
nc 아니오 /usr/bin/nc
netstat 아니오 /bin/netstat
nice 아니오 /bin/nice
nohup 아니오 /usr/bin/nohup
nslookup /usr/bin/nslookup
od 아니오 /usr/bin/od
openvt /usr/bin/openvt
passwd 아니오 /usr/bin/passwd
patch 아니오 /usr/bin/patch
pidof /usr/sbin/pidof
ping /usr/bin/ping
ping6 아니오 /bin/ping6
pipe_progress 아니오 아니오 없음
pivot_root 아니오 /sbin/pivot_root
printenv 아니오 /usr/bin/printenv
printf 아니오 /usr/bin/printf
ps /usr/bin/ps
pwd /usr/bin/pwd
rdate 아니오 /usr/bin/rdate
readlink /sbin/readlink, /usr/bin/readlink
readprofile 아니오 /usr/sbin/readprofile
realpath 아니오 아니오 Python os.path.realpath()
renice 아니오 /usr/bin/renice
reset 아니오 /usr/bin/reset
rm /sbin/rm, /usr/bin/rm
rmdir /sbin/rmdir, /usr/bin/rmdir
rmmod /sbin/rmmod, /usr/bin/rmmod
route /sbin/route, /usr/sbin/route
rpm /usr/bin/rpm
rpm2cpio 아니오 /usr/bin/rpm2cpio
run-parts 아니오 아니오 없음
runlevel 아니오 아니오 없음
rx 아니오 아니오 없음
sed /sbin/sed, /usr/bin/sed
seq 아니오 /usr/bin/seq
setarch 아니오 /usr/bin/setarch
setconsole 아니오 아니오 없음
setkeycodes 아니오 /usr/bin/setkeycodes
setlogcons 아니오 아니오 없음
setsid 아니오 /usr/bin/setsid
sh /sbin/sh, /usr/bin/sh
sha1sum /usr/bin/sha1sum
sleep /sbin/sleep, /usr/bin/sleep
sort /usr/bin/sort
start-stop-daemon 아니오 아니오 없음
stat 아니오 /usr/bin/stat 또는 Python os.stat()
strings 아니오 /usr/bin/strings
stty 아니오 /bin/stty
su 아니오 /bin/su
sulogin 아니오 /sbin/sulogin
sum 아니오 /usr/bin/sum
swapoff /usr/sbin/swapoff
swapon /usr/sbin/swapon
switch_root 아니오 /sbin/switch_root
sync /usr/bin/sync
sysctl 아니오 /sbin/sysctl
tail /usr/bin/tail
tar /usr/bin/tar
tee /usr/bin/tee
telnet /usr/bin/telnet
telnetd 아니오 아니오 없음 — 스크립틀릿에서는 데몬을 쓸 수 없습니다
test 아니오 /usr/bin/test 또는 bash 내에 [
tftp 아니오 /usr/bin/tftp
time 아니오 /usr/bin/time 또는 Python
top /usr/bin/top
touch /sbin/touch, /usr/bin/touch
tr 아니오 /usr/bin/tr 또는 Python
traceroute 아니오 /bin/traceroute
true /usr/bin/true
tty 아니오 /usr/bin/tty
tune2fs /usr/sbin/tune2fs
udhcpc 아니오 아니오 /sbin/dhclient
udhcpd 아니오 아니오 없음 — 스크립틀릿에서는 데몬을 쓸 수 없습니다
umount /sbin/umount, /usr/bin/umount
uname 아니오 /bin/uname 또는 Python os.uname()
uncompress 아니오 아니오 없음
uniq /usr/bin/uniq
unix2dos 아니오 아니오 sed 's/$//'
unlzma 아니오 /usr/bin/unlzma
unzip 아니오 /usr/bin/unzip
uptime 아니오 /usr/bin/uptime 또는 Python reading /proc/uptime
usleep 아니오 /bin/usleep 또는 Python
uudecode 아니오 /usr/bin/uudecode 또는 Python
uuencode 아니오 /usr/bin/uuencode 또는 Python
vconfig /usr/sbin/vconfig
vi /usr/bin/vi
vlock 아니오 아니오 없음
watch 아니오 /usr/bin/watch
watchdog 아니오 아니오 없음
wc /usr/bin/wc
wget /sbin/wget, /usr/bin/wget
which 아니오 /usr/bin/which
who 아니오 /usr/bin/who
whoami 아니오 /usr/bin/whoami
xargs /usr/bin/xargs
yes 아니오 /usr/bin/yes
zcat /usr/bin/zcat
zcip 아니오 아니오 NetworkManager는 이를 처리해야 합니다
[a] Red Hat Enterprise Linux 6는 설치 환경에 busybox awk가 아닌 GNU awk가 들어 있습니다.
[b] GNU bash는 스트링을 처리해서 basename 기능을 제공할 수 있습니다. var="/usr/bin/command"라면, echo ${var##*/}command를 제공합니다.
[c] GNU bash는 스트링 처리를 통해 dirname 기능을 제공할 수 있습니다. var="/usr/bin/command"라면, echo ${var%/*}/usr/bin입니다.