SlackWare

Slackware The way it is structured with the software sets reminds me of my first SuSE installations. Back then it was SuSE 4.4 I think. The Slackware-HOWTO seems to be the document I really need. I will download the first two ISO images and see how far I get.

Slackware

Slackware

software sets

Slackware-HOWTO

All of this is based on ** 10.0**. I also upgraded to Slackware 10.1 (2005-03-28 Software), and on to Slackware 10.2 (2005-10-15 Software).

=>

2005-03-28 Software

2005-10-15 Software

(Why switch from Debian? First, I was using Debian *unstable* which means that I got a lot of package upgrades and every now and then some breakage – like the day when Claudia really needed a CD and cdrecord was broken... Debian stable didn’t cut it because over the months and years I wanted to try this or that package which was only available in unstable. So I switched. All the upgrading also meant new libraries now and then. And that meant that the stuff I built myself in `/usr/local` had to be rebuilt now and then because it, too, would fail after a while. So basically, apt-get was not only installing the good stuff, sometimes it was also installing the bad stuff. Self-compiling was also risky because the libs changed now and then. And Debian stable was too old. So I switched.)

Signature Verification

Get the Slackware Linux Project key, or download it from their website. ¹ I saved the file as `/tmp/gpg-key`.

¹

    gpg --import /tmp/gpg-key

Now you can verify the two ISO images:

    gpg --verify slackware-10.0-install-d1.iso.asc \
                 slackware-10.0-install-d1.iso
    gpg --verify slackware-10.0-install-d2.iso.asc \
                 slackware-10.0-install-d2.iso

You’ll get the following message:

   gpg: Signature made [...] using DSA key ID [...]
   gpg: Good signature from "Slackware Linux Project <security@slackware.com>"
   gpg: WARNING: This key is not certified with a trusted signature!
   gpg:          There is no indication that the signature belongs to the owner.

The warning is correct, unless your GPG already contains an unbroken trust chain between you and the Slackware Linux Project. Oh well. You *could* go ahead and sign the key yourself. After all, you’re going to install their operating system, and if you don’t trust *them*, who are you going to trust? But it is not an easy decision to make.

Partitions

Instead of trusting *parted*, I booted from Knoppix and moved the contents of my entire root partition (on `/dev/hdb1`) into another partition (`/dev/hdd7`), and repartitioned `/dev/hdb` using fdisk. A few days ago I was too lazy and had chosen `/dev/hdb` as my new root partition and had left it at 120GB. I made five partitions:

I then moved the root stuff back from `/dev/hdd7` to `/dev/hdb1` and reinstalled grub just to be on the safe side:

    grub-install --root-directory=/dev/hdb1 /dev/hda

And it worked! Downloaded the ISO images, burnt them on a CD:

    cdrecord -data driveropts=burnfree -device = ...  (must find this commandline)

Installing, I chose `/dev/hdb2`, full installation, made sure to select the KDE internationalization software set, did what needed doing, ended up creating a new user:

    adduser alex

And here I am...

Booting, Kernel

I later decided to give the *bareacpi.i* kernel a try, because the computer is new and therefore the motherboard supports ACPI. Cool! Now *halt* really does switch the computer off, instead of just spinning down the disks.

Strangely enough I was unable to do this via the *pkgtool* → *Setup* menu. Maybe because I forgot to specify the target again? Oh well. In the end I manually copied the files from the kernels/bareacpi.i directory on a slackware mirror as follows:

kernels/bareacpi.i

And then I relinked it:

    ln -sf System.map-ide-acpi-2.4.26 System.map
    ln -sf config-ide-acpi-2.4.26 config
    cp vmlinuz-ide-acpi-2.4.26 vmlinuz

I copied the kernel instead of linking because the old copy was not a symlink either.

I also decided to switch from grub on the Debian partition to a new lilo. Here’s my `/etc/lilo.conf`:

    boot = /dev/hda
    install = menu
    prompt
    timeout = 100
    change-rules
      reset
    vga = normal
    image = /boot/vmlinuz
      root = /dev/hdb2
      label = Linux
      read-only
    other = /dev/hda1
      label = DOS
      table = /dev/hda

Don’t forget to run ’lilo’ after changing the file! I get the following warning but it seems to have no effect:

    Warning: The boot sector and map file are on different disks.

The MBR no longer contains grub, so I can no longer boot the Debian root partition. But who cares. ;)

