cbagger01
Group: Members
Posts: 4264
Joined: Oct. 2003 |
|
Posted: Mar. 02 2005,06:10 |
|
Below you will find the latest version of the deb2dsl script. The same installation instructions apply, so maximize the size of your Firefox window and use it to copy the text into your text editor of choice (currently Beaver).
What has changed? The default .dsl menu filename has been changed at the request of the developers, and the tar function no longer produces *.dsl extensions that have a leading "./" in the filename path.
In other words, "./usr/bin/programname" is now "usr/bin/programname".
This helps ke4nt1 reduce the amount of cleanup required for new *.dsl submissions, so please start using this version of the script for any new extension builds.
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: 1 # Date: 02/19/05 # Original Author: cbagger01 from the DSL forums # # Rev 1 - Removed leading . from dsl file listings and # removed .dsl from mydsl menu filename # # 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. # Remove leading . character from the filename list. for i in $( ls $HOME/*.deb ); do dpkg -c $i | awk '{ print substr($6,2) }' \ | 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. # Remove leading . character from the filename list. for i in $( ls /var/cache/apt/archives/*.deb ); do dpkg -c $i | awk '{ print substr($6,2) }' \ | 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
# Strip the .dsl characters from the end of the mydsl menu filename menu_filename=`echo $package_name | awk '{ print substr($0,1,length($0)-4) }'`
# Create the new mydsl menu item file echo "[exec] ("$menu_name") {"$program_path"}" > /tmp/mydsl.menu/$menu_filename
# Add the mydsl menu file to the list of files that will be # included into the new new dsl package echo "/tmp/mydsl.menu/"$menu_filename >> /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/$menu_filename rm -r /tmp/mydsl.menu exit 0
|
|