Showing posts with label linux. Show all posts
Showing posts with label linux. Show all posts

September 30, 2017

Fixing rsync error: error in rsync protocol data stream

I use rsync (wrapped in a script) to back up the data to a Western Digital MyCloud device from my Fedora system. At times I have seen rsync errors "rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.2]" during backup.


As the error was appearing sporadically, it was not a configuration or setup issue. Finally I tried passing protocol parameter to rsync and it worked. The rsync in my Fedora system uses protocol 31 by default and the one in WD device supports 30 by default. Setting --protocol=30 didn't help but setting protocol to 26 resolved the problem. I've been running rsync using protocol 26 for few weeks and haven't seen the errors.



July 29, 2017

vnstat : Recovering from error "Invalid database daily date order"

I use vnstat to keep track of the network traffic statistics in my Fedora system. Through a web interface, it can show some nice charts. Couple of weeks ago when I was trying to see the stats, it was not loading properly. I initially suspected SELinux but executing vnstat from command line proved that there was some problem with vnstat itself. I got the error "Error: enp1s0: Invalid database daily date order: 1494518195 (3) < 1509896072 (4)"
I couldn't find anything helpful to resolve the issue. All I could do was to downgrade vnstat to previous version. As I have configured dnf to retain the cache, the downgrade was bit easy. The downside was that whenever I was updating the system, I had to pass -x vnstat to dnf command so that it will skip updating it.

From the time stamps that appeared in the error message, I thought that the date format was flipped and instead of May-11, Nov-5 was entered in the database creating the problem. The vnstat database is a binary one but vnstat supports exporting and importing the database. Reading the vnstat manual page gave enough information to export and import the data to a new database.

The following steps were taken to export the data from old database, fix it and then import it to new database.

Create a local configuration file for vnstat.
Copy the /etc/vnstat.conf to a local folder and change the DatabaseDir to point to that local folder.

Copy the vnstat database to the local directory. Export the data file using the command

vnstat -i wlp3s0 --exportdb > wlp3s0.db 
 
Update the incorrect time stamps in the exported file.
For example, date -d "2017-05-21" "+%s" will give the time stamp in required format.

Create a new db

vnstat --config ./vnstat.conf  --create -i wlp3s0

Import the modified data

vnstat --config ./vnstat.conf  -i wlp3s0 --importdb wlp3s0.db --force
 
Check the correctness day / month wise data

vnstat --config ./vnstat.conf  -i wlp3s0 -d 
vnstat --config ./vnstat.conf  -i wlp3s0 -m

Stop vnstat and copy the new file to /var/lib/vnstat

sudo systemctl stop vnstat.service
sudo cp ~/vnstat/wlp3s0 /var/lib/vnstat

Update vnstat using sudo dnf upgrade vnstat. I could see that the new version of vnstat was working without problem with the updated db. Started the vnstat using sudo systemctl start vnstat.service and vnstat was back in action.

The downside was that the data for almost two months were not captured by vnstat. My weekly backup was not configured to capture this data. Lesson learned and I quickly set up an automated backup for the dynamic files using anacron. However, I am yet to figure out a way to validate the sanity of the dynamic data.

May 11, 2017

History from Free Dictionary and Aard2 Android Dictionary apps

I use Free Dictionary and Aard2 for in my Android phone to look up the meaning of words. If you ever need to get the list of words that were looked up in these apps from a Linux system, you may find this useful.


The first step would be to enable connect the phone to the computer and enable USB debugging.

Free Dictionary

adb shell run-as org.freedictionary cat shared_prefs/FreeDictionary.xml | 
xmlstarlet sel -T -t -v /map/string | tr ',' '\n' 

Aard2 Dictionary
Things are bit complicate for Aard2 as I found that it does not support run-as command.

adb backup -f ./aard2.ab -apk itkach.aard2
java -jar abe.jar unpack aard2.ab  aard2.tar
tar -O -xvf  aard2.tar apps/itkach.aard2/r/app_history 2>
  /dev/null | jq -r '.key'

January 3, 2016

chequePrint : Linux utility to print into cheques

The problem : As I do not write much on paper these days, writing cheques will cause some cheque leaves go waste. Earlier I had created a template in LibreOffice to solve the problem. However, I could not use that template as it was for a different bank. It was too difficult to get the alignment correct as there were boxes for days, month & year.