The DOS partition is for the ComancheGame. I actually haven’t played it on my new computer. Must try it immediately. [...] Update: I no longer have a game port on this computer! No joystick!? And the soundcard is wrong, of course. And I have no DOS driver for my NEC3500A! ARGH!

ComancheGame

Sound

Sound not working... Hm. There was some confusing info when booting, so I tried to fiddle with it. Then I turned to the web and found a report of how somebody else got sound working. ² And it turns out that all I forgot was to run *alsaconf*! Everything just worked... I then ran *alsamixer*, reduced the volume a bit, and used *alsactl store* to save this setting. Worked! The motherboard said I had a SoundMax Digital Audio System with a DLS2 MIDI synthesizer with Yahama DLSbyXG sound set and blabla. At the very beginning of the booklet, however, it had a much better description: *ADI AD1888 6-channel audio CODEC*. After running alsaconf, alsamixer now shows me that I have the card *SiS S17012* and the chip *Analog Devices AD1888* – and that matches the info I have from the booklet. Cool! I think I like Slackware. ;)

²

Yeah, and I removed the system beep: Edit `/etc/inputrc`, and uncomment “set bell-style none”.

X

X is working without any single extra keypress. When I compare this to the good ol’ days with X -probeonly and other crud...

I did change a few things in `/etc/X11/xorg.conf`. I uncommented the following settings:

For a graphical login box, edit `/etc/inittab` and change “id:3:initdefault:” to “id:4:initdefault:”.

I also had to run gdmconfig to enable the “action” menu which allows us to reboot or halt the system from the login prompt.

Touchstream LP

For my Touchstream keyboard I had to run *mouseconfig* again. This fixed gpm. Just choose an USB mouse. X11 was a bit tougher but pgas helped me out: In `/etc/X11/xorg.conf`, add an input device for the old mouse and and add the server... Then you can use both keyboards and both the old mouse and the mouse built into the Touchstream keyboard.

pgas

    Section "InputDevice"
        Identifier "Mouse2"
        Driver "mouse"
        Option "Protocol" "PS/2"
        Option "Device" "/dev/psaux"
    EndSection

In the Section “ServerLayout”:

        InputDevice "Mouse2" "SendCoreEvents"

TTF Fonts

Got some fonts from Explorer language packs from the net and saved them in `/usr/X11/lib/fonts/TTF`. Then run the following in `/usr/X11/lib/fonts/TTF`:

    /usr/X11R6/bin/mkfontdir .
    /usr/X11R6/bin/fc-cache

And immediately the Chinese text on http://www.oddmuse.org/ looks ok! 😄

http://www.oddmuse.org/

Neep Fonts

Copied them from my old Debian partition into `/usr/X11R6/lib/X11/fonts/local/`:

    cd /usr/X11R6/lib/X11/fonts/local/
    cp /mnt/debian/usr/X11R6/lib/X11/fonts/misc/neep-* .

Ghostscript Fonts

For *xfig* I wanted some new ghostscript fonts. I downloaded the ghostscript-fonts-std-8.11 tarball ³ and unpacked the fonts into `/usr/local/share/fonts`. This time the directory was not on the fontpath.

³

I added this line to `/etc/X11/xorg.conf`:

    FontPath   "/usr/local/share/fonts/"

In the current session, I also ran:

    xset +fp /usr/local/share/fonts/
    xset fp rehash

SSH agent

If you want to use version control from within Emacs, you *need* ssh-agent or something similar.

In your ~/.bashrc:

    export CVS_RSH=ssh

Reading `/opt/kde/share/config/kdm/Xsession` I found out that ~/.xprofile is sourced before the window manager is started. Excellent! I verified that other X Display Managers (eg. XDM) support it as well – I looked at `/etc/X11/xdm/Xsession`, for example.

In your ~/.xprofile:

    eval `ssh-agent`

Before using ssh, be sure to run ssh-add somewhere. I usually just run it from the command-line... I don’t bother installing it in an init script somewhere.

Konqueror

Right, decided to go with KDE because I liked the way Knoppix 3.4 looked.

I also note that Konqueror doesn’t understand UTF-8 in the default CSS for my website. Grrr. External links are supposed to be prefixed with an arrow pointing up and right. I get three weird bytes on Konqueror... 🙁

Security Updates

