A Little YaST Magic

6 Jan 2005

Among the spectacular offerings of SUSE Linux is its sensational package management tool, YaST. It removes nearly all distress associated with managing package dependencies. That in mind, I pose a question: How do you improve something that is already as great as YaST? The single answer that comes to mind is as follows: I dislike having to insert or switch CDs whenever I install software from them using YaST. I want a way to install the software without using the CDs every time. For all those who have asked me how to do this, I offer a solution.

Let's begin with a short overview of what we'll be doing. First, we will save images of the CDs to the hard disk. Then, we'll mount these images. Next, we will tell YaST where the images are mounted. Finally, we will look at some ways to automate some of this with scripts. When finished, we will be able to install from our mounted images any software normally located on the CDs. No more messing with the CDs. The only requirement is that you have about 3.2Gb available on the drive where you will make the CD images.

First, let's rip the CDs to the hard disk. Drop to a terminal and create a directory to which you will save the disc images. In this example, we will use /isos:

linux:/ # mkdir /isos

Once you have created this folder, put your SUSE Disc 1 into your CD drive. Then, execute the following command where /dev/cdrom is your CD-ROM device:

linux:/ # dd if=/dev/cdrom of=/isos/suse1.iso

When it finishes, replace the first CD with the second, and rip that one to /isos/suse2.iso, and so on until you have ripped all 5 CDs. Your output should be similar to this:

linux:/ # dd if=/dev/cdrom of=/isos/suse1.iso
1329044+0 records in
1329044+0 records out
linux:/ # eject /dev/cdrom
linux:/ # dd if=/dev/cdrom of=/isos/suse2.iso
1328528+0 records in
1328528+0 records out
linux:/ # eject /dev/cdrom
linux:/ # dd if=/dev/cdrom of=/isos/suse3.iso
1332328+0 records in
1332328+0 records out
linux:/ # eject /dev/cdrom
linux:/ # dd if=/dev/cdrom of=/isos/suse4.iso
1326644+0 records in
1326644+0 records out
linux:/ # eject /dev/cdrom
linux:/ # dd if=/dev/cdrom of=/isos/suse5.iso
1323516+0 records in
1323516+0 records out
linux:/ # eject /dev/cdrom
linux:/ #

Now that we have ripped the discs into image files, we need to get them mounted. Create a directory to which you will mount each file. In this example, they will be /suse/1 through /suse/5:

linux:/ # mkdir /suse
linux:/ # mkdir /suse/1
linux:/ # mkdir /suse/2
linux:/ # mkdir /suse/3
linux:/ # mkdir /suse/4
linux:/ # mkdir /suse/5
linux:/ #

After you've created these folders, mount the images. To do this, switch to the superuser as in the example, and run the following command:

[2309][user@linux:~]$ su
Password:
linux:/ # mount -o loop -t iso9660 /isos/suse1.iso /suse/1

Run this command for each successive image, changing the filename and target mount directory accordingly:

[2309][user@linux:~]$ su
Password:
linux:/ # mount -o loop -t iso9660 /isos/suse1.iso /suse/1
linux:/ # mount -o loop -t iso9660 /isos/suse2.iso /suse/2
linux:/ # mount -o loop -t iso9660 /isos/suse3.iso /suse/3
linux:/ # mount -o loop -t iso9660 /isos/suse4.iso /suse/4
linux:/ # mount -o loop -t iso9660 /isos/suse5.iso /suse/5
linux:/ #

Now, all the CDs are ripped and their images are mounted.

The next step is to configure YAST so it knows where to look to find the packages. Run YaST, and go into "Change Source of Installation:"

Select the first option, and then click on the "Enable or Disable" button. This will change the "Status" column to "Off:"

Next, click on the "Add" drop-down box, and select "Local Directory."

A small window will appear asking in which directory it is to look. Type in "/suse/1" and click "OK:"

Do this for each of the images. If a warning appears, it is safe to click "Continue." When you are done, your screen should look like the image below:

Click "Finish." YaST now knows to look at the mounted images instead of prompting for the CDs.

Let's test out your newly optimized YaST. If it isn't already open, run YAST now. Select "Install and Remove Software:"

From the "Filter" drop-down, select "Package Groups." Find a program that you hadn't previously installed, and install it now. For this example, I used a game called "Maelstrom." Check the box next to it:

To finish, click the "Accept" button in the lower right corner of the window. If YaST installed the program without prompting for discs, you have done it properly and are set.

You can leave the images mounted indefinitely. However, when you restart your machine, they will need to be remounted. So let's write a script that will automate the mounting of the CDs for our next session.

In your favorite text editor, create a script with the following code in it:

#!/bin/bash
mount -o loop -t iso9660 /isos/suse1.iso /suse/1
mount -o loop -t iso9660 /isos/suse2.iso /suse/2
mount -o loop -t iso9660 /isos/suse3.iso /suse/3
mount -o loop -t iso9660 /isos/suse4.iso /suse/4
mount -o loop -t iso9660 /isos/suse5.iso /suse/5

Save out the script as mntimg.sh , and run the chmod command to make it executable:

[2313][user@linux:~]$ chmod +x mntimg.sh

Next time you log into the machine and want to install software, drop to a terminal. Then, as superuser, execute the script, as in this example:

[2309][user@linux:~]$ su
Password:
linux:/home/user # ./mntimg.sh
linux:/home/user #

Your images are again mounted. Now, you can fire up YaST at any time to install software. It will use your images as package installation sources.

Once in a while, it's nice to know of timesaving procedures such as this. Just rip your CDs to ISO image files, mount these images, and configure YaST to use them as package installation sources. You will no longer need to insert or change your CDs to install software. When all is said and done, this is a great timesaver.



Informacja z serwisu http://www.djack.com.pl