Solution : Write a script! Initially considered generating TeX files but zeroed in on PostScript as it would be easy to do the layout.
The script is available in the chequePrint GitHub repo.

August 9, 2015

syncReaders: Linux utility to synchronize Calibre & CoolReader database

I use the coolReader in my Android phone and tablet to read e-books. The e-books are managed in my Linux system using Calibre. One of the problem I had was that it was difficult to maintain the ratings and read status of the books across the three devices. Manually updating the ratings and read status was not practical. Since I go by "Machines should work and men should enjoy", some time ago I ventured into writing a program to synchronize the status and read status in both applications. I have been using the utility for a while and serves my purpose. The downside is that the database files of the applications have to be manually copied to Linux system for synchronization and then copy back to respective devices manually.

The source code for syncReaders is available here : https://github.com/primejyothi/syncReaders

August 17, 2014

Up!

Like many other scripts, the bash shell function "up" is a by product of my laziness. As the name vaguely indicates, it can move you up in the directory tree. If you want to move 3 levels up in the directory tree, you invoke the function as up 3 instead of cd ../../../  which saves a ton of typing. The shell function can be downloaded from my GitHub repo. 

# Go n level up in the directory structure.
# License : GPLv3
function up ()
{
        lvls=""
        if [[ ! -z "$1" ]]
        then
                for i in `seq $1`
                do
                        lvls="${lvls}../"
                done
        else
                lvls="../"
        fi

        # Will land up in / if n is too large.
        cd ${lvls}
        pwd
}


The ShellUtils repo contains few other shell scripts that might be interesting. See the Readme file in the repo to find out what those scripts are doing.

August 2, 2014

Dbus-MPRIS Music Player Controller

The Short story :
Here is a shell script that can control media players like Amarok, Clementine, mpd & VLC : https://github.com/primejyothi/Dbus-MPRIS-MusicPlayer-Controller

The long story :
Like most of the programmers, I'm a big fan of command line. Since I can touch type, things get done really faster. There will be a music player running in my system and most of the time I will be using mpd with ncmpcpp. Only problem is that I keep forget which key is used to stop/pause ncmpcpp. This problem was quickly resolved by installing mpc and few aliases. Things were pretty fine and I even wrote a script (https://github.com/primejyothi/ShellUtils/blob/master/mpdLyrics.sh) to extract the album art of the song being played in mpd and show it on Conky .

Problems cropped up when Amarok or Clementine were used. The controls were on top for Amarok and in case of Clementine it was just opposite. I could use the media keys in the keyboard, but I hardly use them as mpd does not respond to them. The search of consistency ended with MPRIS. Quickly put together a script and any of these media players could be controlled with a single script. Few aliases and I can control the media player without leaving vim :)

For VLC and mpd, MPRIS need to be enabled manually. The VLC player need to be started as vlc --control dbus. In case of mpd, mpDris2 need to be running.

July 22, 2014

JOSM Preset Builder

