RU-FI-OOOOOH!

Sohail Mirza, standing in for Peter.

Archive for the ‘Ubuntu’ Category

Helpful Hints: Create an APT proxy in 3 easy steps using apt-cacher-ng

Pre-requisites

This Helpful Hints tutorial will require a number of basic and intermediate skills.  In order to complete this tutorial you should be comfortable doing the following:

If you’re not certain how to perform some of these actions, you may find tutorials for them readily available online.

Why an APT proxy?

If you’re like me, you might have a number of Ubuntu machines at home.  If this is the case, you know it can be a pain to quickly update them all since the same updates need to be downloaded to each computer.  If there are a lot of updates to be downloaded, this can take a while on a slower Internet connection.

If this sounds like your situation, then you can speed things up by setting up an APT proxy on your network at home. APT is the tool your Ubuntu system uses to retrieve updates and manage the installation of programs. An APT proxy will basically allow you to designate one of the machines on your network as the update server — the one machine where all the others will get their system updates from.  The idea is that the proxy will only have to download updates once, and these are then distributed to all the other Ubuntu machines on the network.

To accomplish this we can very easily setup apt-cacher-ng, a proxy tool readily available from the Ubuntu repositories.  I did play around with apt-proxy first, but found that less straightforward to use.

Taking it step-by-step

So here are the three easy steps, assuming all the computers involved are running Ubuntu (the computers can be running any version of Ubuntu, even differing versions):

  1. On the machine which will be running the APT proxy, install apt-cacher-ng. Just click the link in the last sentence, or type the following into a terminal window:

    sudo apt-get install apt-cacher-ng

  2. Now that your proxy is ready to go — yup, it was that simple — we need to instruct all the computers in your home or office to go to that proxy computer for APT updates, and not to the public update sites on the Internet. This is fairly straightforward to do as well.

    As the super-user, you’ll need to edit (or create, if it doesn’t exist) the file at /etc/apt/apt.conf.d/02proxy, and add the following to the first line in that file:

    Acquire::http { Proxy "http://ProxyComputerIPAddress:3142"; };

    In this line you’ll need to replace “ProxyComputerIPAddress” with the proxy computer’s address on your network. It’s address may look similar to an IP address like 192.168.1.100.

    You’ll need to perform this step on every computer, including the one running the APT proxy. On the computer running the proxy you can use the IP address 127.0.0.1, which is just a way for the computer to refer to itself; every computer can refer itself with the this IP address.

  3. Now that every computer will be going through the proxy, things should magically just work! At this point you can launch the Update Manager, and check to see if there are pending updates.

Wrapping up…

That’s it folks, it’s that easy to setup an APT proxy. The result is that all Ubuntu updates should be cloned to your proxy server once, and that will now be the source of updates for all the computers on your network.

Post to the comments and let us know how it works for you.

Written by Sohail Mirza

August 20, 2011 at 12:46 am

MySQL: “Access denied for user ‘debian-sys-maint’@’localhost'”

For all you Ubuntu/MySQL developers out there, have you ever seen the following?

    neo@thematrix:~$ sudo /etc/init.d/mysql restart
    * Stopping MySQL database server mysqld [fail]
    * Starting MySQL database server mysqld [ OK ]
    /usr/bin/mysqladmin: connect to server at 'localhost' failed
    error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'

So, what is this “debian-sys-maint” user?  Well, this MySQL user is created for the Ubuntu to be able to start/stop the database and to carry out other maintenance operations.

Sounds well enough, but then why do I keep running into the “access denied” problem for this user?  Well, the issue is that with each update to MySQL, the user’s password in the database is overwritten.  Ubuntu seems to go to the file /etc/mysql/debian.cnf in order to find this user’s password, but obviously the password is out of sync after the update has been applied.

As a result of this behaviour, I’ll run into the “access denied” problem every so often.  Thankfully, the solution to this issue is fairly simple.

First, list the contents of the /etc/mysql/debian.cnf file:

    neo@thematrix:~$ sudo cat /etc/mysql/debian.cnf

The contents of the file should look something like the following:

    # Automatically generated for Debian scripts. DO NOT TOUCH!
    [client]
    host     = localhost
    user     = debian-sys-maint
    password = n4aSHUP04s1J32X5
    socket   = /var/run/mysqld/mysqld.sock
    [mysql_upgrade]
    user     = debian-sys-maint
    password = n4aSHUP04s1J32X5
    socket   = /var/run/mysqld/mysqld.sock
    basedir  = /usr

See that password?  That’s what we’re looking for!

Next, we want to issue a command to MySQL that tells it to grant the debian-sys-maint user all necessary privileges using the new password.

Login to your mysql server using your root account and the root password you had originally set:

    neo@thematrix:~$ mysql -u root -p <password>

Issue the GRANT command now to grant those permissions:

    mysql> GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'n4aSHUP04s1J32X5';

Voila!  If you restart MySQL, you’ll find that you should no longer be getting the “access denied” error message.

    neo@thematrix:~$ sudo /etc/init.d/mysql restart
    * Stopping MySQL database server mysqld [ OK ]
    * Starting MySQL database server mysqld [ OK ]
    * Checking for corrupt, not cleanly closed and upgrade needing tables.

Bear in mind, because we just switched the password, and the change hasn’t been affected yet, you may need to kill the MySQL server processes in order to get MySQL to shut down at all.

Written by Sohail Mirza

January 16, 2009 at 6:51 pm

Posted in Development, Ubuntu

Tagged with , , ,

dpkg problems relating to ‘cups’ in Ubuntu

Firefox 3.0.5, Mozilla’s latest security fix for the venerable browser has recently been released.  Tonight it was pushed out to Ubuntu 8.10 users, and so I promptly updated my Ubuntu installation.  Noticing that there were other updates as well, I applied them all.

Unfortunately, dpkg wasn’t able to complete the update of all selected packages.  I wanted to review the problem, so from the command-line I brought up aptitude via:

sudo aptitude

Aptitude was nice enough to let me know that I needed to run the following command to correct the problem:

sudo dpkg --configure -a

… unfortunately it didn’t work:

$ sudo dpkg --configure -a
dpkg: ../../src/packages.c:221: process_queue: Assertion `dependtry <= 4' failed.
Aborted

I decided to go back into aptitude to see if any packages would be selected there for installation due to a failure to install previously.  Sure enough, when I pressed ‘g’ to process all actions, it attempted to install cups, cups-bsd, and cups-client, but failed:

dpkg: error processing cups (--configure):
package cups is not ready for configuration
cannot configure (current status `triggers-awaited')
dpkg: error processing cups-client (--configure):
package cups-client is not ready for configuration
cannot configure (current status `triggers-awaited')
dpkg: ../../src/packages.c:221: process_queue: Assertion `dependtry <= 4' failed.
E: Sub-process /usr/bin/dpkg exited unexpectedly
A package failed to install.  Trying to recover:
dpkg: ../../src/packages.c:221: process_queue: Assertion `dependtry <= 4' failed.
Aborted

These were the packages that had failed to install successfully earlier.

What could I do to get around this?  Aptitude wasn’t able to handle it for me, and nor could dpkg process the configuration of these packages.  After some futzing around, I even tried downgrading the packages in aptitude, but the same dpkg errors came up:

Preconfiguring packages ...
Selecting previously deselected package cups.
(Reading database ... 148514 files and directories currently installed.)
Preparing to replace cups 1.3.9-2ubuntu4 (using .../cups_1.3.9-2_amd64.deb) ...
* Stopping Common Unix Printing System: cupsd [ OK ]
Unpacking replacement cups ...
Selecting previously deselected package cups-bsd.
Preparing to replace cups-bsd 1.3.9-2ubuntu4 (using .../cups-bsd_1.3.9-2_amd64.deb) ...
Unpacking replacement cups-bsd ...
Selecting previously deselected package cups-client.
Preparing to replace cups-client 1.3.9-2ubuntu4 (using .../cups-client_1.3.9-2_amd64.deb) ...
Unpacking replacement cups-client ...
Processing triggers for doc-base ...
Processing 1 changed doc-base file(s)...
Registering documents with scrollkeeper...
Processing triggers for man-db ...
Processing triggers for ufw ...
ERROR: Couldn't stat '/etc/default/ufw'
dpkg: subprocess post-installation script returned error exit status 1
E: Sub-process /usr/bin/dpkg returned an error code (2)
A package failed to install. Trying to recover:
Setting up cups-client (1.3.9-2) ...

Setting up ufw (0.23.2) ...

Setting up cups (1.3.9-2) ...

Installing new version of config file /etc/apparmor.d/usr.sbin.cupsd ...
Reloading AppArmor profiles : done.
* Starting Common Unix Printing System: cupsd [ OK ]

dpkg: ../../src/packages.c:221: process_queue: Assertion `dependtry <= 4' failed.
Aborted
Press return to continue.

But wait, what’s that error?

Processing triggers for ufw ...
ERROR: Couldn't stat '/etc/default/ufw'
dpkg: subprocess post-installation script returned error exit status 1
E: Sub-process /usr/bin/dpkg returned an error code (2)

A-hah!  It looked like the cups installation needed to process some triggers for the package ufw, and this failed.  ufw is Uncomplicated FireWall package for Ubuntu, but it’s a package I’m not using.

So, maybe if I were to uninstall ufw, the cups packages would successfully install?

sudo aptitude purge ufw

If you want to keep the ufw configuration files, you can try this instead:

sudo aptitude remove ufw

Removing ufw may display some cups errors, but ufw should still successfully uninstall.

At this point, the resolution that aptitude first suggested worked as well:

sudo dpkg --configure -a

And now to install the latest version of cups instead of the downgraded versions I attempted to install.

Preconfiguring packages ...
(Reading database ... 148481 files and directories currently installed.)
Preparing to replace cups 1.3.9-2 (using .../cups_1.3.9-2ubuntu4_amd64.deb) ...
* Stopping Common Unix Printing System: cupsd                                                                                                                                                                                        [ OK ]
Unpacking replacement cups ...
Preparing to replace cups-bsd 1.3.9-2 (using .../cups-bsd_1.3.9-2ubuntu4_amd64.deb) ...
Unpacking replacement cups-bsd ...
Preparing to replace cups-client 1.3.9-2 (using .../cups-client_1.3.9-2ubuntu4_amd64.deb) ...
Unpacking replacement cups-client ...
Processing triggers for doc-base ...
Processing 1 changed doc-base file(s)...
Registering documents with scrollkeeper...
Processing triggers for man-db ...
Setting up cups (1.3.9-2ubuntu4) ...
Installing new version of config file /etc/apparmor.d/usr.sbin.cupsd ...
Reloading AppArmor profiles : done.
* Starting Common Unix Printing System: cupsd                                                                                                                                                                                        [ OK ]

Setting up cups-client (1.3.9-2ubuntu4) ...

Setting up cups-bsd (1.3.9-2ubuntu4) ...

Press return to continue.

Presto! It worked!

At this point I reinstalled ufw and all was as it should be.

Along the way I was also able to find a cool way of listing packages on one’s system that are not completely installed.  From a command line terminal, you can enter the following:

sudo dpkg -l | grep -v ^ii

The first portion of this command, sudo dpkg -l, will list all the packages on your system. The second portion, grep -v ^ii, says, ‘search through that list of packages for any line that does not start with “ii“‘. The letters “ii” at the beginning of a line of the package listing indicates the package is successfully installed.

Quite an eventful application of system updates! I love Ubuntu for its simplicity, and the fact that upgrades and installations are usually hassle-free. But, even when there’s a problem, the power inherent in Linux allows you to quickly and effectively resolve the issue.

NB: Sorry about the poor formatting of this post, WordPress is simply not co-operating.

Written by Sohail Mirza

December 18, 2008 at 1:10 am

Posted in Software, Ubuntu

Tagged with , , , , ,

Ubuntu Machines Make it to Dell Homepage

Found on Digg, Dell is advertising the new Ubuntu-powered machines on their homepage:

Ubuntu-powered machines on the Dell homepage.

In case you hadn’t heard, some time ago Dell created a Digg-like site called IdeaStorm where the public could submit innovative ideas to Dell and vote those ideas up or down. The suggestion that quickly rose to the top of the list was for Dell to start selling machines pre-loaded with Linux. There was initially some question as to whether Dell would go through with it or not as Dell reps had previously stated that they were considering Linux, but the support issues were a serious blocker on moving forward into the space.

Following the popularity of the IdeaStorm Ubuntu idea, it was later discovered that Michael Dell had a personal laptop (Dell Precision M90) running with Ubuntu. That pretty much confirmed what many believed was Dell’s interest in Ubuntu.

Subsequently, Dell officially announced that they would begin selling a few select machines with Ubuntu pre-loaded; Ubuntu was the natural choice given it’s skyrocketing popularity and it’s tremendous ease-of-use.

So, here we are today, seeing Ubuntu on the Dell homepage! Kudos, Dell!

By the way, if you can’t see the Ubuntu promotion on the homepage, keep refreshing until you do. Dell employs a rotation script that displays a different promotion on each page load.

read more | digg story

Written by Sohail Mirza

May 28, 2007 at 11:39 am

Posted in Business, Ubuntu

Raising Skinny Elephants Is So Utterly Boring

If you’re a Ubuntu/Debian user, and Gnome has crashed, Ctrl-Alt-Backspace & Ctrl-Alt-F1 are not working, apparently there are some further steps you can take before going for the power button and risking dataloss.

The first command to try is:

ALT + SysReq + k

That command is meant to kill all running processes, thereby terminating your session safely. But what’s that “SysReq” key? Look at your Print Screen key and you’ll find a second label on it.

What if stopping all system processes doesn’t do the trick?

Read the rest of this entry »

Written by Sohail Mirza

December 12, 2006 at 4:54 pm

Posted in Technology, Ubuntu