Smxi Manual :: Configuration and Operation Information

Page Version: 1.8
Page Updated: October 25 2012

Basic smxi script features and functions

The script has many features, many of which will only appear once to users, others of which are always there. See smxi navigation page for full list of all current smxi functions and features.

After doing the initial system check, and asking a few questions for configurations, these are the main options you will see:

smxi home page

The script home page can be found at the script forums.


Script installation - method

For all the possible different ways to install smxi, please read the complete installation options. For most people, however, the following is probably all you need to know:

This method will download and extract the package. This requires the unzip utility. So first let's check if you have it:

# type this command:
which unzip

# if it gives you an answer, you have it.
# If nothing happens when you do that, just do this:
apt-get update && apt-get install unzip

# or, if you prefer aptitude, do:
aptitude update && aptitude install unzip

Ok, so now we're ready to get the file, which contains smxi, svmi, and sgfxi.

# as root, run the following command
cd /usr/local/bin && wget -Nc && unzip && smxi

If everything worked as expected, it should, if you are X (KDE, Gnome, etc), ask if you want to turn off X and start again.

This method installs smxi, svmi, and sgfxi, all ready to go.


Smxi options

Smxi has a wide range of options, that have been added over the years to solve specific issues people had, or to trigger more customized behaviors that defaults don't handle as well, or that are simply extra features that most people don't normally need.

You can also see the smxi/sgfxi/svmi options page for more information.

Since these options change over time, I can't guarantee each one listed here will always be present, but most of these are pretty standard by now, and should not change that much. However, always check: smxi -h
to see what the latest supported options and features are. This -h option is present on all the scripts I do, as are a few others (-U for update, -j for color scheme).

How to use the smxi script options

Smxi, and all other scripts here, use standard option triggers, and are all either single letter, or single letter plus further arguments. If you aren't familiar with how to use options, it's a good thing to learn, since it opens up a lot wider range of fine tuning, control, and features, than using just the defaults would give you.

You can put together options, like this:


or use them separated:

-giktw -f -x

You can run this script with any combination of these options, as long, of course, as tehy don't conflict with each other.

Single letter options are very convenient since you can put them together, like this: -ik or use them singly, like this: -w -x

Each option, or group of options, must begin with a dash:



 smxi -ikw

skips the system info, kernel install, and warning.


smxi script options: skipping parts of script

The following allow you skip parts of the du script:

For example:

smxi -kwid

would go directly to the misc options section after the dist-upgrade. smxi -ki would skip the kernel install question and the information section.


smxi-options that can be run in X/Desktop

The following options can be run in X/Desktop as root, and let you run the post upgrade section of the script only. The warnings/upgrade/graphics install parts are turned off

The following options can be run in X/Desktop, and provide useful information about various things


smxi advanced options

The following are advanced script options, and are for doing things that aren't common, but can be useful to you:


User set smxi script options

You can also have the script do some other things by editing its configuration file /etc/smxi.conf. See sticky options for more powerful methods of setting smxi user options permanently.

Please note that file does not exist until the first time the script runs, so if you want to add any of these and don't have the file, just create it.


Using smxi with an apt proxy

Update: I consider approx to be far too buggy to recommend, I'm sorry, I have had nothing but failures with it, and am no longer able to use it in any system, so I'm leaving this up just as a legacy how-to. I believe apt-cacher is more reliable, but I haven't used it so I can't recommend it or not recommend it, and I also have no how-to available for it.

