Skip to content

Instantly share code, notes, and snippets.

@wieczorek1990
Last active August 29, 2015 14:07
Show Gist options
  • Save wieczorek1990/82f13db6b85f3d54be7b to your computer and use it in GitHub Desktop.
Save wieczorek1990/82f13db6b85f3d54be7b to your computer and use it in GitHub Desktop.
Manually manage apt-get packages
#!/bin/bash
# Information is stored in ~/.packages
# Usage: install [-a|--as filename] packages
# uninstall filename | packages
install() {
mkdir -p ~/.packages
as=
force=
set -- `getopt -l as: a:f $@`
set -- `echo $@ | tr -d "'"`
for arg
do
case "$arg"
in
-a|--as) as="$2"; shift; shift;;
-f) force=-f; shift;;
--) shift; break;;
esac
done
set -- `echo $@ | tr -d "'"`
for package
do
if [ -z "$as" ]
then
filename="$package"
else
filename="$as"
fi
log=~/".packages/${filename}"
if [[ ! -f "$log" || -n "$as" ]]
then
packages=`apt-get -s install "$force" "$package" | grep '^Inst' | cut -d' ' -f2`
if [ "$packages" != '' ]
then
echo "$packages" >> "$log"
fi
fi
done
sudo apt-get install "$force" $@
}
uninstall() {
for package
do
log=~/".packages/${package}"
if [ -f "$log" ]
then
packages=`cat "$log" | tr '\n' ' '`
sudo apt-get purge $packages
else
sudo apt-get --purge autoremove "$package"
fi
rm -f "$log"
done
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment