Debian Tips by Rick Moen revised 1999-12-09 [Please pardon this document's Intel-centrism. Probably, almost all of it will generalise to Debian for Motorola 680x0, DEC Alpha, and Sun SPARC, but I cannot guarantee that.] This document, or a successor, will reside somewhere in http://linuxmafia.com/debian/ Basic documentation ------------------- Debian Installation Guide ("Installing Debian GNU/Linux") by Adam Di Carlo and other authors ftp://www.debian.org/debian/dists/stable/main/disks-i386/current/install.html 20 pages -- PRINT AND READ THIS BEFORE INSTALLING. Debian FAQ http://www.debian.org/doc/FAQ/ 75 pages Debian Users Guide (by Dale Sheetz) http://www.debian.org/~elphick/ddp/manuals.html#devel is helpful Debian Packaging Manual, http://www.debian.org/~elphick/manuals.html/packaging-manual/ Debian Documentation Project, http://www.debian.org/~elphick/ddp/, which is generally a good place to find docs, some of which may not be in a finished state. Installation notes ------------------ Most people will elect to install from CD-ROM. If so, configure your system to boot from CD-ROM before starting, if it supports that. Doing so allows you to dispense with installation boot floppies, a very frequent source of problems. If you need to start the installation process from floppy (i.e., cannot boot from CD-ROMs), then you need to generate (write) a floppy from image files on Debian CD #1. The installation diskette-image file is somewhat confusingly called a "rescue" floppy. (Some machines, such as IBM ThinkPads, will need the alternate "tecra" rescue floppy, because of drive-addressing peculiarities.) As is usual with Linux distributions, you can write the floppy from its image file using either the provided RAWRITE.EXE DOS utility or a Unix machine's "dd" utility. Watch carefully for errors or early termination of the write process: More installations fail because of subtly defective boot floppies than for any other reason. Debian 2.1 "Slink" has a fairly old XFree86 (v. 3.3.2.3a). (This software group comprises the video graphics engines for various video-card chipsets, and you may need to upgrade it to support recent video cards.) Newest are available at "http://www.netgod.net/x". You can either retrieve them using apt-get, or retrieve them manually and install using "dkpg -i". ftp://ftp.debian.org/debian/dists/potato/main/binary-i386/x11/ (i.e., the current beta-version Debian distribution, "potato") also has X upgrade packages, _but_ those packages require GNU libc version 2.1, which would be essentially going partially to "potato", which you would probably consider undesirable. You should get upgrades for at least the following X-related packages: xserver-vga16 Generic 640x480x16 plain-VGA support. Good to have for testing, etc. Not all current cards have VGA16 backwards compatibility, but most do. xserver-[...] Whichever X server is required for your video card. See: http://www.xfree86.org/cardlist.html xserver-common xfree86-common xf86setup xbase Only if you're upgrading from Debian 2.0 xbase-clients xlib6 Libraries xlib6g xprt X printing support xfs X Font Server xfstt TrueType server xfonts-scalable xfonts-base xfonts-75dpi xfonts-100dpi Debian's installer puts you in cfdisk. If you prefer the traditional Linux fdisk, exit cfdisk and switch to a different virtual terminal (Ctrl-Alt-F2), then use fdisk there, then switch virtual terminals back (Ctrl-Alt-F1). (You should exit cfdisk because it would otherwise render fdisk unable to write to the disk device.) The installer may prompt you for an expansion card's (e.g., an ethernet card's) hardware resources, such as I/O base address and IRQ. Try _omitting_ that data, which induces a fairly reliable autoprobe process, to find the correct values: The installer fails to clarify that it will default to autoprobing, which is unfortunate, because that is almost always a better choice. Also, make sure you know the following hardware-configuration details before you start: What port your mouse is on (PS/2, ttyS0=COM1, ttyS1=COM2, etc.), what video chipset your video card uses, how much RAM your video card contains, what chipset your ethernet card (if any) is built on, and what device type your CD-ROM is if you'll be installing from it (SCSI, hda=primary master IDE device, hdb=primary slave, hdc= secondary master, hdd=secondary slave, or whatever else). Ignore video details if you're omitting X support (but most users won't be). Debian's installer needs to be told these things because of a design tradeoff: Because it doesn't autoprobe for this data, the installer can be stable and usable even on bizarre hardware that tends to confuse autoprobe programs. On the minus side, it means the user must know his system in more detail than usual. Because of that aspect and other rough spots in the installation noted throughout this piece, I recommend _against_ trying Debian as one's first Linux distribution. However, if you've tried (any of) SuSE, Red Hat, Turbo Linux, Caldera Open Linux, Slackware, Stampede Linux, Mandrake, etc., and generally know your hardware, you're more than qualified. Surviving "dselect": dselect is a software package-selection and configuration tool, liked by a few, detested by many, and due to be replaced soon. During Debian installation, you will briefly encounter it but need not ever use it thereafter, post-installation. (Better tools are available, e.g., apt-get, dpkg.) Suggestion: DO NOT attempt to adjust package selection in any way inside dselect, during your initial installation. Doing so can prolong your installation time by many hours, as you wrestle with dselect. One avoids this pitfall by selecting, on an installer screen just prior to entering dselect, a "profile" (a predefined set of packages to install, for a machine role such a network server, scientific workstation, etc.). You can recognise that installer screen by the following (rather confusing) text on it: Now you may choose one of several selections of packages to be installed. If you prefer to select one by one which packages to install on the system you may skip this step, else you may skip the 'Select' step later when I run the 'dselect' program. Let's translate that into English: It's saying you may choose either of two ways to specify packages to be installed. (1) You might elect to pick a "profile". After doing so, you will be run through a program called 'dselect' whose main menu consists of about six numbered steps. Ignore step number 3, 'Select', since having already specified a profile makes that step redundant. or... (2) You might prefer _not_ to use a "profile", in order to pick and choose individual packages during initial installation. In that case, you'll definitely want to perform all of the dselect program's numbered steps, including step number 3, 'Select'. You are strongly advised to go with the first option during initial installation: DO NOT attempt to tweak dselect's package selection to do a "kitchen sink" installation, or for any other reason. People who do that end up dealing with dependency issues in dselect for hours. You Have Been Warned. (Among many faults, dselect's 'Select' step presents you with a non-collapsible scrolling list of 2200+ packages. Horrors.) While you are in dselect, as the program is installing your packages, it will scroll past your eyes quite a lot of configuration information, sometimes prompting you for setup choices. (Unlike some other distributions, Debian has you make those choices during initial package installation rather than providing generic values for them.) You are strongly advised to take notes on paper and take your time, since some of the information displayed is valuable, and to my knowledge is not logged. (The latter fact is the single biggest reason I think dselect is Evil and Must Die, by the way.) In particular, don't think of dselect as a general system-administration and setup tool (like SuSE's "yast"). It isn't one. Other utilities perform those functions: -- Use xf86config or XF86Setup (those names are case-sensitive) to configure the X Window System after installing needed X packages. -- Use Wvdial or ppp-config to configure Internet dial-up networking. -- Use apt-get and dpkg to install/remove/configure Debian packages. -- Use ipmasq to set up firewalling. ===> PACKAGE-INSTALLATION OPTION #3 (the most interesting): Instead of _either_ picking a package "profile" _or_ picking and choosing packages in dselect, you can simply _quit_ the installer (ctrl-C) when shown the profile list. You will then have run completely through the first half of Debian installation (the "debootstrap" utility) and omitted the "dselect" second half. You will have thereby installed just the "Debian base system". The theory behind doing so is that you can then efficiently add _just_ the packages you want, resulting in a lean, sparse, _secure_, and yet full-featured system. _However_, the Debian base system must be supplemented -- and can be as follows, on any network connected to the Internet: 1. Login as user "root". Stay in directory "/root". 2. If your machine requires a DHCP-issued dynamic IP address, get and add the dhcpcd-[version].deb package. ("dpkg -i dhcpcd-[version].deb") 3. Add the "apt" package-management system. (dpkg -i apt-[version].deb") 4. Do: script (this logs what follows to text file "typescript") apt-get update && apt-get -u dist-upgrade (This upgrades all installed packages to latest versions. The "-u" adds packages listed as "suggests" companions for those being installed .) 5. Install the following additional packages omitted from the Debian base system, by typing "apt-get install [deb1] [deb2] ...": autoconf automake bin86 binutils bison cpp doc-base dpkg-multicd file flex g++ gcc gettext gettext-base groff info kbd kbd-data less libc5 libc6-dev libg++27 libg++272 libstdc++2.10-dev libstdc++2.8 lilo make man-db manpages psmisc sysutils 6. If your system will support the X Window System, add: xbase-clients xlib6 xlib6g xlib6g-dev 7. Your system is now fairly functional (initially without X setup). Browse the package listings in the /var/state/apt/lists/*Packages files, and "apt-get install" what you need. You'll only need to do a few such "install" commands, to (e.g.) add a full-blown X setup, because apt-get retrieves additional packages as needed to meet dependencies. pine/pico: Debian does not by default install "non-free" packages -- those under restrictive software licences (although many are provided and available for installation). If you are a user of the "pine" e-mail client or the "pico" text editor that pine provides, please be aware that pine is non-free and therefore is not a default installation item. The U. of Washington's licence forbids distribution of pine/pico (v. 4.62 or later) in binary form. This restriction is routinely violated by many GNU/Linux distributions, but not by Debian. (U. of Washington is aware of this licencing problem, but elects not to fix it.) You can thus install pine and pico (in Debian) by installing the pine source-code package and then compiling the programs. apt-get build-dep pine apt-get source --compile pine dpkg -i *.deb or, equivalently: apt-get build-dep pine apt-get source pine dpkg-buildpackage dpkg -i *.deb However, there's a better alternative. Just put the following script in /usr/local/bin as "pine", and chmod it to 755 (executable): #!/bin/sh /usr/bin/mutt -F /usr/doc/mutt/examples/Pine.rc pico can be emulated by a symbolic link to the simple editor "ae", which is really very close to pico: cd /usr/local/bin ln -s ../../../bin/ae pico Qmail (the SMTP e-mail server) is available in the same way as pine/pico, as a source-code package (qmail-src) with a canned build script, in the Debian non-free packages collection. Post-installation adjustments: ------------------------------ -- Consider manually creating symlinks cdrom, floppy, and mouse in the /dev directory. -- Consider changing the mountpoints for your floppy and CD-ROM devices from /floppy and /cdrom to /mnt/floppy and /mnt/cdrom (to make them more standards-compliant). Remember that you can always put personal symlinks in your home directory as shortcuts to frequently-visited directories. -- Consider cleaning up the format of /etc/fstab in a text editor, and adding entries for your CD-ROM and floppy devices, e.g.: # /dev/sda1 / ext2 defaults,errors=remount-ro 0 1 /dev/sda2 none swap sw 0 0 /dev/fd0 /mnt/floppy ext2 noauto 0 0 /dev/scd0 /mnt/cdrom iso9660 noauto,ro 0 0 proc /proc proc defaults 0 0 (The "noauto" options for the floppy and CD-ROM ensure that any floppies and CDs in those devices will not be automounted at boot time.) Post-installation addition/removal of software packages. -- dpkg: very decent command-line package installer/uninstaller -- The wonder that is apt-get: -- automatically retrieves additional packages as needed to satisfy dependencies -- can be used to systematically track either a named Debian version (e.g., potato, slink, hamm, bo) or the symlinks "stable" and "unstable". Sysadmin can either run apt-get manually or as a cron job. apt-get is intended, in the long term, to be just a "method" (subsidiary app) invoked by apt, the intended replacement for dselect. Thus, it is a command-line tool. Basic update of the already-installed packages: apt-get update && apt-get -u dist-upgrade If the dist-upgrade has problems, do "apt-get -f install" (to fix). To switch to tracking the "unstable" Debian branch: -- add the following to your /etc/apt/sources.list file: deb http://http.us.debian.org/debian unstable main contrib non-free deb http://non-us.debian.org/debian-non-US unstable/non-US main contrib non-free -- Re-run "apt-get update", to get the new available-package listings. -- In order to upgrade crucial packages first, do: "apt-get install perl libc6 dpkg apt apt-utils debconf" Whenever you're switching to a new development track, or are for any reason expecting a major jump in package versions, the foregoing command is a worthwhile precaution. -- Re-run "apt-get -u dist-upgrade". You are now upgraded to (and can track in the future) the "unstable" branch. You can make apt-get search your CD-ROM first (which is faster than getting packages from the Net) by adding something like the following as the first non-comment line in /etc/apt/sources.list: deb file:/mnt/cdrom/debian stable main non-free After installing packages, run apt-get clean to clear out /var/cache/apt/archives where .deb packages otherwise accumulate. apt-get autoclean will clear out only "useless" package files. Don Marti reports that he runs this, instead, as a nightly cron script: apt-get update && \ apt-get -y --download-only dist-upgrade && \ apt-get autoclean That updates the available-packages lists, retrieves into /var/lib/dpkg/archive but doesn't install any new packages, and removes those no longer essential. He later does a manual "apt-get dist-upgrade" to install the pre-fetched packages with human supervision. (Alternative: use aptcron, which is designed to be automated and to cooperate with debconf.) apt-get update && apt-get build-upgrade will update your system and then recompile all installed software. (The "build-upgrade" parameter is supported only by recent CVS betas of apt-get, at this date -- but is very slick.) You can edit your /etc/apt/sources.list file to make apt-get use a variety of sources, including various unofficial ".deb" archives. A list of the latter is maintained by Stéphane Bortzmeyer at http://www.internatif.org/bortzmeyer/debian/apt-sources/. (Consider particularly "deb http://security.debian.org/ stable updates".) (2002-12 update: Mike Markley's http://apt-get.org/ has mostly taken over from Bortzmeyer's list.) Tweak /etc/apt/build-options (?) to set compiler flags, etc. (This would be another cutting-edge feature in the betas.) Tip: Before using apt-get (or dselect, or dpkg) to do anything, start the "script" utility to make a session logfile. You are strongly advised to do this, since package-installers in Debian output meaningful information that may be important for you later. slink vs. potato ---------------- At any given time, there is a Debian "stable" distribution and an "unstable" (development) distribution. At this writing, Debian-stable is named "slink" (v. 2.1, based on installation kernel 2.0.36), and Debian-unstable is "potato" (no version number yet assigned). potato is quite solid and close to release as the next "stable" branch, but installation diskette images for it are still being tested. Therefore, the only practical way to reach potato is to install slink first, and then upgrade. There is one exception: Debian developer Joey Hess has produced an ISO-9660 (CD-ROM filesystem) image of what he calls "slink-and-a-half", available at ftp://ftp.valinux.com/pub/support/joey/slink-and-a-half.iso . This is an upgraded slink, based on Linux kernel 2.2.12, with the vastly expanded hardware support that one gets with more-recent kernels. (Therefore, it will install on advanced, recent hardware that slink doesn't yet support.) The file is 620 MB, and pretty much the only practical thing to do with it is burn it to a CDR or CDRW disk (using a CD-burner drive). You can do that on any operating system; for tips on doing it on Linux, see http://www.linuxdoc.org/HOWTO/CD-Writing-HOWTO.html . Be aware that, if you upgrade a slink (or "slink-and-a-half") system to potato, you may encounter occasional problems inherent in the Debian development process. (In other words, before you complain, realise that they called it "unstable" for a reason.) To date, the problems have been small and resolved in a day or two. Many of us find these risks worthwhile to have access to the lastest software. Your call. DEBIAN 2.2 "POTATO" ------------------- Until I properly update this "tips" file for 2.2 Potato, here's some update information I e-mailed to a friend in Ireland. I had just burned and sent him a set of the three official Debian 2.2 CD-ROM images, and wanted to help him with his next steps: 1. Read the installation manual: http://www.debian.org/releases/stable/i386/install 2. Read the release note: http://www.debian.org/releases/2.2/i386/release-notes/ 3. If your machine boots from CD-ROM, do so with disk 1. This is the "non-US" variant of disk 1, which differs from the "regular" one only by inclusion of strong crypto. If not, you'll have to write out rescue + root + drivers1 + drivers2 + drivers3 floppies. Pay close attention to the floppy-writing screens and listen for writing of bad sectors. Floppy quality these days really sucks, and is probably the biggest cause of Debian installation failure. Via either path, you'll enter the debootstrap installer routine, which guides you through the rest of the first-half of installation, including shelling out to cfdisk for partitioning, and calls the lilo map installer to write boot files. You reboot at the end (having now completed installation of the "Debian base" set), and go into a one-time shell where you set root password, create a regular user account, decide whether to enable shadowed passwords and remove PCMCIA support. Then, you're put into tasksel, a utility for specifying large-granularity groupings of packages to be installed. If you run tasksel and do not select any tasks, you get packages of priority "standard" and higher. If for some reason you want an absolutely bare-bones Debian system (essential packages only), then break out of the installer completely rather than using tasksel. You are strongly advised to pick one of those "tasks" (aka "profiles"), rather than defaulting to fine-granularity package selection in the next routine, the infamous "dselect" program. Specifically, it's generally wise to pick a minimal configuration. A typical mistake of those coming from Red Hat (et al.) is to attempt to specify the kitchen sink. Wrong. Bad. Debian does better if you start with a minimal configuration and build up as needed. Trust me on this one. Even if you've picked a profile, you'll be run through the "dselect" program as the penultimate step of installation. If you've selected a profile, make a point of _not_ doing step #2, "Select", on the dselect program's main menu (because you've already designated a package set to be installed). 0. [A]ccess Choose the access method to use. 1. [U]pdate Update list of available packages, if possible. 2 [S]elect Request which packages you want on your system. 3. [I]nstall Install and upgrade wanted packages. 4. [C]onfig Configure any packages that are unconfigured. 5. [R]emove Remove unwanted software. 6. [Q]uit Quit dselect. You'll be told how to proceed, but in essence dselect will take the list of packages to be installed (however it arose) and, transparently to the user, invoke the dpkg command-line tool to actually install them. Then, it will (again, transparently to the user) invoke "dpkg --configure -a" to put you through the configuration questions for all packages that need such. This is one of numerous reasons to _not_ do an initial kitchen-sink installation: dpkg has no logging of screen output, and the output of dpkg's "configure" mode includes some important facts that you do _not_ want to scroll off the screen before you can note and digest them. Post-installation, you'll have the opportunity to start the "script" utility immediately prior to any major package installations, so as to capture screen output. You're advised to do so. After package installation and configuration is complete, dselect will terminate and log you out. You're now at the login prompt of a fully built (but not updated) Debian 2.2 system. Before I advise you about how to update the system, a few words about Debian's modular architecture for packages: "dpkg" always handles the low-level local mechanics of installing, removing, and configuring packages. It alone touches the package database files (which are ASCII) in /var/lib/dpkg. It knows nothing inherently about how and where to acquire .deb files from, and gets fed pathspecs by the user or by other utilities that call it. "dselect" is one of several package-acquisition and dependency-checking programs that call dpkg for actual installation. A few people like it, and a lot more loathe it. It, too, is modular, in the sense that it can invoke external utilities as "methods" for acquiring and dependency-checking packages before passing their names to dpkg. Among the possible "methods" are the utilities apt-get and apt-cdrom, to be discussed next. "apt" (Advanced Package Tool) is supposed to eventually supplant dselect entirely. It will be a replacement. comprehensive, full-screen package-handling utility. Unfortunately, it's still alphaware and entirely too scary, so nobody uses it. Fortunately, _its_ command-line "method" utilities, apt-get and apt-cdrom, _are_ finished, and are so incredibly good that hardly anyone cares that the front-end isn't finished. (I suspect that's the problem "apt" is moving so slowly.) "apt-get" is a tool for acquiring and managing packages from a variety of local _or_ remote "sources" (this term being defined below) of various types. Like dselect, it invokes dpkg for actual installation. When you tell it to query a remote (or local) package-archive for what packages and versions it has available, it caches that information in two places: /var/state/apt/lists/*Packages and /var/lib/dpkg/available . The former files are one file per package source, sorted alphabetically, and the latter are merged into a single file. One of the really cool things about apt-get is that it resolves dependencies automatically -- and will offer to retrieve packages you did _not_ specify, if they're required by the ones you did. That is why one of the more bearable ways of using dselect is by specifying apt-get as its "method". "apt-cdrom" is a special ability to deal intelligently with removable media. When it creates available-package indexes for such media, it also catalogues them by CD-ROM disk ID in a /var/state/apt/cdroms.list file. It likewise tracks them via custom package-source specifiers in /etc/apt/sources.list (discussed below). The command "apt-cdrom add" will scan a CD-ROM disk for package-listings and create matching indexes or it (which apt-get then knows about). You should do exactly that for each of your three Debian CDs. apt-get alone would not suffice for this task, because it thinks all package listings retrieved from the same URI are the same source (i.e., it has no ability to deal with removable media). There is also (very recently) "apt-zip" for Iomega ZIP cartridges. There have been several candidate substitutes for the unfinished "apt" front-end, such as gnome-apt, Corel and Storm Technologies's proprietary front-ends, console-apt, and aptitude (ncurses-based). None have really caught on, and most are defunct, but some may be worth trying. (I've already mentioned tasksel, which picks meta-packages dubbed "tasks" or "profiles". At exit, tasksel invokes apt-get, which invokes dpkg.) to review, the package-handling architecture goes like this: gnome-apt --------- aptitude | Package selection Corel Update | Storm Package Manager or dselect* | console-apt ------- | | | calls v apt-get Dependency-resolution, | package-retrieval | | calls v dpkg Package installation & removal, configuration *dselect _can_ use apt-get as a "method" as indicated here, but by default does not, bypassing that layer and calling dpkg directly. (Alternatively, skip the first category, package selection, and just use apt-get et al. directly from the command line. Many of us do this by preference.) apt-get (apt-cdrom, apt-zip)'s behaviour is controlled by the obscure apt.conf file that nobody bothers to configure, but more importantly by /etc/apt/sources.list, which is where it's told where packages are available from. Here's the rather messy one from linuxmafia.com: # Use for a local mirror - remove the ftp1 http lines for the bits # your mirror contains. # deb file:/your/mirror/here/debian stable main contrib non-free # See sources.list(5) for more information, especial # Remember that you can only use http, ftp or file URIs deb http://security.debian.org/ stable/updates main contrib non-free # ## ...which is equivalent to: # #deb http://security.debian.org/dists/stable/updates/contrib/binary-i386/ ./ #deb http://security.debian.org/dists/stable/updates/main/binary-i386/ ./ #deb http://security.debian.org/dists/stable/updates/non-free/binary-i386/ ./ # What I used before potato went "stable" and I switched to my local mirror: #deb http://http.us.debian.org/debian frozen main contrib non-free # deb file:///usr/local/ftp/debian stable main contrib non-free deb http://non-us.debian.org/debian-non-US stable non-US/main non-US/contrib non-US/non-free deb http://forcix.cx/ debian Notice the "file:" URI. I'm telling linuxmafia.com to use its own public ftp directories as a Debian package source -- which is possible in its case, because linuxmafia.com happens to be an unofficial full Debian mirror site. Here's a sources.list file that will work well for you. (ftp.esat.net is in Ireland, and I found it from the mirror-site list at http://www.debian.org. I've tested the following, to ensure that it's correct.) deb ftp://ftp.esat.net/mirrors/ftp.debian.org/debian stable main contrib non-free deb ftp://ftp.esat.net/pub/linux/debian-non-US stable non-US/main non-US/contrib non-US/non-free deb http://security.debian.org/ stable/updates main contrib non-free So, try commenting out any existing lines in your sources.list, add the above ones, save, and do the magic incantation to refresh the available-files lists: apt-get update That will refresh /var/state/apt/lists/*Packages and /var/lib/dpkg/available, with the current package-descriptions from all sources listed in sources.list. The syntax requirements for sources.list are a bit peculiar. The best write-up I've seen, so far, is at http://www.everything2.com/index.pl?node=sources.list Here's a possibly even better one: http://www.ibiblio.org/gferg/ldp/giles/repository/repository-2.html It's a good idea to run "apt-get update" before using apt-get or other package-retrieval tools. If you don't, you may get 404 errors, because you're trying to get things listed in the local package lists, but no longer extant at the remote sources (usually because there's a later version there, instead). The following incantation updates all your installed packages to current available versions. You should run it on your machine, _especially_ because of that third "source" I gave you, which is the early-availability security-updates source in the USA: apt-get -u dist-upgrade You can use the form "apt-get install [packagename1] [packagename2" to install the cited packages plus everything required to meet their dependencies. E.g., here's what I get on linuxmafia.com (a server with no X packages whatsoever), when I tell apt-get that I want to install the gnome-games package: uncle-enzo:/etc/apt# apt-get install gnome-games Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: esound esound-common gdk-imlib1 gnome-bin gnome-card-games gnome-core gnome-games-locale gnome-gataxx gnome-glines gnome-gnibbles gnome-gnobots2 gnome-gnometris gnome-gnomine gnome-gnotravex gnome-gtali gnome-gturing gnome-iagno gnome-libs-data gnome-mahjongg gnome-same-gnome gnome-stones gnome-xbill imlib-base libart2 libaudiofile0 libesd0 libgnome32 libgnomesupport0 libgnomeui32 libgnorba27 libgnorbagtk0 libgtk1.2 libguile6 liborbit0 libtiff3g libungif3g The following NEW packages will be installed: esound esound-common gdk-imlib1 gnome-bin gnome-card-games gnome-core gnome-games gnome-games-locale gnome-gataxx gnome-glines gnome-gnibbles gnome-gnobots2 gnome-gnometris gnome-gnomine gnome-gnotravex gnome-gtali gnome-gturing gnome-iagno gnome-libs-data gnome-mahjongg gnome-same-gnome gnome-stones gnome-xbill imlib-base libart2 libaudiofile0 libesd0 libgnome32 libgnomesupport0 libgnomeui32 libgnorba27 libgnorbagtk0 libgtk1.2 libguile6 liborbit0 libtiff3g libungif3g 0 packages upgraded, 37 newly installed, 0 to remove and 0 not upgraded. Need to get 0B/7634kB of archives. After unpacking 15.6MB will be used. Do you want to continue? [Y/n] n Abort. uncle-enzo:/etc/apt# apt-get is _almost_ but not quite good enough to figure out that I need all of X, too. The point I'm trying to drive towards is that you can take a _very_ minimal Debian system, and build it up to a full-featured but compact system using no more than about a dozen or so "apt-get install" commands. The above explanations are a partial updating of my modestly famous "Debian Tips" document, at http://linuxmafia.com/debian/tips . I still recommend you read the latter carefully, but bear in mind that it was current as of Debian 2.1 "slink", and badly needs updating. [e-mail ends] The apt-spy and netselect-apt utilities will both find the fastest Debian mirror (package-source) and then constructing /etc/apt/sources.list entries to match, but apt-spy uses the better algorithm of the two. (netselect-apt measures only latency, not throughput.) Standard, manual method of picking a Debian mirror: apt-setup utility. potato/2.2 unofficial installation-floppy images with ReiserFS support (John H. Robinson, IV): http://chao.ucsd.edu/debian/boot-floppies/ Jules Bean's FAQ about the "testing" branch, including heuristics for package acceptance: http://linuxmafia.com/debian/testingfaq.html A good example /etc/apt/sources.list file for those running the "testing" branch is as follows: deb http://security.debian.org testing/updates main contrib non-free deb http://http.us.debian.org/debian/ testing main non-free contrib deb http://non-us.debian.org/debian-non-US testing/non-US main contrib non-free The second and third are standard entries using the main Debian mirrors. You may have faster mirrors locally: Use "netselect" to find the fastest one. The first line gives early access to security-update packages from the Debian Security Team -- generally a very good idea. There's a drawback: Unlike in the "testing" branch proper, the security archive sometimes releases one package needing a security update without simultaneously updating a package that depends on it. E.g., the security collection will update Mozilla to a version that breaks Galeon (which will thus be removed) or vice-versa. If this happens, you can inevitably find the needed new version for the removed package in ftp://ftp.debian.org/debian/pool/ , retrieve it, and install it manually ("dpkg -i foo", where package foo's new version hasn't yet cleared from unstable into testing). Mozilla/Galeon is the only problem case I've seen, but there may be others. Debian Quick Reference (about 50 pp.) -- excellent general introduction: http://qref.sourceforge.net/quick/ Main Debian FAQ is here: http://www.debian.org/doc/FAQ/ Upgrading from Corel Linux OS to Debian: The discontinued, Debian 2.1/Slink-based Corel Linux OS (CLOS) distribution included some carelessly incompatible Qt-based packages, including but not limited to their variant form of KDE 1.1. CLOS can be upgraded to current Debian via apt-get, but only after removing the Corel-written packages. # dpkg -l | grep corel Using the package names thus listed, as the root user, remove them using apt-get: # apt-get remove pkg1 pkg2... Edit /etc/apt/sources.list to comment out (using "#") the Corel package sources, and add standard Debian sources, such as (using the "stable" development branch): deb http://security.debian.org stable/updates main contrib non-free deb http://http.us.debian.org/debian/ stable main non-free contrib deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free Get lists of available packages: # apt-get update Upgrade crucial packages first: # apt-get install perl libc6 dpkg apt apt-utils debconf Now, upgrade the rest of the system: # apt-get dist-upgrade I would also recommend, for all but the most mission-critical server-role machines, going further and upgrading from Debian-stable to Debian-testing: Re-edit the sources.list lines to substitute "testing" for "stable" on all three lines. Then, repeat all the steps listed following those lines, to upgrade from stable to testing. When done with the upgrades, you can install genuine, current KDE packages by either installing the big "kde" metapackage: # apt-get install kde ...or installing individual KDE packages the same way, by name. MIXING DEBIAN RELEASES ---------------------- Customising /etc/apt/preferences can let you (among other things) specify which packages are to be drawn from a specify development branch using the new (2002-04) concept of "pinning" packages, e.g. getting the "unstable" branch's version of Mozilla when you're otherwise on the "testing" branch. See "man 5 apt_preferences". If you have a recent version of apt, and you put the following lines into /etc/apt/preferences, it will get unstable packages when there is no testing version. --- begin cut here --- Package: * Pin: release a=unstable Pin-Priority: 50 --- end cut here --- You'll need a line in /etc/apt/sources.list for "unstable", of course: deb http://http.us.debian.org/debian unstable main contrib non-free Pinning the priority of unstable to 50 makes it so that these packages are never automatically selected for upgrade. However, when you do specify packages from that source, dependencies are handled correctly. Robert McQueen comments: Along with the more powerful (and complicated) release-pinning method featured in a previous release of DWN, apt in woody and sid also supports a simpler method of achieving the same thing, with the poorly documented "APT::Default-Release" configuration option. To do this, add a line such as: APT::Default-Release "testing"; to /etc/apt/apt.conf, and add both testing and unstable lines to /etc/apt/sources.list. Then when you upgrade, dist-upgrade, or install, apt will only consider packages from testing by default. If you then use a command like: apt-get install /unstable it will install the package version found in unstable, as well as any libraries and other dependencies from unstable that are required to install it. Jens Hoffrichter adds: This can be done even more comfortably by using apt-get's -t switch, which will even satisfy dependencies to unstable, which using packagename/unstable does not do. The correct (and frequently used by myself ;)) ) syntax would be: apt-get -t unstable install Alternatively, an explicit version can be located and installed using "=" syntax: apt-get install sox=12.17.4-4 Tutorial about "pinning": http://jaqque.sbih.org/kplug/apt-pinning.html Christoph Martin adds: apt-show-versions is a script which eases maintenance of mixed stable/testing or testing/unstable systems. While beeing able to update the packages from your *main* distribution with apt-get upgrade it is quite difficult to do the same for the *not-main* packages. While you can use the pinning feature of apt if these are only a few it is quite annoying to put all the package names in apt/preferences which should be pinned. Like in one of my installation where I have 247 packages from stable and 229 from testing. Try apt-show-versions | fgrep /testing | wc to see how many packages you have from testing or apt-show-versions -u to see a list of packages which are upgradeable either to stable or testing or unstable or apt-get install `apt-show-versions -u -b | fgrep unstable` to upgrade all unstable packages to their newest versions. Especially on systems that have packages from multiple development branches, the apt-show-versions tool may be useful: It shows which versions of a package are available from each known package source, and optionally which versions are installed. Peter Jay Salzman points out an elegant way to determine when a package on one's system was last upgraded: Every package upgrade needs to update the changelog file. simply look at the modification date for /usr/share/doc//changelog.Debian.gz. Note that although Debian's apt-get mechanism makes it easy and reliable to upgrade to a later branch (stable to testing, testing to unstable, slink to woody, woody to sarge), downgrading can also be done with some greater degree of difficulty, as described here: http://www.debianplanet.org/node.php?id=880 RECOVERING FROM LOST FILESYSTEMS: --------------------------------- 1. I lost /var ! Because any installed Debian package must create a subdirectory under /usr/share/doc, this suggests a handy way to accurately rebuild the /var/lib/dpkg/status installed-packages database. Note that this method re-fetches and reinstalls all packages: I know of no way to avoid that drawback: #!/bin/sh # Recovering a Debian system without any backup of /var/lib/dpkg. # ref: http://www.linuxworld.com/2003/0113.petreley.html # ---------------------------------------------------------------------- # (C) 2003, Karsten M. Self kmself@ix.netcom.com # (C) 2003, Osamu Aoki osamu@debian.org (fixup) # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 # USA # ---------------------------------------------------------------------- # Changes: # # KMself: Sun Dec 7 15:40:44 PST 2003 # Removed bashisms (again). # Added /var//cache/apt/archives/partial # ---------------------------------------------------------------------- export PATH=/usr/sbin:/usr/bin:/sbin:/bin # Let's be verbose.... set -v # Test existence of any subdirs in /var. If they exist, exit, otherwise # risk destroying an active system. If they don't exist, the remainder # of this script is safe. function create_new_dir () { if [ ! -f $1 && ! -d $1 ] then mkdir $1 else echo "$1 exists, aborting" 1>&2 exit 1 fi } for d in \ /var/log /var/cache/debconf \ /var/cache/apt/archives \ /var/cache/apt/archives/partial \ /var/lib/dpkg/info \ /var/lib/dpkg/parts \ /var/lib/dpkg/alternatives \ /var/lib/dpkg/methods \ /var/lib/dpkg/updates do create_new_dir $d done # Create a rudimentary status file cat <<-EOF > /var/lib/dpkg/status Package: libc6 Status: install ok installed Version: 2.3.1-9 EOF # Update package cache apt-get update apt-get dist-upgrade # Register as installed crucial packages. dpkg --clear-avail apt-get update apt-get dist-upgrade cd /var/cache/apt/archives dpkg -i libncurses* dpkg -i perl-base* dpkg -i libstdc++* dpkg -i dselect* dpkg -i dpkg* # Reinstall libc to register it. apt-get install --reinstall libc6 # Reinstall base packages. apt-get dist-upgrade # Generate list of installed packages to re-register previously # installed packages as installed, using /usr/share/doc as a fallback # package registry. ref: dpkg -l $( ls /usr/share/doc | grep -v [A-Z] ) # >/dev/null ls /usr/share/doc | grep -v [A-Z] | grep -v '^texmf$' | grep -v '^debian$' | awk '{print $1 " install"}' | dpkg --set-selections # Re-register everything. apt-get dist-upgrade # At this point, you should be (mostly) cooking on gas. # EOF 2. I lost /usr ! While likewise painful, this situation is easier to cure: Working from maintenance boot media or single-user mode, make a safety copy of /var/lib/dpkg/status and other crucial files/trees (e.g., /etc), then leverage the existence of an accurate /var/lib/dpkg/status database to generate a one-per-line list of packages to install, parse those lines to isolate just the package names, and then feed those names to "apt-get --reinstall install": COLUMNS=300 dpkg -l | awk '/^i/ {print $2}' | xargs apt-get --reinstall install The "COLUMNS=300" environment-modification is to compensate for long package names, and accomodates names up to 70 characters. E.g., if you ever just want a list of installed packages without truncation, do: COLUMNS=150 dpkg -l 'kernel-*' | awk '$1 ~ /ii/ { print $0 }' WOODY/3.0 INSTALLATION OPTIONS: ------------------------------- Current woody/3.0 floppy-images for i386 using 2.4 kernel (includes ext3): http://ftp.us.debian.org/debian/dists/woody/main/disks-i386/current/images-1.44/bf2.4/ woody/3.0 unofficial "netinst" images (about 30 MB): http://people.debian.org/~ieure/netinst/ netinst includes an "alternate boot image" named bf2.4 to use a 2.4 kernel (and ext3 support), but your motherboard must support the El Torito "Alternate Boot Image" spec for this to work. If the netinst CD boots directly to the syslinux screen, without showing a menu of boot-image choices, then your motherboard lacks this support. The woody/3.0 netinst ISO images provide installation kernels, drivers, partitioning utilities, and the debootstrap program, which must be able to retrieve the Debian Base and subsequent packages from the network. woody/3.0 unofficial full CD images o i386 (8 discs): http://www.debian.org/CD/http-ftp/#testing (list of mirror sites) ftp://ftp.fsn.hu/pub/CDROM-Images/debian-unofficial/woody/ o other architectures (7 discs): http://cdimage-unofficial.debian.net/ (information pages) woody/3.0 unofficial rescue & installation CD i386 images with 2.4.17 kernel and ReiserFS (Timo Benk): http://rescuecd.sourceforge.net/ Experimental Debian-Installer images for unstable branch, i386 and PowerPC: http://ftp.egr.msu.edu/debian/dists/unstable/main/ woody/3.0 install floppy images with 2.4.x kernels, and support for XFS and ReiserFS filesystems, software RAID, and LVM (Ionut Georgescu): http://www.physik.tu-cottbus.de/~george/ woody/3.0 install floppy and netinst-CD images with 2.4.x kernels and support for XFS and JFS filesystems (Angelo Ovidi): http://xfdeb.sourceforge.net/ woody/3.0 install floppy images with 2.4.x kernels and support for XFS filesystems, software RAID, and LVM (Eduard Bloch): http://people.debian.org/~blade/XFS-Install/ (After installing onto XFS, you may be best advised to replace your XFS driver and support code from CVS checkout, according to this article: http://www-106.ibm.com/developerworks/linux/library/l-fs10.html) Utilities to manage IBM's JFS filesystem are available in woody/3.0 or sid/unstable, as package "jfsutils". Documentation on JFS is available here: http://oss.software.ibm.com/jfs/ This technique that I used for migrating a system to XFS before there were such things as XFS-supporting Debian installation floppies could be used as a general guide with any target filesystem type, in a pinch: http://linuxmafia.com/~rick/linux-info/xfs-conversion Progeny Graphical Installer can be used to do graphical (X11) or console installs of woody/3.0 (on i386 and ia64) : http://hackers.progeny.com/pgi/ Woody/3.0 i386 installation ISO based on PGI is here: http://archive.progeny.com/progeny/pgi/ To clarify, PGI can be used, among other things, to construct installable woody/3.0 CD images whose installer program is PGI. Progeny 1.0 itself used PGI, and is a perfectly fine way to install Debian woody/3.0 for i386: ftp://ftp.progeny.com/progeny/debian/iso/Progeny1.0/ (But don't forget to re-point /etc/apt/sources.list at Debian proper, since the Progeny Debian-variant distribution is dormant.) Installing Debian from within a chroot jail on an already-running Linux system: http://kmself.home.netcom.com/Linux/FAQs/DebianChrootInstall.html Notes on Debian installation for PPC: http://fungus.ucdavis.edu/~dylan/ FAI (Fully Automated Install) is a tool for stamping out Debian machines, e.g., for a cluster: http://www.informatik.uni-koeln.de/fai/ The Autoinstall tool creates floppy images that can install Debian systems without any user interaction: http://packages.debian.org/unstable/admin/autoinstall-i386.html The first time you install a 2.4.x kernel on a Debian system that has never had one before, you'll see the following sort of caution: You are attempting to install an initrd kernel image (version 2.4.19-686) This will not work unless you have configured your boot loader to use initrd. (An initrd image is a kernel image that expects to use an INITial Ram Disk to mount a minimal root file system into RAM and use that for booting). As a reminder, in order to configure lilo, you need to add an 'initrd=/initrd.img' to the image=/vmlinuz stanza of your /etc/lilo.conf I repeat, You need to configure your boot loader. If you have already done so, and you wish to get rid of this message, please put `do_initrd = Yes' in /etc/kernel-img.conf. Note that this is optional, but if you do not, you'll continue to see this message whenever you install a kernel image using initrd. Do you want to stop now? [Y/n] What this means is that key hardware drivers are in an initial RAMdisk that lilo must be made aware that it must provide to the booting kernel, otherwise booting will not succeed. You can do this _before_ installing such a kernel, if you like. E.g., modify the "vmlinuz" stanza near the bottom of /etc/lilo.conf from: image=/boot/vmlinuz label=linux read-only to image=/boot/vmlinuz label=linux initrd=/initrd.img read-only After installing the kernel, if you want to ensure that everything is OK, then do "/sbin/lilo -v" as the root user, before rebooting. If there are no complaints about inability to find files referenced in lilo.conf, you should be safe to reboot. # apt-cache search lists you all available packages that fit somehow the search term (search term can be the program name, parts of that name, a description ...) If you want more info on a package: # apt-cache show (auto-apt and apt-file are also useful for finding what package provides a given file.) after that, you only need to install the usual way: # apt-get install dpkg-reconfigure packagename will re-do the package's configuration step. To put a package on hold (without having to use dselect): # echo "packagename hold" | dpkg --set-selections Want to try your hand at making .deb archives from plain source tarballs? Install the debhelper package. It has tools to guide you through the process. The deborphan utility returns a list of libs on your system that are no longer being used by any packages. The debfoster utility is a somewhat more systematic and comprehensive utility, that identifies and removes packages no longer needed. Need to reconfigure your system? Run "base-config". This re-runs the latter part of the installer program. CPAN access in Debian: Use the dh-make-perl utility: Go to CPAN and figure out what you want. Then, as root, do: # "dh-make-perl --cpan --build --install" Writing out your current installed packages: # dpkg --get-selections >selections.txt And get their current versions: # COLUMNS=150 dpkg -l > packages.txt To reconstruct the system, install the Debian Base System, then: # dpkg --set-selections Then I figured out the painless way to install debian: go through the > installation and install the bare minimum that you absolutely need (this > means no X!). Then once you've got that running, which is quick and > easy, use apt for everything else you use. This has the side benefit > that there's no wasted space on your drive. Yes! That is the way to do it. dselect is not required for anything. Bypass it (in favor of apt) and your life will be much easier. If you're a current Debian user, it's even better: just run "dpkg --get-selections | awk '{ print $1 }' >package.list" to save your current list of packages. Then on the new system, "apt-get install $(cat package.list)" to have [most] of your previous software installed automatically. (There will be some hangups. Use the "--no-act" option and edit your package list accordingly. This is no big deal.) Or just: dpkg -get-selections > file; then later dpkg --set-selections < file && apt-get dselect-upgrade If you're going to build software from source code, make sure you install the "build-essential" package. Then: # apt-get build-dep package ...will ensure that you've satisfied the package's build dependencies. # apt-get source package ...retrieve the package's source tree, and unpacks it into the current directory. cd into the tree, and make any desired source changes. The ./debian directory contains package metadata / build instructions. While in the source tree, executing # dpkg-buildpackage ...compiles the package, and places a .deb file in the parent directory, which you can then install with dkpg -i (using fake root or logged in as the root user). E.g., # dpkg-buildpackage -us -uc ("-us" means unsigned source. "-uc" means unsigned changes.) (Alternatively, cd into the source directory, and do "debian/rules binary" using fakeroot or logged in as the root user.) The apt-build utility can help this process: Description: Frontend to apt to build, optimize and install packages This is an apt-get front-end for compiling software optimized for your architecture by creating a local repository with built packages. It can manage system upgrade too. The pentium-builder package will let you set system-wide options so that all compiles from source will be optimised for your CPU architecture. (Despite the name, it can optimise for Athlon, etc.) The apt-src package is a much cleaner, newer, and more comprehensive alternative to dpkg-buildpackage, "for downloading, installing, upgrading, and tracking Debian source packages". The manpage gives some good examples of usage: To install the source to pine to /usr/src, build it, and install the resulting debs: apt-src install --location=/usr/src -i pine To track changes to said installed pine source package, and install debs whenever a new version comes out: apt-src install -i pine To install a local copy of package foo, which you are going to apply a local patch to: apt-src install foo cd foo-version patch <~/my-foo-patch apt-src build --installdebs foo To upgrade your local copy of foo, bringing your patch forward, and building and installing new debs: apt-src install -i foo To import the source tree in /usr/src/linux, which you unpacked from a ftp.kernel.org tarball (or from the kernel-source package) into apt-src, so it knows about it: apt-src import kernel --location=/usr/src/linux --version=2.4.18 [...] Quoting author Joey Hess: "'apt-src install' source gives you a source-version tree in the [current directory]. Modify to suit, and 'apt-src build' source. If a new version comes along, 'apt-src upgrade' source to upgrade the tree, patching your local changes forward. Pass in --installdebs to any of these commands to make it build and install a .deb." An example of building from source using OpenLDAP (using debuild instead of dpkg-buildpackage, and pointing out that you can make local changes to the Debianised source package immediately prior to building the binary package): # apt-get source slapd ... # cd openldap2-2.1.23 ...modify debian/rules, debian/changlog, source code... # debuild -uc -us -rfakeroot # dpkg --install ../slapd_2.1.23-blah.deb To compile kernels and auto-generate .deb packages, install and use the kernel-package package (which provides the make-kpkg utility). $ cd /directory/where/you/unpacked/a/kernel/tarball $ make config | make menuconfig | make xconfig | make oldconfig $ make-kpkg clean $ make-kpkg --initrd --revision=custom.1.0 kernel_image # (as root, or using fakeroot) dpkg -i ../kernel-image-X.XXX_1.0_.deb Kirk Strauser has a more-detailed explanation here: http://subwiki.honeypot.net/cgi-bin/view/Main/DebianKernelBuilding Details of how to keep /usr mounted read-only and still let apt work correctly without manual intervention: http://lists.debian.org/debian-devel/2001/debian-devel-200111/msg00212.html Debian-NetBSD is a port of the Debian architecture to the NetBSD kernel: http://www.debian.org/ports/netbsd/ http://debian-bsd.sourceforge.net/ Debian tools for OpenBSD: http://lists.debian.org/debian-devel/2002/debian-devel-200204/msg01114.html http://non-us.debian.org/~andreas/obsd/ Debian GNU/FreeBSD: http://lists.debian.org/debian-bsd/2002/debian-bsd-200204/msg00021.html # KDE v. 3.1 .deb packages for i386 will probably gradually appear in # official package maintainer's (Chris "calc" Cheney's) pre-release collection. deb http://people.debian.org/~ccheney/kde-3.1.1-1/ ./ "WhizNDR"(of the #debian-kde IRC channel on irc.openprojects.net) at Genius Systems offers what appears to be an almost complete (no KOffice) KDE3 set for i386 and PPC, here: http://kde3.geniussystems.net/ Instructions are here: http://calc.cx/kde.txt Lists of unofficial apt sources: http://mypage.bluewin.ch/kde3-debian/ http://www.doc.ic.ac.uk/~pc99/debian/kde3.html KOffice 3.x and a number of other KDE3 apps are available in unofficial packages (Ben Burton's) for i386 only, here: http://people.debian.org/~bab/kde3/ Daniel Stone will eventually offer his here: ftp://ftp.cs.umn.edu/pub/debian-misc/daniels/ KDE 3.1 packages from the KDE Project for i386 and PPC are here: deb http://download.us.kde.org/pub/kde/stable/latest/Debian/ stable main KDE 3.1 packages compiled with the old gcc 2.95 (the "Karolina" rendition), i386 deb http://wh9.tu-dresden.de/kde3/karolina ./ KDE 3.1 packages compiled with the old gcc 2.95 (the "Karolina" rendition), PPC deb http://bulmalug.net/~gallir/debian/kde31-powerpc/ ./ KDE 3.1 RC5 for i386: deb http://shakti.ath.cx/debian/kde3.1 ./ KDE 3.1 for i386, PPC: deb http://ktown.kde.org/~nolden/kde stable main XFree86 4.2.x preliminary .deb packages are available here (Branden Robinson and others): http://people.debian.org/~branden/ http://people.debian.org/~branden/sid/ http://people.brainfood.com/~doogie/x4.2/mirror deb http://people.debian.org/~blade/woody/i386/ ./ XFree 4.2 packages for PPC and i386 with DRI support: deb http://people.debian.org/~daenzer/dri-trunk/ ./ deb http://people.debian.org/~daenzer/dri-mach64/ ./ XFree86 4.2.1: deb http://people.fsn.hu/~pasztor/debian woody xfree deb http://people.debian.org/~frankie/debian woody/x421/ XFree86 4.2.99.3 packages for i386: deb http://people.debian.org/~acid unstable xfree86 XFree86 4.3 for i386, PPC: deb http://xf86-debs.mirror.positive-internet.com/current/sid/$(ARCH) ./ XFree86 4.3 for i386: deb http://people.debian.org/~mmagallo/packages/xfree86/i386/ ./ (Maintainer Daniel Stone pleads with people to not use these packages republished by Marcelo Magallon, and use the Experimental branch packages instead, if they need early access to 4.3.) XFree86 4.3.0-0pre1v4 ("experimental" branch) for all architectures: deb http://http.us.debian.org/debian/project/experimental main ...and this in /etc/apt/preferences: Package: * Pin: release a=experimental Priority: 1001 (Warning: This may pull in other packages from the "experimental" branch, which might have adverse consequences.) Sane, XSane scanner packages for i386 and hppa: deb http://people.debian.org/~aurel32/SANE stable main OpenOffice.org .deb packages (unofficial) are here: http://www.linux-debian.de/openoffice/ Use one of these /etc/apt/sources.list lines: deb ftp://ftp.vpn-junkies.de/openoffice unstable main contrib deb http://www.mx1.ru/~chris/openoffice unstable main contrib deb http://apt-proxy.sourceforge.net/openoffice unstable main contrib Matching source packages are here: deb-src ftp://ftp.vpn-junkies.de/openoffice unstable main contrib deb-src http://www.mx1.ru/~chris/openoffice unstable main contrib deb-src http://apt-proxy.sourceforge.net/openoffice unstable main contrib The package name is "openoffice.org", not "openoffice". Note also that the package maintainer reorganises the directory tree occasionally, and sometimes omits the Packages[.gz] file that makes a directory apt-gettable. (But you can still retrieve the directory's .deb files manually and "dpkg -i" install them.) You'll need an openoffice.org .deb file and a compatible libstlport4.5 .deb file. Mini-HOWTO is here: http://lists.debian.org/debian-openoffice/2001/debian-openoffice-200110/msg00014.html General instructions are here: http://www.linux-debian.de/openoffice/install_build_howto.html OpenOffice.org, WineX-light, WINE, fonts, Windows CODECs, Window Maker themes, Nvidia drivers/kernels, BitTorrent, ffmpeg, nuppel video tools, lmsensors, nvrec, xv, YEPP: deb http://www.esat.kuleuven.ac.be/~mleeman/debian unstable/ PureFTPd for i386: deb http://pureftpd.sourceforge.net/debian/woody/ ./ pine, pico, pilot, & pine-tech-notes for i386: deb http://src.braincells.com/debian sid/ pine, pico, pilot, & pine-tech-notes, flashplayer-mozilla, flashplugin-nonfree, openoffice.org for i386: deb http://kambing.vlsm.org/DLL/debian-local/dists/stable/lokal/binary-i386/ Opera Web browser: deb http://deb.opera.com/opera stable non-free deb http://deb.opera.com/opera testing non-free deb http://deb.opera.com/opera unstable non-free deb http://deb.opera.com/opera-beta stable non-free deb http://deb.opera.com/opera-beta testing non-free deb http://deb.opera.com/opera-beta unstable non-free pine, pico, pilot, & pine-tech-notes deb http://src.braincells.com/debian woody/ SpamAssassin for i386: deb http://people.debian.org/~duncf/debian/ unstable main Early-release Mozilla and Nautilus packages are sometimes offered by the package-maintainer ("Kitame") here: http://people.debian.org/~kitame/mozilla/ Mozilla 1.1 "Phoenix" lightweight browser unofficial packages are here: deb http://lesbos.esat.kuleuven.ac.be/~mleeman/debian unstable/ or deb http://people.debian.org/~otavio woody mozilla or deb http://people.debian.org/~eric/debian/i386 ./ Mozilla 1.1 and Galeon backport: deb http://people.fsn.hu/~pasztor/debian woody mozilla Mozilla 1.2.1 for i386: deb http://people.debian.org/~frankie/debian/woody/kalem/ ./ Mozilla 1.3 backport to woody deb http://debian.relativ.org/ ./ If you get "Dynamic MMap ran out of room", add this to /etc/apt/apt.conf: "APT::Cache-Limit 10000000;" Mplayer and libaviplay-codecs unofficial packages here: http://mplayer.nmeos.net/ http://www.mplayer.fr.st/ http://marillat.free.fr deb http://marillat.free.fr/ unstable main Xine and vlc-css unofficial packages for 3.0/woody i386 (and source) are here: http://www.samfundet.no/~tfheen/debian/dists/woody/css/ divx4linux, gpg-idea, lame, transcode, xv, win32-codecs, gpsdrive deb ftp://ftp.mowgli.ch/pub/debian sid unofficial deb ftp://ftp.mowgli.ch/pub/debian sarge unofficial Macromedia Flash Player 6 for x86 Linux (includes support for Flash-format Sorenson video): http://sluglug.ucsc.edu/macromedia/site_ucsc.html http://ruslug.rutgers.edu/macromedia/site_ru.html http://macromedia.mplug.org/site_uh.html flashplayer-mozilla, acroread-plugin, acroread, xmms plugins, avidemux, etc. for i386, sparc, hppa: deb http://jeroen.coekaerts.be/debian/ unstable main contrib non-free Filmgimp for i386: deb http://www.cse.unsw.edu.au/~alau/debian/ ./ Cinelarra (formerly broadcast2000) for i386, PPC: deb http://userpages.umbc.edu/~fu1/debian unstable main openh323 tools, Sylpheed-claws, ohphone, openmcu for i386: deb http://tranq.dorms.spbu.ru/debian-local ./ Jamie Strandboge's unofficial GNOME2.2 backport to i386 are here: deb http://ftp.acc.umu.se/mirror/mirrors.evilgeniuses.org.uk/debian/backports/woody/gnome2.2/ ./ deb http://mirror.raw.no/gnome2.2/ ./ Instructions for building GNOME 2.2 on Debian: http://www.linuxcompatible.org/story.php?id=17145 Gustavo Noronha Silva's unofficial GNOME2 packages for i386 are here: deb http://gluck.debian.org/~kov/debian woody gnome2 (Above is not apt-gettable for lack of a Packages[.gz] file, 2003-01-04.) deb http://people.debian.org/~kov/debian woody gnome2 Ross Burton's way of installing GNOME2: http://myweb.tiscali.co.uk/burtonini/computing/gnome2-build.html GNOME2 sylpheed, pan, gthumb, gftp package for i386: deb http://www.tu-harburg.de/~vkv/debian ./ WINE for i386: deb http://people.debian.org/~andreas/debian wine main # Blackdown Java J2r1.3 deb ftp://ftp.tux.org/pub/java/debian testing non-free deb ftp://ftp.tux.org/pub/java/debian unstable non-free # Blackdown Java j2re1.4, j2sdk1.4, j2re1.3, j2sdk1.3, jre1.1, jdk1.1. # Packaged for i386, PPC, and SPARC. deb ftp://metalab.unc.edu/pub/linux/devel/lang/java/blackdown.org/debian unstable main non-free # Blackdown Java j2r1.4.1 deb http://jopa.studentenweb.org/debian ./ Debian Java FAQ: http://www.au.debian.org/doc/manuals/debian-java-faq/ To find all packages that depend on a given package: Read the "Reverse Depends" output from "apt-cache showpkg ". APT-GET TROUBLESHOOTING ----------------------- # apt-get upgrade -f # continue upgrade even after error or # apt-get dist-upgrade -f # continue dist-upgrade even after error ...will fix many problems by running apt-get in "fix" mode. To configure all not-yet-configured packages: # dpkg --configure -a To RE-configure all installed packages # dpkg-reconfigure --all # reconfigure all packages To RE-configure specific installed packages: # dpkg-reconfigure --priority=medium package [...] This will often fix a problematic dependency: # apt-get install -f package # override broken dependencies If apt-get or dpkg is choking on something concerning an already installed package (e.g., the new package you want to install would replace a file the existing package has already provided), sometimes the easiest fix is to edit the installed-packages database, /var/lib/dpkg/status , directly. (It's an ASCII file.) Make a safety copy of the file, then open /var/lib/dpkg/status in a text editor. Search forward to find the paragraph concerning the package, which will begine with the line "Package: packagename". Delete all lines of the section concerning that specific package, and save. Now, resume package operations. This is an example of an apt-get error caused by a file conflict, and how to resolve it: Unpacking replacement kdebase-libs ... dpkg: error processing /var/cache/apt/archives/kdebase-libs_4%3a2.2.2-14_i386.deb (--unpack): trying to overwrite `/usr/share/applnk/Settings/Sound/arts.desktop', which is also in package kdebase dpkg-deb: subprocess paste killed by signal (Broken pipe) Errors were encountered while processing: /var/cache/apt/archives/kdebase-libs_4%3a2.2.2-14_i386.deb E: Sub-process /usr/bin/dpkg returned an error code (1) This happens because somebody made a bonehead packaging error, or a graceless transition of including a file in one package rather than the other. The fix is as follows: (1) Note down the names of the two packages that are both trying to claim ownership of the same file. In this case, package kdebase-libs is trying to update a file previously installed by package kdebase. (2) Stop and think for a moment about what's probably happening: A reasonable guess is that "arts.desktop" has simply been moved to kdebase-libs, and your package database is being mulish because it doesn't know this is OK. (3) Do a "--force-overwrite" install of the new package, thus: # dpkg -i --force-overwrite kdebase-libs_4%3a2.2.2-14_i386.deb (4) Recall and resubmit your apt-get command that choked, now that there's no remaining conflict. On very rare occasions, apt-get might refuse to do anything because some particular named package is in some broken state it can't deal with. [Need an example error message, but don't have one yet.] In such cases, you can make good use of the fact that Debian uses a plain ASCII file (/var/lib/dpkg/status) for its package database, to excise the problem directly: Make a backup copy of /var/lib/dpkg/status, first. (I've never needed this, but it seems such an easy precaution, why not?) Now, open /var/lib/dpkg/status in your favourite text editor. Search for "Package: ", which will bring up a series of non-blank lines comprising the package's status entry. Remove everything up to the first blank line. Save. Now, the package's files, themselves, are still installed, but the Debian package records have selective amnesia: The system believes that package to be not installed. Therefore, apt-get will cease stumbling on the defective package entry: You can now do other apt-get operations, and reinstall the problem package (overwriting its installed files) at any future occasion, at your leisure. If you wish to fix errors in a package's installation scripts, they're in /var/lib/dpkg/info as packagename.postinst, packagename.preinst, packagename.prerm, and/or packagename.postrm. Debug the error, edit the script, and then re-run dpkg -i packagename. (This approach is greatly to be preferred over using --force-something options or editing the package database directly.) Package Signing: In woody/3.0 or later, install debsig-verify, debsigs, and debian-keyring. Thereafter, dpkg (1.9.21 or later) checks if debsig-verify is installed and if so checks the signatures of packages you want to install. If a package's signature is invalid, the package won't get installed. See this thread: http://lists.debian.org/debian-security/2002/debian-security-200207/msg00130.html Optionally, one can use Fruhwirth Clemens's secpack to auto-apply security updates: http://therapy.endorphin.org/secpack/ The issue of _meaningful_ package signing is complex, and I've attempted to detail it here: http://linuxmafia.com/~rick/linux-info/debian-package-signing Hardware-recognition (and related) packages: discover Hardware identification system (thank you, Progeny Systems, Inc.), for various PCI, PCMCIA, and USB devices. kudzu, kudzu-vesa Hardware-probing tool (thank you, Red Hat Software, Inc.) intended to be run at boot time. Requires hwdata package. kudzu-vesa is the VBE/DDC stuff for autodetecting monitor characteristics. mdetect Mouse device autodetection tool. If present, it will be used to aid XFree86 configuration tools. read-edid Hardware information-gathering tool for VESA PnP monitors. If present, it will be used to aid XFree86 configuration tools. sndconfig Sound configuration (thank you, Red Hat Software, Inc.), using isapnp detection. Requires kernel with OSS sound modules. Uses kudzu, aumix, and sox. hotplug USB/PCI device hotplugging support, and network autoconfig. nictools-nopci Diagnostic and setup tools for many non-PCI ethernet cards nictools-pci Diagnostic and setup tools for many PCI ethernet cards. mii-diag "A little tool to manipulate network cards" (examines and sets the MII registers of network cards). printtool Autodetection of printers and PPD support, via an enhanced version of Red Hat Software's Tk-based printtool. Requires the pconf-detect command-line utility for detecting parallel-port, USB, and network-connected printers (which can be installed separately as package pconf-detect). Don't forget that lspci and pnpdump will list installed PCI and ISApnp devices, respectively. Excellent article on ALSA sound setup in Debian: http://www.linuxorbit.com/modules.php?op=modload&name=Sections&file=index&req=viewarticle&artid=541 Having problems getting your USB mouse working on Debian? See Ramesh Panuganty's Debian tips: http://panuganty.tripod.com/debiantips/ , and select "mouse" in upper-right selection menu. Localisation: System-wide, do: # dpkg-reconfigure locales You'll be asked (1) which locales (country/language combinations) to generate, and (2) which of those to set as default. If you use mutt as your MUA, you can put lines like this in ~/.muttrc : set charset = "iso-8859-15" set send_charset = "us-ascii:iso-8859-1:iso-8859-15:utf-8" Other things needed: - Packages in incoming - proposed-updates - early access to security updates - coherent explanation of /etc/apt/sources.list - recovery from apt-get/dpkg problems - diversions - update-alternatives - auto-apt - apt-proxy and apt-cacher - equivs - apt-src