diff options
author | pixdamix@gmail.com <pixdamix@gmail.com@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358> | 2012-11-22 07:24:42 (EST) |
---|---|---|
committer | pixdamix@gmail.com <pixdamix@gmail.com@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358> | 2012-11-22 07:24:42 (EST) |
commit | 6b576f0d9b00f78a60f4994b663fd8ce43b9f6da (patch) | |
tree | 675af5651717547cdd513f4270a0229d701e0e4c /libopkg/pkg_parse.c | |
parent | 5077685e6433d5609b9b82100e4dd18910d6affd (diff) |
update-alternatives: use 'ln -n'
Using the '-n' option (--no-dereference) is a better way to solve the
do-not-link-into-directory issue. Using only 'ln -sf' can cause problems
on SELinux enabled hosts when target is inaccessible; e.g. when preparing
an offline rootsystem:
| $ cd <offline root>
| $ ln -sf /lib/systemd/systemd sbin/init # alternative #1
| $ ln -sf /bin/busybox sbin/init # alternative #2
| ln: accessing `sbin/init': Permission denied
|
| --> strace:
| brk(0) = 0x102b000
| stat("sbin/init", 0x7fffaa91c900) = -1 EACCES (Permission denied)
| ...
| exit_group(1) = ?
Now with '-n':
| $ ln -snf /bin/busybox sbin/init
| lstat("sbin/init", {st_mode=S_IFLNK|0777, st_size=20, ...}) = 0
| lstat("sbin/init", {st_mode=S_IFLNK|0777, st_size=20, ...}) = 0
| stat("/bin/busybox", 0x7fff8c1a3bd0) = -1 ENOENT (No such file or directory)
| symlink("/bin/busybox", "sbin/init") = -1 EEXIST (File exists)
| unlink("sbin/init") = 0
| symlink("/bin/busybox", "sbin/init") = 0
The '-n' flag is well supported (coreutils have it at least since
1999, busybox at least since 0.60.3 (2002)) and it obsoletes the
explicit check whether target is a directory.
Signed-off-by: Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
git-svn-id: http://opkg.googlecode.com/svn/trunk@649 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358
Diffstat (limited to 'libopkg/pkg_parse.c')
0 files changed, 0 insertions, 0 deletions