Category Archives: Yum

Building RPMs and ‘This Week in Fedora’ interview

Many of you may have already heard from my good friend Derek Carter about the GoOSe Project. If you haven’t, I’d love to hear your comments on what we are doing. I’d also encourage many of you to come and join the project and help us to build a community of contributors dedicated to making the best enterprise Linux rebuild available.

Recently, Jonathan Nadaeu and I sat down and discussed Fedora, GoOSe and a few other fun things on This Week in Fedora. The majority of the interview was about the GoOSe project and it covers a good bit of why we’re doing what we’re doing, how it works and how to get involved. Have a listen, and come hang out and help out the project!

In addition, I was asked to do a presentation this week on how to build RPMs at the Ogden Area Linux User Group (OALUG). While I teach this in my day job as a Red Hat Trainer, I’ve never given my own presentation. I’m really excited to share some very useful tips and tricks on how to build an RPMs and set them up in a custom repository for your company or for others to consume. It’s very cool and very easy to do most of this work.

So come on up to OALUG tomorrow night if you can.  I’ll make sure to follow-up here with the useful links for those interested.

Cheers,

Herlo

Anaconda is Awesome! How to force a network request with local media using kickstart

I sure love it when I solve my own problems, but the internets are a great help to enabling me.

Today, I found myself needing to enable the network (using dhcp) from the anaconda command line (the part that says boot: when you load a CentOS/RHEL/Fedora install disk).

I needed this because I was providing a bit of local media to our external employees for them to use to install, but I had 3 yum repositories I wanted them to be able to use for a few additional rpms I provided.

So, I popped into one of my common support channels and asked the question:

16:11 < herlo> looking for an option that I can put on the anaconda boot: prompt that will force a
               dhcp request even though the install is from a local disk.  I have repos that are not
               being accessed because the network is not being enabled.
16:11 < herlo> things I have tried
16:11 < herlo> ip=dhcp
16:12 < herlo> boot: linux noipv6 ks=hd:sdb1:media/kickstart.cfg ip=dhcp
16:20 < herlo> okay, so for those who might care
16:20 < herlo> if you do
16:20 < herlo> boot: linux asknetwork ip=dhcp noipv6 ks=hd:sdb1:media/kickstart.cfg
16:20 < herlo> anaconda will force a network dhcp request :)
16:20  * herlo is happy again

As you may have noticed above, I resolved this issue without any assistance from the channel, and it only took me 10 minutes to do so.  I found my answer by trial and error from a great page on the fedora wiki: https://fedoraproject.org/wiki/Anaconda/Options

Probably the only thing I wish was documented on that page was when each of the options started being supported in anaconda.  Otherwise, thank you to the folks that wrote and maintain that page.

Cheers,

Herlo

I guess we’ll wait

As many of you may already know, Fedora 9 (codename: Sulphur) has been pushed back 2 weeks to May 13.  Being the organizer of the Utah Fedora/Ubuntu Linux Release Party on May 3, its kind of hard to push it back because Ubuntu’s release is still on time.

I’m glad though that the major parts of this release are feature complete and its just a few blocker bugs holding it back.  I’m also really happy to point out that because the folks at the Fedora Project are willing to push the date back, the release will be much better off in the end.

This also goes to show that while many businesses would consider releasing anyway.  Mainly because they promised something, and not releasing would cost them revenue and possible customers.  Open source people don’t follow the same mantra, and I’m proud to say that while I like meeting deadlines, if deadlines slips a little to make a better product, timelines should slip.

In the meantime, enjoy the preview release made available yesterday.  Utah will party with this preview.  Shortly after the party, an update will be made available via yum.  There are some amazing things coming out in a few weeks.  Keep your ear to the ground and enjoy the new Sulphur in your life!

Cheers,

Herlo

Yum Update: 482:07

As I usually do while teaching class, I installed a Fedora 8 machine, and ran yum update.  Today I noticed a strange amount of time for one particular download:

foomatic

While this is hilarious, its shouldn’t happen.  Any ideas?  I know it didn’t take 28927 seconds (or about 1/3 of a day) to download that foomatic package.