Ok, now we’re doing the *real* thing. Instead of *apt-get update* and *apt-get upgrade*, I’ll have to do some more work. First, get all the patches (got that info from ​#slackware @ freenode):

    wget ftp://slackware.at/slackware-10.0/patches/packages/*

This will take a while. I put them in `/usr/local/slackware-10.0`.

Signature verification: Import the key as described above, and then verify all of the files:

    for f in *.tgz; do gpg --verify $f.asc $f; done

Next, run *pkgtool* as root in the directory, choose *Current* and click Ok dozens of times to install all the packages.

I think that should be pretty painless from now on. Use the **-c** option for wget and rerun to update packages, run *pgktool*... About as easy as using *apt-get*, I think.

In the future, I’ll have to check the ChangeLog.

ChangeLog

Fetchmail

I noticed that I was unable to fetch mail from fencepost.gnu.org:

    116 messages for alex at fencepost.gnu.org (836995 octets).
    fetchmail: cannot get a range of message sizes (1-100).
    fetchmail: client/server protocol error while fetching from fencepost.gnu.org
    fetchmail: Query status=4 (PROTOCOL)

Googling the error message brought me to a thread on a Free BSD mailing list ⁴ that had the correct workaround: I added *fetchsizelimit 1* to my ~/.fetchmailrc.

Sendmail

Hm. I don’t have a domain name, so something’s wrong. Just got a mail back saying

Diagnostic-Code: SMTP; 501 5.1.8 Domain of sender address alex@confusibombus.example.org does not exist

I can’t remember what I did on Debian with Exim4. And I can’t remember how I added SMTP_AUTH. And eventhough I really tried, the config files and the documentation for sendmail are... monstrous. So I’ll just leave it installed with all the defaults and add SmtpMail and SmtpAuth to my ~/.gnus file. I also installed Thunderbird, just in case.

Stow

For managing stuff installed in _usr_local, I use stow. There is no stow package, however, so I had to download it from the homepage.

Trying to prepare Slackware packages *for myself only* is a waste of time. Just install into _usr_local and use stow. 😄

Bitlbee

BitlBee is an indispensable IRC server that acts as a gateway to ICQ and AIM. Thus, I can use irssi to chat on ICQ and AIM. Awesome! ⁵

After installing it, I added the following line to `/etc/inetd.conf`:

    ircd  stream  tcp  nowait  nobody  /usr/sbin/tcpd  /usr/sbin/bitlbee

Compface

If you use BbdbMode, you need CompFace for that big brother feeling... These here are from the Cygwin port (!!), and renamed from uncompface.exe and compface.exe. I was unable to compile plain 1.4 source code, and too lazy to investigate. 🙁

GregScott says that Google turned up the following fix for the compface-1.4 problem: Apply the following patch to *both* cmain.c and uncmain.c.

    60,61c60,61
    < extern int errno;
    < char *strerror();
    ---
    > #include <errno.h>
    > #include <string.h>

Kino

I need Kino to grab videos from Claudia’s camera and edit them. The kino package on linuxpackages.net didn’t work for me. Too many unmet dependencies. See CompilingKino for my build notes.

Kino

Claudia

CompilingKino

Inkscape

I also wanted to give Inkscape another try – as an alternative to xfig, maybe. See CompilingInkscape for my build notes.

Inkscape

xfig

CompilingInkscape

Apache

I don’t start httpd per default. If I want, I can always start it later:

    apachectl start

I linked the current Oddmuse script into the cgi-bin directory:

    ln -s /mnt/src/oddmuse/wiki.pl /var/www/cgi-bin/

And I enabled the Option FollowSymlinks in `/etc/httpd.conf` in the directory section for `/var/www/cgi-bin`.

To restart Apache once it is running (after a change to the config file), use:

    apachectl graceful

Perl

Perl 5.8.4 comes without any modules from CPAN. You have to install everything yourself, or so it seems. I had to start with LWP::UserAgent...

    cpan LWP::UserAgent

(I used to have a weird problem: The CPAN shell would keep trying to install a module called JUNOS! I finally figured it out after googling for it: If you type `cpan install LWP::UserAgent` then the CPAN shell will first try to install “install” – and JUNOS has a file with the appropriate name in the top directory... Doh! ⁶)

It sure feels weird to run the cpan shell as root. 🙁

Open Office

I was happy with AntiWord for reading the occasional Word document I got by mail and never had any use for AbiWord and KWord that came with Slackware. When I got a mail from a newspaper guy with an article of mine and revision control, I had to install something better. Got myself OpenOffice directly from their website.

If there’s more than one user on your system, be sure to use the -net parameter when installing as root. Then, every user has to run setup *again* to install some files into the home directory.

Wireless

I’m using an OpenWlan without encryption. The Apple AirPort Express supports both WEP and WPA Personal, but I can’t get the Netgear WG-311T to work with encryption. Without encryption, it works.

OpenWlan

Got the madwifi drivers from cvs, make, make install,

madwifi

In my `/etc/rc.d/rc.local` I wrote:

    ifconfig ath0 up
    dhclient ath0

Comments

(Please contact me if you want to remove your comment.)

i’m following your entries with interest. glad you like it so far.

about sound, since i restore `/etc/` from my $HOME archive, i’d forgotten about editing asound.state long ago. my AS Rock Sis 651 motherboard also has an SI7012.

how do you play CDs? i tried xmms, but don’t know how to select the audio cd. maybe i messed it up in setting up for cdrw use: after initial install, i changed `/dev/cdrom` from hdc to scd0.

slacklist.sh to grep for packages:

    ls -oF /var/log/packages/ |grep -i $1

then

    slacklist.sh . | wc -l => 193

– GregScott 2004-11-04 03:34 UTC

---

If I have a CD, I play them on the stereo. 😄 I rip CDs to use the files for the portable player, and I rip streams, which I sometimes listen to. I recently started to use EMMS to control mpg321.

EMMS

As for the device stuff, I burn my CDs as follows:

    cdrecord -v speed=0 dev=ATAPI:/dev/hdc driveropts=burnfree -audio files...

Permissions:

    usermod -G disk claudia
    usermod -G disk alex

– Alex Schroeder 2004-11-04 03:47 UTC

Alex Schroeder

---

in case you ever want to play CDs on the PC, i just figured it out.

1. make sure `/dev/cdrom` has correct permissions. in my case, `/dev/scd0` was only readable by root.

2. xmms by default expects a `/mnt/cdrom` directory. i didn’t have one (only `/mnt/cdrw`)

now that i’m playing a CD, i get the feeling i’ve solved this problem at least once before. that’s a funny thing about having an old brain.

just for your amusement, i’ll mention that the CD i grabbed was “CHOD: cutting through dualism”. sorry i don’t know how the put the umlaut over the O in CHOD.

– GregScott 2004-11-04 06:16 UTC

---

yes, monstrous sendmail. ssmtp-2.48 worked fine for me, before switching from mutt to gnus with smtpmail. ssmtp is tiny: the executable lives in $HOME and is 20892 bytes, the config file in is 495 bytes of mostly comments.

google turned up this fix for compface-1.4 problem:

in BOTH cmain.c, uncmain.c:

    diff alex-trouble/compface-1.4/uncmain.c compface-1.4/uncmain.c
    60,61c60,61
    < extern int errno;
    < char *strerror();
    ---
    > #include <errno.h>
    > #include <string.h>
    Diff finished.  Fri Nov  5 01:07:11 2004

BOTH uncmain.c and cmain.c should thus have this section after editing per diff:

    #ifndef HAVE_STRERROR
    extern int errno, sys_nerr;
    extern char *sys_errlist[];
    #else
    #include <errno.h>
    #include <string.h>
    char *strerrorwrap();
    #endif

– GregScott 2004-11-05 07:15 UTC

---

Thanks for the ssmtp suggestion. I’m glad to know I’m not the only one deciding that smtpmail.el is the easier solution. If we’d switch to Thunderbird, we’d also configure it to use the ISP’s smtp host, and if I remember correctly even command-line tools like Debian’s reportbug allowed me to configure a smtp host. Thus I guess trying to get a smarthost config working locally is useless if you’re on a dynamic IP. All you need is a local agent that accepts mail on port 25 for fetchmail to work, and I think maybe cron-job output is also sent via local mail... Since my current sendmail configuration does that (but is broken when trying to do more), I’ll just leave it as it is. It’d be interesting to see what breaks if I *remove* sendmail from the system (without replacing it with ssmtp). ;)