I was trying to build some presets for JOSM (https://josm.openstreetmap.de/) few days back and thought it would be a good idea to automate the process. Read the some documentation that was available from http://josm.openstreetmap.de/wiki/TaggingPresets. The defaultpresets.xml contained in the JOSM package gave some very useful information in writing the script.

The idea was to have a text file with the preset data and generate the XML file using a script. I finally settled on a pipe separated file format with embedded key value pairs. When finished, it could generate presets with key value pairs, drop downs and lists.

The scripts and sample files are released under GPLv3 and available at https://github.com/primejyothi/JOSMPresetBuilder

Hope someone will find it useful.

May 14, 2014

Changing starting index of tmux panes

I use the bind key + q combination to quickly switch between tmux panes. I use ctrl + a as the bind key and I found it bit of troublesome to press 0 to switch to the first pane as 0 is at the right side of the keyboard. If the pane index started with 1, it would be much easier to select from 1 onward and won't have to go all the way to zero. Fortunately there is an option for that. Set pane-base-index to 1 and the pane index will start from 1. All that need is the following entry in the ~/.tmux.conf


set -g pane-base-index 1

tmux pane index starting with 1
As you can see from this screen shot, the pane index now starts with 1.

April 15, 2014

സ്വതന്ത്രം.in

സ്വതന്ത്രസോഫ്റ്റ്‌‌വേറിനെ കൂടുതൽ ജനങ്ങളിലേക്കെത്തിക്കുക എന്ന ലക്ഷ്യവുമായി മലയാളത്തിൽ ഒരു പോർട്ടൽ/മാഗസിൻ തുടങ്ങിയിരിക്കുന്നു : http://swathanthram.in/ വായിക്കുക, പങ്കാളികളാകുക, പ്രചരിപ്പിക്കുക.
ഈ ഉദ്യമത്തിന്റെ ശില്പികളായ സ്വതന്ത്ര സോഫ്റ്റ്‌‌വേർ പ്രവർത്തകർക്ക് നന്ദി.

March 15, 2014

MiniDLNA : a lightweight DLNA/UPnP server for Linux

I used to use XBMC to stream videos from my Fedora system to my Andorid phone and Tablet. Of late I started to think that XBMC was little too much for streaming videos and started to look for alternatives. Few days back I found MiniDLNA, a light weight DLNA server. The installation and configuration in Fedora was pretty simple and it was up and running in no time.
Here are the installation/configuration steps I followed.
Install the MiniDLNA

sudo yum install minidlna

Minor changes are required in /etc/minidlna.conf to configure the server. I had to change the values for the following parameters in the /etc/minidlna.conf

network_interface=em1
port=8200
user=minidlna
media_dir=/xxx/yyy/zzzz # More media directories will need multiple media_dir entries.
friendly_name=MiniDLNA

Open up the port 8200 in firewall and the configuration is done.
Start the miniDLNA server as follows :

sudo systemctl start minidlna.service

Fire up your favorite DLNA/UPnP client from the mobile device (I use UPnPlay) and enjoy the videos.

February 24, 2014

JOSM Tile stitching script

I wrote a Linux shell utility to combine the OpenStreetMap map tiles downloaded by JOSM into a single big image. The script is available here : https://github.com/primejyothi/jMapStitch

January 3, 2014

kde-connect

Successfully connected Android 2.3 to KDE/Fedora. Multimedia remote control from phone work like a charm with Clementine. :)

May 8, 2013

Blackened new windows and pop up menus in Linux

I was facing this strange problem of new windows and pop up menus blackening after my Fedora 17 system has run for couple of hours. To recover, I have to disable the KDE desktop effects. Once the desktop effects are turned off, things went to normal. However I was unable to turn on the desktop effects until I restart KDE using ctrl + alt + back space. I was thinking that it was a KDE issue, my searches did not yield any results.

Few days back I found that there was an error “intel(0): Failed to submit batch buffer, expect rendering corruption: Resource deadlock avoided” in the Xorg.0.log. Further searches indicated that the blackening is happening due to the bug in Intel video driver and the work around is to use SNA for 3D acceleration. Adding the following line in the “Device” section of /etc/X11/xorg.conf resolved the problem.

Option "AccelMethod" "sna

April 30, 2013

Connecting Android to Linux using MTP

Among the features those were lost during the upgrade from Ice Cream Sandwich to Jelly Bean, the one which I miss most was USB Mass Storage mode. It was the preferred method to backup the files from the Tab and sync the e-books to the Tab from Calibre Library. Calibre was pretty fast to provide support for MTP and syncing e-books were back to normal real soon.

However I was missing the USB mass storage mode as I could not access the files in the tab from the Linux command line for backing up the files. Finally I managed to get it working using mtpfs. The configuration was pretty straight forward but I could not get it work reliably. Most of the time I used to get the message "Transport endpoint is not connected" when trying to access the Tab from the command line. Finally found that mtpfs was crashing with core dump. Looks like the mtpfs for Fedora is broken. Even compiling the latest sources didn't help. Finally managed to get things going using go-mtpfs.

If you are trying to get mtpfs working in Fedora, try go-mtpfs : https://github.com/hanwen/go-mtpfs
Binaries of go-mtpfs are here : http://hanwen.home.xs4all.nl/public/software/go-mtpfs/

March 26, 2013

