mirror of
https://codeberg.org/kiss-community/kiss
synced 2024-12-25 00:20:05 -07:00
Merge pull request #9 from kissx/pkg_install_fix2
kiss: Fix pkg_install if coreutils is reinstalled.
This commit is contained in:
commit
f246cea5d6
@ -31,7 +31,7 @@ See: <https://github.com/kissx/packages>
|
|||||||
|
|
||||||
POSIX `coreutils`:
|
POSIX `coreutils`:
|
||||||
|
|
||||||
- `cat`, `cp`, `find`, `mkdir`, `sh`, `rm`, `rmdir`, `sed`, `tee`
|
- `cat`, `command`, `cp`, `find`, `mkdir`, `sh`, `rm`, `rmdir`, `sed`, `tee`
|
||||||
|
|
||||||
Other utilities:
|
Other utilities:
|
||||||
|
|
||||||
|
19
kiss
19
kiss
@ -137,8 +137,13 @@ pkg_tar() {
|
|||||||
pkg_install() {
|
pkg_install() {
|
||||||
[ -f "$bin_dir/$pkg" ] || args b "$name"
|
[ -f "$bin_dir/$pkg" ] || args b "$name"
|
||||||
|
|
||||||
|
# Create a backup of 'tar' so it isn't removed during
|
||||||
|
# package installation.
|
||||||
|
cp "$(command -v tar)" "$cac_dir"
|
||||||
|
|
||||||
pkg_remove "$name"
|
pkg_remove "$name"
|
||||||
tar pxvf "$bin_dir/$pkg" -k -C "$sys_dir/" 2>/dev/null
|
"$cac_dir/tar" kpxvf "$bin_dir/$pkg" -C "$sys_dir/"
|
||||||
|
rm "$cac_dir/tar"
|
||||||
|
|
||||||
"$sys_db/$name/post-install" 2>/dev/null
|
"$sys_db/$name/post-install" 2>/dev/null
|
||||||
|
|
||||||
@ -148,15 +153,23 @@ pkg_install() {
|
|||||||
pkg_remove() {
|
pkg_remove() {
|
||||||
pkg_list "$name" || return 1
|
pkg_list "$name" || return 1
|
||||||
|
|
||||||
|
# Create a backup of 'rm' and 'rmdir' so they aren't
|
||||||
|
# removed during package removal.
|
||||||
|
cp "$(command -v rm)" "$cac_dir"
|
||||||
|
cp "$(command -v rmdir)" "$cac_dir"
|
||||||
|
|
||||||
while read -r file; do
|
while read -r file; do
|
||||||
[ "${file%/*}" = /etc ] && continue
|
[ "${file%/*}" = /etc ] && continue
|
||||||
|
|
||||||
if [ -d "$sys_dir$file" ]; then
|
if [ -d "$sys_dir$file" ]; then
|
||||||
rmdir "$sys_dir$file" 2>/dev/null || continue
|
"$cac_dir/rmdir" "$sys_dir$file" 2>/dev/null || continue
|
||||||
else
|
else
|
||||||
rm -f -- "$sys_dir$file" || log "Failed to remove $file."
|
"$cac_dir/rm" -f -- "$sys_dir$file" || log "Failed to remove $file."
|
||||||
fi && log "Removed $file"
|
fi && log "Removed $file"
|
||||||
done < "$sys_db/$name/manifest"
|
done < "$sys_db/$name/manifest"
|
||||||
|
|
||||||
|
# Use the backup of 'rm' to remove 'rmdir' and itself.
|
||||||
|
"$cac_dir/rm" "$cac_dir/rmdir" "$cac_dir/rm"
|
||||||
}
|
}
|
||||||
|
|
||||||
pkg_updates() {
|
pkg_updates() {
|
||||||
|
Loading…
Reference in New Issue
Block a user