Smxi works with apt proxies as long as the proxy url follows a very fixed convention. This feature was added Jan. 27 2009, and is quite basic. But if you enjoy using either apt-proxy or approx (approx is recommended, it's easy to setup, and seems to be relatively bug free), and are willing to use the following naming conventions for your repos, you can use smxi fine. The only catch is that the repo switching options -m and -M will not work. And the non free autocheck/update tool will also not work.

I needed to add this feature because I'm testing approx locally here, and too many parts of smxi broke when I added in the local proxy urls for the sources.

Setting up approx

There's a fine setup how-to for approx that should get you on your way. I didn't need any more information than was provided there to get approx up and running. The only thing I'd like to change is moving the /var/cache/approx directory to another, dedicated data partition, but other than that, the how-to was all you need to know.

Just pick the machine in your network to use as the apt proxy server that you don't mind being on, since you can't use apt without the apt proxy machine being turned on after you convert to using an apt proxy like approx. I chose one that uses very little energy, but which is still reasonably strong (an old PIII box) and silent.

Proxy port on proxy machine must be 9999

Please note, you MUST use the default proxy port on your apt proxy box, 9999, because smxi will be testing for :9999 to determine if a proxy apt agent is being used instead of standard.

Repo proxy names supported by smxi

This is the supported syntax for your (let's say you're using approx) approx proxy urls. There are two forms you can use, short syntax or full, but please make sure to use one of them to avoid smxi errors.

Repo Proxy Name Full Syntax

# Debian primary repos: use for sid, testing, and stable debian branches.

# security
# volatile

## aptosid repos: anything with the term aptosid in it:
# and for alternate repo

# mepis: anything with the term 'mepis' in it

## miscellaneous
# for multimedia stuff, the french guy
# anything with the term 'debian-multimedia' in it:

## opera: anything with 'opera'

# skype: anything with 'skype'

# swiftfox: anything with 'swiftfox'

# virtualbox repos

Repo Proxy Name Short Syntax

## debian primary repos
# this would be for sid, testing, and stable debian branches.
deb-sec # for debian security
deb-vol # for debian volatile

## aptosid repos
deb-ats-alt # first list your alternate aptosid repo, if used
deb-ats-main # then your primary aptosid repo

# mepis repos

## for multimedia stuff, the french guy

## opera repos

# skype repos

# swiftfox repos

# virtualbox repos

Because of the randomness of your own proxy server naming, it's not possible to do any more fine tuned detections, but smxi still needs to know that you have aptosid, mepis, or whatever other sources it might need to check before doing anything.

Local sources.list syntax

In your local sources.list file, /etc/apt/sources.list (or sub, sources.list.d/...list files if you run aptosid), you'd have something like this:

Local sources.list full syntax

# remember, the alt repo for aptosid needs to go FIRST if you want it be
# used in preference to the primary aptosid one
deb http://my-apt-proxy:9999/debian-main/ main sid contrib non-free
deb http://my-apt-proxy:9999/aptosid-alt/ main sid contrib non-free (etc...
deb http://my-apt-proxy:9999/aptosid-main/ main sid contrib non-free (etc...)

# and some sample alternate types:
deb http://my-apt-proxy:9999/opera/ sid non-free

Local sources.list short syntax

deb http://my-apt-proxy:9999/deb-main/ main sid contrib non-free
# remember, the alt repo for aptosid needs to go FIRST if you want it be
# used in preference to the primary Aptosid one
deb http://my-apt-proxy:9999/deb-ats-alt/ main sid contrib non-free (etc...)
deb http:////my-apt-proxy:9999/deb-ats-main/ main sid contrib non-free (etc...)
# and so on...

# and some sample alternate types:
deb http://my-apt-proxy:9999/deb-op/ sid non-free

And of course, you can also use the actual local IP address directly for your proxy machine, but I prefer using names, which you can set in /etc/hosts, like this: my-apt-proxy
## if the proxy is on your local machine, it would be (localhost default IP)
# on that machine, and all the other machines would have the actual IP
# address of your proxy machine. my-apt-proxy

In this case, is the address (must be a static, non-dhcp address in the network) of the proxy server on your local network, and my-apt-proxy is the name you give it for the local machine that will be its client. That name could be whatever you want.

One advantage, by the way, of not using the IP address in the sources.list file directly is that if you want to switch machines to use as apt proxy server, all you'd need to do is switch the IP address in /etc/hosts on each machine in your network.

Easier to follow and read proxy naming on local machine

Tip: if you give each proxy locally a distinct and clear name, it's easier to see what apt updating is occuring. In other words, rather than using my-apt-proxy, you can use, in your sources.list file and in /etc/hosts, something like this (but use the same syntax type option as listed.


which results in sources like this:

deb http://debian-main-proxy:9999/deb-main unstable main contrib non-free
#deb-src http://debian-main-proxy:9999/deb-main unstable main contrib non-free

# Testing
deb http://debian-main-proxy:9999/deb-main testing main contrib non-free
#deb-src http://debian-main-proxy:9999/deb-main testing main contrib non-free

# opera
deb http://opera-proxy:9999/deb-op sid non-free
#deb http://opera-proxy:9999/deb-op testing nonfree

# Aptosid Sources
deb http://aptosid-alt-proxy:9999/deb-ats-alt/ sid main contrib non-free fix.main fix.contrib fix.non-free
deb http://aptosid-main-proxy:9999/deb-ats-main/ sid main contrib non-free fix.main fix.contrib fix.non-free
# deb-src http://aptosid-main-proxy:9999/deb-ats-main/ sid main contrib non-free fix.main fix.contrib fix.non-free

using /etc/hosts like this: debian-main-proxy aptosid-alt-proxy aptosid-main-proxy debian-multimedia-proxy opera-proxy swiftfox-proxy

Now when the update runs, assuming you matched the proxy names in sources.list and /etc/hosts correctly, you'll see the updating using that syntax, which is easier to follow and read, and if a failure occurs, you'll know which server it came from, instead of the one my-apt-proxy name.

Proxy server config file syntax

In approx, the corresponding /etc/approx/approx.conf file would have entries like this:

Proxy server config file Full syntax


# an alternate Aptosid repo, should go first for Aptosid users
# the primary repo


Proxy server config file Short syntax


# an alternate Aptosid repo, should go first for Aptosid users
# the primary repo
# or if you want the fuller, anything with Aptosid in it


And that's about it. Note that it doesn't really matter what the local machine is using as the proxy server name at all, the :9999 is actually what matters, as long as the name you use is in your /etc/hosts and matches the name(s) in your sources.list on the local machines. 9999 sends that request to the listening port of the proxy server machine, which then sends it along to approx.

Easy switching between Debian standard and apt proxy sources with switcher

You can also check out switcher, which is a little script made to let you switch between proxy/approx source.list files and standard Debian ones, which can be useful if you for example use a laptop on your network and while travelling.


Other useful things to know in console

Remember: to scroll up or down in terminal window, use: shift+pageup/pagedown to go up to see something that has scrolled by. This is usually limited to about 6 screens or so back