വിൻഡോസിനുള്ളിൽ ലിനക്സ് : വിർച്വൽ ബോക്സ്

 ലൈവ് സിഡിയും ലൈവ് യുഎസ്ബിയും വഴി ലിനക്സ് ഉപയോഗിക്കുന്നത് നമ്മൾ കണ്ടു. ഇനി പറയാൻ പോകുന്നത് വിൻഡോസിനുള്ളിൽ നിന്ന് വിർച്വൽ മെഷീൻ മാനേജർ അല്ലെങ്കിൽ ഹൈപ്പർവൈസർ പ്രോഗ്രാമുകളുപയോഗിച്ച് ഉബുണ്ടു ലിനക്സ് (‌‌ഗസ്റ്റ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റം)  പ്രവർത്തിപ്പിക്കുന്ന വിദ്യയാണ്. നേരത്തേ കണ്ട രീതികളിൽ ഒരു കമ്പ്യൂട്ടറിൽ ഒരു സമയം ഒരു ഓപ്പറേറ്റിംഗ് സിസ്റ്റം മാത്രമേ പ്രവർത്തിക്കുന്നുണ്ടായിരുന്നുള്ളൂ. വിർച്വൽ മെഷീൻ മാനേജർ ഉപയോഗിച്ച് ഒരു കമ്പ്യൂട്ടറിൽ ഒരേ സമയം ഒന്നിലധികം ഗസ്റ്റ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങൾ പ്രവർത്തിപ്പിക്കാൻ കഴിയും. വിർച്വലൈസേഷനെ കുറിച്ച് കൂടുതലറിയാൻ വിക്കിപീഡിയ സന്ദർശിക്കുക : http://en.wikipedia.org/wiki/Virtualization

വിർച്വൽ ബോക്സ് (https://www.virtualbox.org/) എന്ന ഹൈപ്പർവൈസർ ഉപയോഗിച്ച് വിൻഡോസിൽ നിന്നും ലിനക്സ് പ്രവർത്തിപ്പിക്കുന്നതെങ്ങനെ എന്നു നോക്കാം.(വിർച്വൽ ബോക്സിന്റെ സ്ക്രീൻ ഷോട്ടുകൾ ഒരു ഫെഡോറ മെഷീനിൽ നിന്നാണെടുത്തിരിക്കുന്നത്. വിൻഡോസ് വെർഷനുമായി വലിയ വ്യത്യാസം ഉണ്ടാകാനിടയില്ല).

ആദ്യമായി വിർച്വൽ ബോക്സ് സൈറ്റിൽ നിന്നും (https://www.virtualbox.org/wiki/Downloads) ഡൗൺലോഡ് ചെയ്ത് ഇന്സ്റ്റാൾ ചെയ്യുക. മെഷീനിന് കുറഞ്ഞത് ഡ്യുവൽ കോർ സിപിയുവും രണ്ട് ജിബിയിലധികം റാമും ഉണ്ടാകണം.

1. വിർച്വൽ ബോക്സ് റൺ ചെയ്യുമ്പോൾ ചിത്രം 1ലെ വിൻഡോ കാണാം. അതിൽ New എന്ന ബട്ടൺ അമർത്തിയാൽ ചിത്രം 2ലെ വിൻഡോ വരും. അതിൽ വിർച്വൽ മെഷീനിന്റെ പേരും ടൈപ്പും വെർഷനും കൊടുക്കുക. ഉബുണ്ടു, ഫെഡോറ എന്നൊക്കെ പേരുകൊടുത്താൽ, ബാക്കി വിവരങ്ങൾ ആ വിൻഡോയിൽ തനിയേ വരും. നെക്സ്റ്റ് ബട്ടൻ അമർത്തിയാൽ വിർച്വൽ മെഷീനിന് എത്ര റാം കൊടുക്കണമെന്നു ചോദിക്കുന്ന വിൻഡോ വരും (ചിത്രം 3). ഏകദേശം ഒരു ജിബി റാം അലോക്കേറ്റു ചെയ്യാവുന്നതാണ്.
ചിത്രം 1

ചിത്രം 2

ചിത്രം 3


2. അടുത്ത സ്ക്രീൻ ഹാർഡ് ഡ്രൈവ് ക്രിയേറ്റു ചെയ്യാനാനുള്ളതാണ്. "Create a Virtual hard drive now" എന്ന ഓപ്ഷൻ സെലക്റ്റ് ചെയ്യുക (ചിത്രം 4‌‌). അടുത്ത സ്ക്രീനിൽ ഹാർഡിസ്ക് ടൈപ്പ് സെലക്റ്റ് ചെയ്യണം. ഇവിടെ നേരത്തെ തന്നെ സെലക്റ്റ് ചെയ്ത ഓപ്ഷൻ മാറ്റേണ്ടതില്ല. (ചിത്രം 5). "Storage on physical hard drive" എന്ന സ്ക്രീനിൽ  "Dynamically allocated" (ചിത്രം 6) സെലക്റ്റ് ചെയ്യുക. "File location and size" സ്ക്രീനിൽ ഡിസ്കിന്റെ പേര്
 Ubuntu എന്നും  സൈസ് 10ജി ബി എന്നും (ചിത്രം 7) കൊടുത്ത ശേഷം "create" ബട്ടൺ ക്ലിക് ചെയ്യുക.

ചിത്രം 4

ചിത്രം 5

ചിത്രം 6

ചിത്രം 7

3. അടുത്തതായി സിഡി ഡ്രൈവ് സെറ്റപ്പു ചെയ്യണം. ഇപ്പോൾ ചിത്രം 8ലെ പോലെ വിർച്വൽ ബോക്സിന്റെ മെയിൻ വിൻഡോ കാണാം (ഇതിൽ സ്റ്റോറേജ് 8 ജിബി എന്നു കാണുന്നത് ദയവായി അവഗണിക്കുക, പിന്നെയുള്ളവയിൽ അത് ശരിയാക്കിയിട്ടുണ്ട്) സെറ്റിംഗ്സ് ബട്ടൺ ക്ലിക് ചെയ്താൽ കിട്ടുന്ന വിൻഡോയിൽ (ചിത്രം 9) സ്റ്റൊറേജ് സെലക്റ്റ് ചെയ്യുക. വലതുവശത്തെ സ്റ്റോറേജ് ട്രീയിൽ "Controller:IDE"യിലെ എംപ്റ്റി ഡിസ്ക് സെലക്റ്റ് ചെയ്യുക. Attributes സെക്ഷനിലെ "CD/DVD Drive: ന്റെ വലത്തേ അറ്റത്തുള്ള ഡിസ്കിന്റെ ഐക്കണിൽ ക്ലിക് ചെയ്യുക (ചിത്രം 10). അവിടെ  "Host Drive ... " എന്ന ഓപ്ഷൻ സെലക്റ്റ് ചെയ്ത ശേഷം സ്റ്റോറേജ് വിൻഡോയിൽ "Passthrough" എന്ന ഓപ്ഷൻ സെലക്റ്റ് ചെയ്ത ശേഷം (ചിത്രം 11) OK ബട്ടൺ ക്ലിക് ചെയ്യുക. ഇപ്പോൾ വിർച്വൽ ബോക്സിന്റെ മെയിൻ വിൻഡോ കാണാൻ കഴിയും.
ചിത്രം 8

ചിത്രം 9

ചിത്രം 10

ചിത്രം 11


4. ഇപ്പോൾ വിർച്വൽ ബോക്സിൽ ഉബുണ്ടു ഇൻസ്റ്റാൾ ചെയ്യാനുള്ള ഏകദേശം എല്ലാമായി. അടുത്തതായി ഉബുണ്ടു സിഡി ഡ്രൈവിൽ ഇട്ടശേഷം വിർച്വൽ ബോക്സ് മെയിൻ വിൻഡോയിലെ സ്റ്റാർട്ട് ബട്ടൺ അമർത്തുക. ചിത്രം 12ൽ കാണുന്ന വിൻഡോ വരുന്നതാണ്. അതിൽ പറഞ്ഞിരിക്കുന്ന കാര്യങ്ങൾ ശ്രദ്ധിച്ച് വായിച്ചു മനസ്സിലാക്കിയ ശേഷം OK ക്ലിക് ചെയ്യുക. ഇപ്പോൾ നിങ്ങളുടെ പുതിയ വിർച്വൽ മെഷീൻ ബൂട്ട് ചെയ്യാൻ തുടങ്ങും (ചിത്രം 13). Install ubuntu എന്ന ഓപ്ഷൻ സെലക്റ്റ് ചെയ്ത് ഉബുണ്ടു ഇന്സ്റ്റാൾ ചെയ്യുക. ഇൻസ്റ്റലേഷൻ കഴിഞ്ഞാൽ സിഡി മാറ്റിയ ശേഷം ഉബുണ്ടു റീബൂട്ട് ചെയ്യാൻ ഇന്സ്റ്റലേഷൻ പ്രോഗ്രാം ആവശ്യപ്പെടും. അതു പ്രകാരം റീബൂട്ട് ചെയ്ത് ബാക്കി ഇൻസ്റ്റലേഷൻ സ്റ്റെപ്പുകൾ പൂർത്തിയാക്കുക. അതിനു ശേഷം ഉബുണ്ടു ഷട്ട് ഡൗൺ ചെയ്യുക.
ചിത്രം 12

ചിത്രം 13

ഇനി വിർച്വൽ ബോക്സ് മെയിൻ വിൻഡോയിൽ നിന്നും സ്റ്റാർട്ട് ബട്ടൺ അമർത്തിയാൽ ഉബുണ്ടു സ്റ്റാർട്ടാകുന്നതാണ്. പുതിയ ഗസ്റ്റ് ഓ എസിൽ സ്ക്രീൻ റെസല്യൂഷൻ കുറവായിരിക്കാൻ സാധ്യതയുണ്ട്. Virtualbox Guest Box additions ഇൻസ്റ്റാൾ ചെയ്താൽ ആ പ്രശ്നം പരിഹരിക്കാനാകും. അതിനെ കുറിച്ച് പിന്നൊരിക്കലെഴുതാം.

ഇതോടു കൂടി ഏതെങ്കിലും ഒരു വിധത്തിൽ ലിനക്സ് നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ ഉപയോഗിക്കാൻ പറ്റുമെന്നായിട്ടുണ്ടാകണം. വിൻഡോസിൽ നിങ്ങൾ സാധാരണയായി ചെയ്യുന്ന കാര്യങ്ങൾ ലിനക്സിൽ ചെയ്യാൻ ശ്രമിക്കുക. ചില കാര്യങ്ങൾ എളുപ്പമായിരിക്കും, മറ്റു ചിലത് അങ്ങനെയായിരിക്കില്ല.

May 16, 2012

push & pop - cd made bit easier

During my initial days as developer, I found myself doing cd to folders which were deep in the directory structures often having long names. Long names were not a big problem due to auto completion but remembering different directory names were a problem. The idea of having aliases for cd for different directories was dropped even before writing a single alias as I didn't want to remember the aliases for different directories. So I wrote two scripts named push.sh and pop.sh. The working is pretty simple, you go to a directory which need to be remembered, execute push. The pop script will give a list of remembered directories and based on the choice will take you to the selected directory. I hope you may find this useful. Here are the scripts:

[prime@ford bin]$ cat push.sh 
#! /bin/bash
lines_to_keep=9
data_file=~/.dir.dat
tmp_file=~/.dir.dat.$$ 
tail -"$lines_to_keep" $data_file > $tmp_file
mv $tmp_file $data_file
cur_dir=`pwd`
echo $cur_dir >> $data_file

[prime@ford bin]$ cat pop.sh 
#! /bin/bash
lines_to_keep=9
data_file=~/.dir.dat
tail -"$lines_to_keep" $data_file |nl
echo -e "Choice please : " \\c
read choice
case "$choice" in
[0-9]*)
        ;;
*)
        echo "Invalid choice"
        return 0
        ;;
esac
dest_dir=`tail -"$lines_to_keep" $data_file | head -$choice |tail -1`
cd $dest_dir

Save scripts in a convenient location say ~/bin. The pop.sh script need to run in the current shell the cd to work correctly. This can be either be done by preceding the pop.sh with a dot (not very convenient) or creating an alias which will run the script in the current shell as follows

alias pop='. ~/bin/pop.sh'
alias push='~/bin/push.sh' # Put these aliases in the .bashrc or .profile

Hope you may find it useful. Share and enjoy!*

* "Share and Enjoy" is the slogan of the Sirius Cybernetics Corporation ;)

May 4, 2012

One of the reasons why I stick with Fedora



The delta rpm feature of yum reduces the amount of data download for updates.
Total download size: 97 M
Is this ok [y/N]: y
Downloading Packages:
Setting up and reading Presto delta metadata
updates/prestodelta | 889 kB 00:24
Processing delta metadata
Download delta size: 4.3 M
...
...
Finishing rebuild of rpms, from deltarpms
<locally rebuilding deltarpms> | 95 MB 00:37
Presto reduced the update size by 96% (from 95 M to 4.3 M).