Code Sample |
#!/bin/bash # # deb2dsl - Converts one or more Debian packages (*.deb files) into # a DSL extension (*.dsl file) with prompts to create a # myDSL Menu item for the newly created package. # # Revision: 0 # Date: 07/05/04 # Original Author: cbagger01 from the DSL forums # # This script will grab all *.deb files located in your # "Home" directory, IE: the /home/username directory # It will also grab all *.deb files located in your apt # cache, IE: /var/cache/apt/archives # # Before running this script, you need to actually install # all of your Debian packages using 'dpkg -i' or # 'apt-get install' or a package manager like Synaptic. # Do NOT delete your leftover *.deb files or purge your # apt-cache until after you have finished running this # script. # # Disclaimer: # This script is just a file repackaging program that # can be used for simple Debian packages. It will not # perform post-extraction configuration that is done # by more sophisticated Debian packages. It also cannot # be used to upgrade packages from older versions # that are part of the DSL livecd base installation. # This script will not work if it is run under the 'root' effective # user ID which is 0 if [ "$EUID" -eq "0" ]; then echo "Do not use 'root' access to run this script. Aborting..." exit 1 fi # Start things out from the home directory so we won't get confused cd $HOME # Clean up any leftover temp files if needed rm -rf /tmp/deb2dsl_files.tmp rm -rf /tmp/deb2dsl_prompt.tmp # Find all Debian packages in your home directory and grab the list of # files that are contained inside each package. Make sure that directory # names are not grabbed. Only file names will be added to the list. for i in $( ls $HOME/*.deb ); do dpkg -c $i | awk '{ print $6 }' | grep -v "\/$" >> /tmp/deb2dsl_files.tmp done # Find all Debian packages in your apt cache directory and grab the list # of files that are contained inside each package. Make sure that # directory names are not grabbed. Only file names will be added to the # list. for i in $( ls /var/cache/apt/archives/*.deb ); do dpkg -c $i | awk '{ print $6 }' | grep -v "\/$" >> /tmp/deb2dsl_files.tmp done package_name= whiptail --clear --nocancel \ --inputbox "Enter the full name for your DSL package Example: rox.dsl " \ 20 74 2> /tmp/deb2dsl_prompt.tmp package_name=`cat /tmp/deb2dsl_prompt.tmp` rm -rf /tmp/deb2dsl_prompt.tmp menu_name= whiptail --clear --nocancel \ --inputbox "Enter the myDSL menu name for your program Example: Rox Filer " \ 20 74 2> /tmp/deb2dsl_prompt.tmp menu_name=`cat /tmp/deb2dsl_prompt.tmp` rm -rf /tmp/deb2dsl_prompt.tmp program_path= whiptail --clear --nocancel \ --inputbox "Enter the executable name for your program Example: /usr/bin/rox " \ 20 74 2> /tmp/deb2dsl_prompt.tmp program_path=`cat /tmp/deb2dsl_prompt.tmp` rm -rf /tmp/deb2dsl_prompt.tmp # Create the mydsl menu directory mkdir /tmp/mydsl.menu # Create the new mydsl menu item file echo "[exec] ("$menu_name") {"$program_path"}" > /tmp/mydsl.menu/$package_name # Add the mydsl menu file to the list of files that will be # included into the new new dsl package echo "./tmp/mydsl.menu/"$package_name >> /tmp/deb2dsl_files.tmp # Create the new DSL package tar -zcvf $package_name -T /tmp/deb2dsl_files.tmp -C / rm /tmp/deb2dsl_files.tmp rm /tmp/mydsl.menu/$package_name rm -r /tmp/mydsl.menu exit 0 |