– Alex Schroeder 2004-11-05 14:49 UTC

Alex Schroeder

---

i never install sendmail, and ssmtp isn’t in $PATH. the only program that knew about ssmtp was mutt, which had `"set sendmail="$HOME/ssmtp/sbin/ssmtp -v"` in a mutt config file.

at work, smtpmail works for internal addresses, but email containing an external address in to: or cc: is rejected by the corporate smtp app with a message about “unauthorized relay attempt”.

so i added a function to message-send-hook that invokes message-narrow-to-headers, scans for an external email address, and switches from the default message-send-mail-function (smtpmail-send-it) to message-send-mail-with-sendmail. of course i have

(setq sendmail-program "~/ssmtp/sbin/ssmtp").

– GregScott 2004-11-05 15:38 UTC

---

I wanted to use *installpkg* for all the stuff I build myself. It seems rather easy to do. But then again, why spend the time on it, since I’m not going to turn into a major package provider? So I will stick to stow. 😄

Here’s what I had going:

    ./configure --prefix=/usr
    make
    make install prefix=/mnt/src/slackware-10.0/foo-1.2
    cd /mnt/src/slackware-10.0/foo-1.2

Some thinking on how to install info files and all that. For stow itself, for example, I created the following two files:

install/doinst.sh (based on an example on the Slackware doinst File HOWTO on linuxpackages.net):

