Language Selection

English French German Italian Portuguese Spanish

Slackware 12: The anti-'buntu

Filed under
Reviews

It's probably safe to say that today's desktop Linux users have come to expect a certain out-of-the-box experience ("OOBE"). This usually includes the following features:

  • An easy-to-use, graphical installer &em; either run from the context of a live CD, like PCLinuxOS and Ubuntu; or something more traditional, like Fedora Core's Anaconda. It usually includes a graphical utility to help you partition your hard disk.
  • A good-looking desktop (usually KDE or GNOME), pre-configured to come up after booting into Linux.
  • Graphical configuration tools that help the user take care of common chores like setting up hardware, without having to resort to the command line.

(OOBE or not OOBE? That is the question.)

And then there's Slackware, which is more traditional. Slackware is the oldest surviving Linux distribution; its first version came out in 1993. Version 12 was recently released. As its Wikipedia entry notes, it's got a reputation for sacrificing ease-of-use (in terms of configuration and package management tools provided by the distribution) in favor of letting the end user configure the system and its software by herself.

The two main desktops that come with Slackware 12 are KDE v3.5.7 and XFCE v4.4.1. (Slackware doesn't include GNOME; there's a community-driven project named dropline GNOME which will, eventually, have an easy-to-install version for Slackware 12.) Software is very current, and includes X.org 7.2, kernel 2.6.21.5, gcc 4.1.2, and Firefox 2.0.0.4.

 

Installation

Slackware 12 was recently released, and while you can find ISO images of the four installation CDs on some mirrors, I opted to download the complete installation DVD via bittorrent. After booting from it, it asked me if I wanted to use a keyboard map other than English (the default); asked me if I wanted it to configure my network card; and then prompted me to run the "setup" script.

Before running setup, however, you will need to parition your hard disk, if you haven't already. (I personally prefer to create partitions prior to installing a distro, regardless, using the GParted live CD.) Instead of providing a graphical partitioning utility (like gparted), Slackware offers you fdisk (which is completely command-line-driven) and cfdisk.

The "setup" script is a simple menu-based utility. The SlackBook, a well-written reference manual and tutorial on how to install and use Slackware, has a good walk-thru of the process (including screenshots). It's quite simple and fast, if you take the setup utility's recommendation and install everything (which avoids the setup utility asking you which packages you want to install).