Cheers,

Herlo

Werewolf (Fedora 8) Upgrade in 3 Easy Steps Using yum

Recently, there was a request in one of my comments on this post. The request was for an easy way to upgrade from Fedora 7 to Fedora 8. So I took this on as a bit of a challenge. I feel pretty comfortable with yum and I thought it would be a good and easy task.

A bit of warning here, make sure your current Moonshine ( Fedora 7 ) release is update by running yum update. Also, it is recommended that backups be made of files being modified. If you don’t backup the file, it may be impossible to fix in the future. YOU HAVE BEEN WARNED

Let’s upgrade Moonshine ( Fedora 7 ) to Werewolf ( Fedora 8 ) in three easy steps:

First things first, lets print out some version info:

$ cat /etc/*release
Fedora release 7 (Moonshine)
Fedora release 7 (Moonshine)
$ uname -r
2.6.23.1-21.fc7

Its easy to tell that this machine is indeed using Moonshine ( Fedora 7 ), so let’s upgrade!

Step 1 – Modify the yum repo files

Located in /etc/yum.repos.d directory are where the yum repository files are stored. We need to modify one line so that yum will know where to look:

$ su -
# vim /etc/yum.repos.d/fedora.repo

Find the first line that starts:

mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch

and change it:

mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-8&arch=$basearch

What changed? Well, the $releasever value is the current value for our version of fedora, in this case 7. By changing it to 8, it’ll load the correct repositories for Werewolf (F8) instead of Moonshine (F7). Save the file, and now we’re ready to move onto the next step.

Step 1 (Alternate)

Since posting this, I’ve learned that another option is available. To update the repositories, its possible to install an rpm to accomplish the same as above and it won’t require Step 3.

Choose your mirror from http://mirrors.fedoraproject.org. I picked University of Oregon’s site because it was close to me.

# rpm -Uvh \
ftp://ftp.osuosl.org/pub/fedora/linux/releases/8/Everything/i386/os/Packages/fedora-release-*.rpm

Your ftp/http line here may be different, that is fine. This command installs the updated repositories for Werewolf ( Fedora 8 )

Step 2 – Upgrade

In this step, we just need to run (as root):

# yum update
fedora               100% |===============| 2.1 kB   00:00
primary.sqlite.bz2   100% |===============| 4.9 MB   00:03
Setting up Update Process
Resolving Dependencies
.. snip ..

A few prompts will appear, after the repository data is loaded, a list of several hundred megs (possibly a gigabyte or more) of packages will be ready to install. This is the moment of truth.

Transaction Summary
============================
Install     88 Package(s)
Update     836 Package(s)
Remove       1 Package(s)

Total download size: 1.0 G
Is this ok [y/N]:

Start the download of over 800 packages (in my case) and install and update your system. If you feel a bit of trepidation, I concur. Its still exciting though, isn’t it?

Is this ok [y/N]: y

Now aren’t you excited! In about 30-45 minutes, you’ll have a newly upgraded Werewolf ( Fedora 8 ).

Downloading Packages:
orca-2.20.0.1-1. 100% |=========================| 1.5 MB    00:01
.. snip ..

Step 3 – Cleanup and Reboot

Welcome to your new Werewolf. Treat it wisely. First things first though, we need to clean up our editing from step 1:

# vim /etc/yum.repos.d/fedora.repo

Find the first line that starts:

mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-8&arch=$basearch

and change it:

mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch

Save the file, or if you prefer, copy the backup you made over the modified repo file.

In addition, there are some items that aren’t in Fedora 8 the same way they were in Fedora 7. For these, read this guide. I didn’t have these problems myself, ymmv.

To get the newly updated kernel and all the new goodness of Werewolf, a reboot is necessary. Enjoy your new Lycanthrope on the flip side.

Cheers,

Herlo

POW: Yum installation by groups

The second in the Program of the Week (POW) is here.

Yum, the Yellowdog Updater Modifer, has a very interesting feature. One which you might find useful if you want to install an entire set of packages for say a new “Windows File Server”.

Yum provides this feature right out of the box these days, and its quite a nice feature. SUSE 10.1 has rug which is a very similar feature, called bundles. I would guess that Ubuntu either already has this feature, or will in the near future.

So how does installation by groups work? Pretty simple really, first we must learn a few new options in yum:

First is “grouplist”. Grouplist will tell you which groups of packages you have installed and which ones haven’t been installed.

$ yum grouplist
Setting up Group Process

Installed Groups:
  Office/Productivity
  Engineering and Scientific
  .. snip ..

Available Groups:
  .. snip ..

  Windows File Server
  .. snip ..

  Development Tools
Done

In my case, you can see that I’ve not yet installed “Windows File Server”. Interestingly enough, I’m not sure what’s in that group of packages, so its time to check:

$ yum groupinfo "Windows File Server"
Setting up Group Process
Group: Windows File Server
 Description: This package group allows you to share files
 between Linux and MS Windows(tm) systems.

 Mandatory Packages:
   samba
   samba-client
 Default Packages:
   system-config-samba

Wow, quite a few packages, there’s also some good information here. We now know that there are 10 optional packages and 1 conditional package that can be installed. To get the details on any of these packages, yum can tell us:

$ yum info samba
  .. snip ..

Available Packages
Name   : samba
Arch   : i386
Version: 3.0.26a
Release: 0.fc7
Size   : 3.1 M
Repo   : updates
Summary: The Samba Suite of programs
Description:Samba is the suite of programs by which a lot of
PC-related machines share files, printers, and other
information (such as lists of available files and printers).
The Windows NT, OS/2, and Linux operating systems support
this natively, and add-on packages can enable the same thing
for DOS, Windows, VMS, UNIX of all kinds, MVS,
and more..

Yum informs us that the “samba” package is useful for setting up file sharing between Windows and Linux. Other packages from the list above will also be installed so we’ll get to play with some of those as well. If desired, ‘yum info’ can be run for each of the packages found in the grouplist. However, for us, lets move on and install the group of packages:

$ su -# yum groupinstall "Windows File Server"
.. snip ..

============================================================
Package               Arch    Version        Repo      Size
============================================================
Installing:
system-config-samba   noarch  1.2.52-1.fc7   updates  287 k
Installing for dependencies:
samba                 i386    3.0.26a-0.fc7  updates  3.1 M
Transaction Summary
============================================================
Install      2 Package(s)
Update       0 Package(s)
Remove       0 Package(s)

Total download size: 3.4 M
Is this ok [y/N]:

At this point, we need to choose whether we’re going to install the 2 packages that will enable samba for us. Hitting enter will answer no, so we need to type a ‘y’ and hit enter. The packages are then downloaded, and installed:

Is this ok [y/N]: y
Downloading Packages:
(1/2): system-config-samb 100% |=============| 287 kB  00:00
(2/2): samba-3.0.26a-0.fc 100% |=============| 3.1 MB  00:02
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: samba                 ################## [1/2]
Installing: system-config-samba   ################## [2/2]
Installed: system-config-samba.noarch 0:1.2.52-1.fc7
Dependency Installed: samba.i386 0:3.0.26a-0.fc7
Complete!

As you can see, its pretty nice to be able to install a group of packages together, letting yum do the work to figure out the details. In another article in the near future, I’ll cover how we create these relationships and build a back end yum server from the ground up.

Cheers,

Herlo

POW: bash-completion – Bash Auto Completion in Fedora using yum (and more)

In an attempt to consistently blog, I am starting a new series here on fedora-tutorials.com. Program of the Week (POW). Hopefully, this will excite and inform all of us about the cool programs available in Fedora. So see you next Wednesday for another program.

Over the past year or so, I’ve been on the hunt for several things that I find in other Linux distros that I cannot find in Fedora. Its not very common, but on occasion I do run into something that’s not there on Fedora. One of them was the ability to automagically complete many of the command lines for many things.

One of them, and probably one of the biggest, was the fact that yum did not have tab completion for available packages. Today is my lucky day! While chatting and helping my students with their labs today, one of them mentioned to me that he could tab complete a particular command on his box. I of course inquired, because it interested me, as to the package name. It turns out my bash tab completion dreams were just about to come true! He told me about this amazing package that would let me use tab completions for things like the service command, man and of course, yum.

I was blown away! So immediately after this discussion, I started searching for this elusive package I’ve never heard of before. Sure enough, as he informed me, bash-completion does exist and does some amazing things. After hunting around a little on google, here’s some of the stuff I found. I’ll also include the links at the bottom of this post.

as root try this: (note [Tab] means you should hit the tab key)

# service ht[Tab]

What you’ll notice is that one of three things happen. If you’ve got the bash-completion package installed already because you’re ahead of the game, it should auto-complete for you. Without bash-completion, this doesn’t happen, but its also possible that since bash already has some completion in place, it might auto complete a directory for you, but that’s definitely not what you want.

If you’ve not already installed bash-completion, I’d suggest you do it now. On Fedora 7, run the following command:

# yum install -y bash-completion
..snip..
Installed: bash-completion.noarch 0:20060301-3.fc7
Complete!

Now that bash-completion is installed, we need to invoke the tools. Normally, this is not needed, and a reboot/re-login will take care of this as well, but since I wanted to use this right away, I did the following as an unprivileged user:

$ source /etc/bash_completion

This doesn’t seem to do much, but its actually quite powerful. The source (or .) will load the environment variables from the /etc/bash_completion script into my current environment. Luckily for us, when we now log into root, /etc/bashrc will accomplish this for us without any intervention. To test that it worked, try running the following command as the same unprivileged user:

$ unalias[Tab]
.=     ll=     ls=     vi=     which=

Note that when I pressed twice, a list of the currently available aliases appeared. Nice ey? Let’s complete this:

$ unalias w[Tab]

Now produces:

$ unalias which

And completes the string as expected. Now we’re getting somewhere! But why did I really want to explain this?

Oh yeah! yum

With bash-completion, yum can now provide us with a list of available packages, similar to the auto completion capability in apt-get or aptitude from Ubuntu or Debian. Say for instance you want to see all of the packages available for install that match what you’re looking for, but don’t want to run yum list or yum search because, in truth, it just takes to long! Now you have an alternative:

# yum -y install bal[Tab]

Produces:

ballbuster.i386  ballz.i386       balsa.i386

Adding another ‘lb’ to the end of that string (and then the tab key of course) should help us to complete to the package we’d like to install.

# yum -y install  ballb[Tab]

Then completes to:

# yum -y install  ballbuster.i386

Hitting enter then installs the ballbuster package, and its quite a fun game!

.. snip ..
Installed: ballbuster.i386 0:1.0-1.fc6
Dependency Installed: ClanLib.i386 0:0.8.0-4.fc7
Complete!

Of course, there are hundreds of others tab completions available (and there’s a good way to list many of them too, even if its a bit cryptic). Try these on for size:

Are you a developer?

$ svn c[Tab]
cat checkout  ci     cleanup   co     commit    copy    cp
$ make [Tab]
all clean dist-clean

What about a systems administrator?

# modprobe -r b[Tab]
battery    bay        blkcipher  bluetooth  bridge     button
$ man cron[Tab]
cron     crond    crontab
$ ssh herlo[Tab]
herlo-f7   herlo-lap  herlo.org
$ grep --[Tab][Tab]
 --after-context=  --directories=   --invert-match   --only-matching
 --basic-regexp    --exclude=       --label=         --perl-regexp
.. snip ..

To help you wade further through, try out the following two commands:

  • complete -p
  • declare -f

Be aware that these are advanced components and can really be confusing if you’re not a developer and just want to use the features. The complete command seems to provides some tools to do additional auto-completion. I also think that its nice to be able to extend this functionality to other applications as well.

As promised, here’s a few links to help your completion introduction. Note: Some of these links provide more than just the simple tab completion: