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

Responder a