Bueno, los otros d�as termin� mi distribuci�n de linux y la cre� con ciertos criterios, 100% GNU, 100% Consola. La misma posee una instalaci�n en modo cliente, y adem�s una instalaci�n en modo servidor (este �ltimo modo posee pocos paquetes ya que no he tenido tiempo de compilar m�s). El problema en mi distro surgi� a la hora de desinstalar un paquete, ya que ten�a que buscar archivo por arcvhivo del paquete que quisiera desinstalar a mano y borrarlo, cosa que vi que se hac�a muy (por no decir extramadamente) pesado. Entonces me decid� por hacer un sistema para poder instalar y desinstalar paquetes de mi distribuci�n (son tar.gz, que contienen binarios, pero se puede cambiar la extensi�n si as� se desea). Empec� por hacer un sistema solo para instalarlos y listar los paquetes disponibles, pero visto que lo que yo quer�a originariamente era desinstalarlos el script se ampli�. En tal sentido, ahora mi script permite:
Instalar los paquetes necesarios para el modo server.
Instalar los paquetes necesarios para el modo cliente.
Instalar un paquete que decida el usuario.
Listar los paquetes instalados.
Listar los paquetes sin instalar (pero disponibles para hacerlo)
Desinstalar los paquetes del modo server.
Desinstalar los paquetes del modo cliente.
Desinstalar un paquete en especial.
Ahora les muestro el bash script:
--------------------------Code--------------------------------
#/bin/bash
src=/tmp/extras
echo -e "Package installer Wizzard\n"
case "$1" in
list)
case "$2" in
install)
echo -e "Listing Server packages"
for pkg in "$src"/server/*.tar.gz
do
basename "$pkg" .tar.gz
done
echo
echo -e "Listing Client packages"
for pkg in "$src"/client/*.tar.gz
do
basename "$pkg" .tar.gz
done
echo
;;
installed)
echo -e "Listing installed Server packages"
for pkg in /var/install/server/*
do
basename "$pkg"
done
echo
echo -e "Listing installed Client packages"
for pkg in /var/install/client/*
do
basename "$pkg"
done
echo
;;
*)
echo -e "Use:"
echo -e " kwort list install (to list the avaliable packages
not installed)"
echo -e " kwort list installed (to list the installed
packages)"
echo -e " kwort list (to see this help)"
echo
;;
esac
;;
install)
case "$2" in
server)
echo -e "Installing server packages"
cp $src/server/*.tar.gz /
cd /
for pkg in /*.tar.gz
do
echo -e "Installing ";
pkg1="/var/install/server/${pkg/.tar*/}"
pkg2="${pkg/.tar*/}"
echo -e "$pkg2"
tar -xvpzf "$pkg" > "$pkg1"
rm -- "$pkg"
cat "$pkg1" | sed "s/.*\/$//" | grep
-v "^$" > "$pkg1"
done
;;
client)
echo -e "Installing client packages"
cp $src/client/*.tar.gz /
cd /
for pkg in /*.tar.gz
do
echo -e "Installing ";
pkg1="/var/install/client/${pkg/.tar*/}"
pkg2="${pkg/.tar*/}"
echo -e "$pkg2"
tar -xvpzf "$pkg" > "$pkg1"
rm -- "$pkg"
cat "$pkg1" | sed "s/.*\/$//" | grep -v "^$" > "$pkg1"
done
;;
*)
if [ -e "$src/client/$2.tar.gz" ]
then
echo -e "Installing $2...";
cp $src/client/$2.tar.gz /
cd /
tar -xvpzf "$2.tar.gz" >
"/var/install/client/$2"
rm -- "/$2.tar.gz"
cat "/var/install/client/$2" | sed
"s/.*\/$//" | grep -v "^$" > "/var/install/client/$2"
elif [ -e "$src/server/$2.tar.gz" ]
then
echo -e "Installing $2...";
cp $src/server/$2.tar.gz /
cd /
tar -xvpzf "$2.tar.gz" > "/var/install/server/$2"
rm -- "/$2.tar.gz"
cat "/var/install/server/$2" | sed "s/.*\/$//" | grep -v
"^$" > "/var/install/server/$2"
else
echo -e "There isn't binary for $2";
fi
;;
esac
;;
uninstall)
case "$2" in
server)
for pkg in `ls /var/install/server/`
do
for x in `cat
/var/install/server/${pkg}`
do
if [ -e "/$x" ]
then
rm -f "/$x"
echo -e "Package $x uninstalled."
fi
done
rm -f
"/var/install/server/$pkg"
done
echo -e "All packages for server uninstalled"
;;
client)
for pkg in `ls /var/install/client/`
do
for x in `cat /var/install/client/${pkg}`
do
if [ -e "/$x" ]
then
rm -f "/$x"
echo -e "Package $x uninstalled."
fi
done
rm -f "/var/install/client/$pkg"
done
echo -e "All packages for client uninstalled"
;;
*)
if [ -e "/var/install/client/$2" ]
then
for x in `cat
/var/install/client/${2}`
do
rm -f "/$x"
done
rm -f
"/var/install/client/${2}"
echo -e "Package $2
uninstalled."
elif [ -e "/var/install/server/$2" ]
then
for x in `cat
/var/install/client/${2}`
do
rm -f "/$x"
done
rm -f "/var/install/client/${2}"
echo -e "Package $2 uninstalled."
else
echo -e "$2 isn't installed."
fi
;;
esac
;;
*)
echo -e "Use:"
echo -e " kwort install \"package\" (to install a specific
packages, see list)"
echo -e " kwort install server (to install all the packages for
server)"
echo -e " kwort install client (to install all tha packages for
client)"
echo -e " kwort list install (to list the avaliable packages not
installed)"
echo -e " kwort list installed (to list the installed packages)"
echo -e " kwort list (to see the list help)"
echo -e " kwort uninstall server (to uninstall all the packages
for server)"
echo -e " kwort uninstall client (to uninstall all the packages for client,
obsolete)"
echo -e " kwort uninstall \"package\" (to uninstall a specific package)"
;;
esac
-------------------------End of Code---------------------------
Linux Registered User #291604
Gnu Is Alive!
_______________________________________________
Lugro mailing list
[EMAIL PROTECTED]
http://www.lugro.org.ar/mailman/listinfo/lugro