Slackware doinst File HOWTO on linuxpackages.net

if [ -x /usr/bin/install-info ]
then
   /usr/bin/install-info --info-dir=/usr/info /usr/info/stow.info.gz 2>/dev/null
fi

install/slack-desc

1. HOW TO EDIT THIS FILE:
1. The "handy ruler" below makes it easier to edit a package description.  Line
1. up the first '|' above the ':' following the base package name, and the '|' on
1. the right side marks the last column you can put a character in. You must make
1. exactly 11 lines for the formatting to be correct.  It's also customary to
1. leave one space after the ':'.

    |-----handy-ruler------------------------------------------------------|
stow: GNU Stow helps the sysadmin organise files under /usr/local/ by
stow: allowing each piece of software to be installed in its own tree under
stow: /usr/local/stow/, and then using symlinks to create the illusion that
stow: all the software is installed in the same place.
stow:
stow:
stow:
stow:
stow:
stow:
stow:

And to finish building the package:

    makepkg -c n ../foo-1.2-i386-1.tgz
    cd ..
    installpkg foo-1.2-i386-1.tgz

– Alex Schroeder 2004-11-06 20:45 UTC

Alex Schroeder

---

re Perl section, and your comment “It sure feels weird to run the cpan shell as root.”:

the CPAN auto-installation method doesn’t seem slackware-ish.

i install all modules by hand.

today i timed how long it takes to install perl-5.8.6 and LWP. on my old PIII-500MHz it took 23m to install perl-5.8.6 (9m was for “make test”), and 14m to install the prereqs for LWP and LWP itself.

everything was obtained from cpan. you can generalize and script these examples. (the first is perl-5.8.x src):

http://www.perl.com/CPAN/src/latest.tar.gz

http://www.perl.com/cgi-bin/cpan_mod?module=URI

http://www.perl.com/cgi-bin/cpan_mod?module=Compress::Zlib

this syntax gets you the latest version. you can browse http://www.cpan.org/modules/by-module/

http://www.cpan.org/modules/by-module/

some of the prereqs in the LWP readme were already in the initial perl-5.8.6 installation, ex. MIME-Base64, Digest-MD5, and libnet (Net::FTP,Net::POP3,etc.), so i only had to install the following, in this order:

1. Compress-Zlib

2. URI

3. HTML::Tagset [for HTML-Parser]

4. HTML::Parser

5. libwww-perl

in case you want to try setting up perl plus modules without messing up your current installation, here are some notes. you may prefer a different directory than $HOME. i symlink _usr_bin/perl to $HOME/perl- (which is symlinked to minor version), so upgrading slackware doesn’t touch my perl installation.

installing perl

    cd perl-5.8.6
    ./configure.gnu --prefix=/home/gkscott/perl-5.8.6
    make
    make test
    make install
    cd ~
    ln -s perl-5.8.6 perl-5.8
    cd /usr/bin
    sudo ln -s $HOME/perl-5.8/bin/perl perl

installing individual module foo:

    unpack foo.tar.gz
    mv foo-dir ~/perl-5.8/gks_installed/
    cd ~/perl-5.8/gks_installed/
    cd foo-dir [contians Makefile.PL, foo.pm, README, MANIFEST]
    perl Makefile.PL PREFIX="$HOME/perl-5.8"
    make
    make test
    make install

– GregScott 2004-12-05 22:58 UTC

---

When I have to install the next Perl module, I’ll take use your notes and see whether that works better. 😄

– Alex Schroeder 2004-12-05 23:08 UTC

Alex Schroeder

---

You might want to disable the monitor power saving functionality in the bios if you are using usb devices only.

– PierreGaston 2005-01-12 21:15 UTC