A few notes about the installation process:

  • You can specify mount points for all of your pre-existing partitions, including NTFS and FAT32 partitions, although configuring the system to let a regular user read (and, for FAT32, write) to them is left up to you.
  • You're given the option of making a bootable USB stick (although for some reason, mine didn't work in either of my two computers).
  • The installer lets you choose a custom console font, which is a neat addition.
  • LILO is Slackware's default boot manager. If you'd rather install GRUB than LILO, you can skip the LILO installation. Later, you can boot from the rescue CD (or DVD), specifying your root partition, then mount the installation CD, install the GRUB package from the /extra directory, and then run the "grubconfig" script. Grubconfig will walk you through the process of installing GRUB and creating its configuration file ("menu.lst"). (Since I already had another distribution's GRUB controlling the boot process on my computer, I chose not to install LILO, and simply added an entry for Slackware to my existing GRUB setup.)

When you're done with the installation process and reboot your computer, you end up at a bash prompt, and are left to log on as "root". So now what?

Now it's time to get busy adding a regular user account and configuring the X server. There are two utilities you can use to configure X, "xorgconfig" and "xorgsetup". The former will prompt you to provide quite a bit of detail about your hardware; the payoff is an "xorg.conf" that's extremely well-commented (i.e. the purpose of each section is explained). The latter will do the configuration automagically, but leaves the comments out.

If you're planning on installing the proprietary NVIDIA driver, this is a good time to do it. If you installed everything, you'll already have the needed kernel source. Using "xorgsetup" is the better than using "xorgconfig" if you're going to install the NVIDIA driver. I chose to let the NVIDIA installer write its own entries to "xorg.conf" after running "xorgconfig", and it made a huge mess of the comments.

After configuring X, you can log into whichever window manager you chose during setup. If you chose KDE, like I did, switching to runlevel 4 will bring up kdm, the KDE Display Manager, and from there, you can log in and configure KDE to your liking. (Note that Slackware's set up so that, by default, you can only switch to text console "tty6" if you want to go back to a text console in runlevel 4. This can cause some confusion. You can edit /etc/inittab to change this behavior.)

     

Make your desktop look the way you want it to

 

Software and Package Management

My guess (by looking at my package logs) is that the entire Slackware distro proper consists of somewhere around 800 packages, give or take. (Contrast this with Debian's pool of around roughly 18,000 packages.) Package management centers around three simple utilities: installpkg, removepkg, and upgradepkg, which do exactly what you'd expect. Dependency resolution is mostly left up to the user.

These utilities can be supplemented by a command-line utility named slapt-get, which emulates its Debian cousin. There's also a graphical interface to slapt-get named GSlapt (which is a separate download). These utilities make installing software from the Slackware repositories very easy.


GSlapt in action

To help you compile programs from source, there's a utility named checkinstall. After running the standard "./configure" and "make" commands in your source directory, you run "checkinstall" instead of "make install", and it will create a Slackware package for you (and also install it, if you choose). See checkinstall's README file for more information. (Although checkinstall was included in the "/extra" directory of the Slackware installation media until the very last minute, it was removed due to some sort of incompatibility. As of this writing, a new version hasn't been released yet.)

There are a couple of sites offering precompiled Slackware binaries: LinuxPackages, which hasn't caught up with Slackware 12 yet, and Slacky, an Italian site.

Finally, there's also an interesting project at SlackBuilds.org, which allows you to download the source code to a large number of programs, along with a wrapper script that compiles them into Slackware packages, which can then be installed using "installpkg". (See their HOWTO for more information.)

Compiling from source can sometimes be frustrating, but that's usually the fault of the software developer. For example, Slackware includes a nice bittorrent client named "bittornado" in its "/extra" repository, but doesn't include wxPython, which you need to install in order to run bittornado in GUI mode. While there are precompiled Slackware packages for wxPython available, thus far they're only for Slackware 11, which included Python 2.4, rather than Slackware 12, which includes Python 2.5. Long story short, there's lots of documentation available on how to install wxPython, and some of it hinted at the answer, but none of it addressed the problem of how to get the current version installed. In the end, I had to find the proper configuration file to edit, and figure out what line to change, in order to get wxPython properly installed in /usr/lib/python2.5/site-packages.

Eventually, a precompiled version (or a SlackBuild) of wxPython for Slackware 12 will come out, and that problem will go away.

 

In Conclusion...

If you want an easy-to-use Linux distribution that doesn't make you work too hard, Slackware might not be for you. On the other hand, if you want a distro that's quick to set up, and know how to configure it by hand (or aren't afraid of learning to), you might fall in love with Slackware. It's definitely an interesting way to learn how to use Linux. And it's definitely a way to get a stable server up and running in very little time.

 

More Slackware Resources

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

u don't need wxpython

I run slackware 12.0 updated from slackware 11.0 which was updated from slackware 10.2.
I downloaded the wxpython build script from www.slacky.eu and wxpython source code and compiled by myself.( Remember wxpython requires the libgnomeprint,libgnomeprintui,libgnomecups etc)

If u don't want to do it, u can use ktorrent an excellent torrent.
slackware is the best distribution of all. It does what u want to do.
Slackware users are the masters.
If u want a distro b/c it is fast,stable and simple then use slackware.

re: typing

What do you do with that vast amount of time you save by typing "u" instead of "you", and "b/c" instead of "because"?

Cure cancer, write a Broadway play, solve obscure math theorems, what?

wxPython

wxPython does not need libgnomeanything; I'm not sure where you got that information.

Thanks!

I've been meaning to post this earlier, but thanks for the references, eco2geek - we appreciate it Smile

--
http://slackware.com/~rworkman/
http://rlworkman.net/
http://slackbuilds.org/

More in Tux Machines

Programming: Python, LLVM and Erlang

  • Sending Emails in Python — Tutorial with Code Examples

    What do you need to send an email with Python? Some basic programming and web knowledge along with the elementary Python skills. I assume you’ve already had a web app built with this language and now you need to extend its functionality with notifications or other emails sending. [...] Sending multiple emails to different recipients and making them personal is the special thing about emails in Python. To add several more recipients, you can just type their addresses in separated by a comma, add Cc and Bcc. But if you work with a bulk email sending, Python will save you with loops. One of the options is to create a database in a CSV format (we assume it is saved to the same folder as your Python script). We often see our names in transactional or even promotional examples. Here is how we can make it with Python.

  • Binning Data with Pandas qcut and cut

    When dealing with continuous numeric data, it is often helpful to bin the data into multiple buckets for further analysis. There are several different terms for binning including bucketing, discrete binning, discretization or quantization. Pandas supports these approaches using the cut and qcut functions. This article will briefly describe why you may want to bin your data and how to use the pandas functions to convert continuous data to a set of discrete buckets. Like many pandas functions, cut and qcut may seem simple but there is a lot of capability packed into those functions. Even for more experience users, I think you will learn a couple of tricks that will be useful for your own analysis. [...] The concept of breaking continuous values into discrete bins is relatively straightforward to understand and is a useful concept in real world analysis. Fortunately, pandas provides the cut and qcut functions to make this as simple or complex as you need it to be. I hope this article proves useful in understanding these pandas functions. Please feel free to comment below if you have any questions.

  • Analysing music habits with Spotify API and Python

    I’m using Spotify since 2013 as the main source of music, and back at that time the app automatically created a playlist for songs that I liked from artists’ radios. By innertion I’m still using the playlist to save songs that I like. As the playlist became a bit big and a bit old (6 years, huh), I’ve decided to try to analyze it.

  • Python IDEs and Code Editors

    A code editor is a tool that is used to write and edit code. They are usually lightweight and can be great for learning. However, once your program gets larger, you need to test and debug your code, that's where IDEs come in. An IDE (Integrated Development Environment) understand your code much better than a text editor. It usually provides features such as build automation, code linting, testing and debugging. This can significantly speed up your work. The downside is that IDEs can be complicated to use.

  • Announcing Anaconda Distribution 2019.10

    As there were some significant changes in the previous Anaconda Distribution 2019.07 installers, this release focuses on polishing up rough edges in that release and bringing all the packages up to date with the latest available in repo.anaconda.com. This means many key packages are updated including Numpy, Scipy, Scikit-Learn, Matplotlib, Pandas, Jupyter Notebook, and many more. As many of the package updates have addressed Common Vulnerabilities and Exposures (CVEs), it is important to update to the latest. Another key change since the last release is that Apple released macOS version 10.15 – Catalina. Unfortunately, this was a breaking release for previous versions of Anaconda that used the pkg installer. The Anaconda Distribution 2019.10 installers address the issues and should install without trouble on macOS Catalina. If you would rather repair your current Anaconda installation, please check out this blog post for tips.

  • Apple's Numbers and the All-in-One CSV export

    The hierarchical form requires a number of generator functions for Sheet-from-CSV, Table-from-CSV, and Row-from-CSV. Each of these works with a single underlying iterator over the source file and a fairly complex hand-off of state. If we only use the sheet iterator, the tables and rows are skipped. If we use the table within a sheet, the first table name comes from the header that started a sheet; the table names come from distinct headers until the sheet name changes. The table-within-sheet iteration is very tricky. The first table is a simple yield of information gathered by the sheet iterator. Any subsequent tables, however, may be based one one of two conditions: either no rows have been consumed, in which case the table iterator consumes (and ignores) rows; or, all the rows of the table have been consumed and the current row is another "sheet: table" header.

  • Formatting NFL data for doing data science with Python

    No matter what medium of content you consume these days (podcasts, articles, tweets, etc.), you'll probably come across some reference to data. Whether it's to back up a talking point or put a meta-view on how data is everywhere, data and its analysis are in high demand. As a programmer, I've found data science to be more comparable to wizardry than an exact science. I've coveted the ability to get ahold of raw data and glean something useful and concrete from it. What a useful talent!

  • Sony Pushes More AMD Jaguar Optimizations To Upstream LLVM 10 Compiler

    Sony engineers working on the PlayStation compiler toolchain continue upstreaming various improvements to the LLVM source tree for helping the AMD APUs powering their latest game console. Several times now we've pointed out Sony engineers contributing AMD "btver2" improvements to upstream LLVM with the company using LLVM/Clang as their default code compiler and the PlayStation 4 relying on a Jaguar APU.

  • [llvm-dev] GitHub Migration Schedule and Plans
    Hi,
    
    We're less than 2 weeks away from the developer meeting, so I wanted to
    give an update on the GitHub migration and what's (hopefully) going to
    happen during the developer meeting.
    
    Everyone who has added their information to the github-usernames.txt
    file in SVN before today should have received an invite to become a collaborator
    on the llvm-project repository.  If you did not receive an invite and think
    you should have, please contact me off-list.  I will continue to monitor the
    file for new updates and periodically send out new batches of invites.
    
    There is still some ongoing work to get the buildbots ready and the mailing lists
    ready, but we are optimistic that the work will be done in time.
    
    The team at GitHub has finished implementing the "Require Linear History"
    branch protection that we requested.  The feature is in beta and currently
    enabled in the llvm-project repository.  This means that we will have the
    option to commit directly via git, in addition to using the git-llvm script.
    A patch that updates git-llvm to push to git instead of svn can be found here:
    https://reviews.llvm.org/D67772.  You should be able to test it out on your
    own fork of the llvm-project repository.
    
    The current plan is to begin the final migration steps on the evening (PDT)
    of October 21.  Here is what will happen:
    
    1. Make SVN read-only.
    2. Turn-off the SVN->git update process.
    3. Commit the new git-llvm script directly to github.
    4. Grant all contributors write access to the repository.
    5. Email lists announcing that the migration is complete.
    
    Once the migration is complete, if you run into any issues, please file
    a bug, and mark it as a blocker for the github metabug PR39393.
    
    If you have any questions or think I am missing something, please
    let me know.
    
    Thanks,
    Tom
    
    
  • LLVM Plans To Switch From Its SVN To Git Workflow Next Week

    On 21 October they plan to make LLVM's SVN repository read-only and finish their git-llvm script to bring all the changes into Git, and then allow developers to begin contributing to the LLVM GitHub project as the new official source repository.

  • Excellent Free Books to Learn Erlang

    Erlang is a general-purpose, concurrent, declarative, functional programming language and runtime environment developed by Ericsson, a Swedish multinational provider of communications technology and services. Erlang is dynamically typed and has a pattern matching syntax. The language solves difficult problems inherent in parallel, concurrent environments. It uses sets of parallel supervised processes, not a single sequential process as found in most programming languages. Erlang was created in 1986 at the Ellemtel Telecommunication Systems Laboratories for telecommunication systems. The objective was to build a simple and efficient programming language resilient large-scale concurrent industrial applications. Besides telecommunication systems and applications and other large industrial real-time systems, Erlang is particularly suitable for servers for internet applications, e-commerce, and networked database applications. The versatility of the language is, in part, due to its extensive collection of libraries.

today's howtos

Kubernetes at SUSE and Red Hat

  • Eirinix: Writing Extensions for Eirini

    At the recent Cloud Foundry Summit EU in the Netherlands, Vlad Iovanov and Ettore Di Giacinto of SUSE presented a talk about Eirini — a project that allows the deployment and management of applications on Kubernetes using the Cloud Foundry Platform. They introduced eirinix — a framework that allows developers to extend Eirini. Eirinix is built from the Quarks codebase, which leverages Kubernetes Mutating Webhooks. With the flexibility of Kubernetes and Eirini’s architecture, developers can now build features around Eirini, like Persi support, access to the application via SSH, ASGs via Network Policies and more. In this talk, they explained how this can be done, and how everyone can start contributing to a rich ecosystem of extensions that will improve Eirini and the developer experience of Cloud Foundry.

  • Building an open ML platform with Red Hat OpenShift and Open Data Hub Project

    Unaddressed, these challenges impact the speed, efficiency and productivity of the highly valuable data science teams. This leads to frustration, lack of job satisfaction and ultimately the promise of AI/ML to the business is not redeemed. IT departments are being challenged to address the above. IT has to deliver a cloud-like experience to data scientists. That means a platform that offers freedom of choice, is easy to access, is fast and agile, scales on-demand and is resilient. The use of open source technologies will prevent lockin, and maintain long term strategic leverage over cost. In many ways, a similar dynamic has played out in the world of application development in the past few years that has led to microservices, the hybrid cloud and automation and agile processes. And IT has addressed this with containers, kubernetes and open hybrid cloud. So how does IT address this challenge in the world of AI – by learning from their own experiences in the world of application development and applying to the world of AI/ML. IT addresses the challenge by building an AI platform that is container based, that helps build AI/ML services with agile process that accelerates innovation and is built with the hybrid cloud in mind.

  • Launching OpenShift/Kubernetes Support for Solarflare Cloud Onload

    This is a guest post co-written by Solarflare, a Xilinx company. Miklos Reiter is Software Development Manager at Solarflare and leads the development of Solarflare’s Cloud Onload Operator. Zvonko Kaiser is Team Lead at Red Hat and leads the development of the Node Feature Discovery operator.

Python Across Platforms

  • Chemists bitten by Python scripts: How different OSes produced different results during test number-crunching

    Chemistry boffins at the University of Hawaii have found, rather disturbingly, that different computer operating systems running a particular set of Python scripts used for their research can produce different results when running the same code. In a research paper published last week in the academic journal Organic Letters, chemists Jayanti Bhandari Neupane, Ram Neupane, Yuheng Luo, Wesley Yoshida, Rui Sun, and Philip Williams describe their efforts to verify an experiment involving cyanobacteria, better known as blue-green algae. Williams, associate chair and professor in the department of chemistry at the University of Hawaii at Manoa, said in a phone interview with The Register on Monday this week that his group was looking at secondary metabolites, like penicillin, that can be used to treat cancer or Alzheimer's.

  • Chemists discover cross-platform Python scripts not so cross-platform

    In a paper published October 8, researchers at the University of Hawaii found that a programming error in a set of Python scripts commonly used for computational analysis of chemistry data returned varying results based on which operating system they were run on—throwing doubt on the results of more than 150 published chemistry studies. While trying to analyze results from an experiment involving cyanobacteria, the researchers—Jayanti Bhandari Neupane, Ram Neupane, Yuheng Luo, Wesley Yoshida, Rui Sun, and Philip Williams—discovered significant variations in results run against the same nuclear magnetic resonance spectroscopy (NMR) data. The scripts, called the "Willoughby-Hoye" scripts after their authors—Patrick Willoughby and Thomas Hoye of the University of Minnesota—were found to return correct results on macOS Mavericks and Windows 10. But on macOS Mojave and Ubuntu, the results were off by nearly a full percent.