Tree [4335cc] cleanup /
History



File Date Author Commit
.hgtags 2008-04-14 Ritesh Raj Sarraf Ritesh Raj Sarraf [08e815] Merge changes...
CHANGELOG 2006-12-29 riteshsarraf riteshsarraf [72ccb9] [svn] Realigning the tree to trunk
INSTALL 2006-12-29 riteshsarraf riteshsarraf [72ccb9] [svn] Realigning the tree to trunk
KNOWN-BUGS 2006-12-29 riteshsarraf riteshsarraf [72ccb9] [svn] Realigning the tree to trunk
LICENSE 2007-08-09 Ritesh Raj Sarraf Ritesh Raj Sarraf [65d860] * Switching the GPL v3
Makefile 2008-04-14 Ritesh Raj Sarraf Ritesh Raj Sarraf [08e815] Merge changes...
README 2006-12-29 riteshsarraf riteshsarraf [72ccb9] [svn] Realigning the tree to trunk
THANKS 2008-04-14 Ritesh Raj Sarraf Ritesh Raj Sarraf [08e815] Merge changes...
TODO 2007-08-10 Ritesh Raj Sarraf Ritesh Raj Sarraf [2ce875] * I don't understand why import under __init__(...
build.xml 2008-04-14 Ritesh Raj Sarraf Ritesh Raj Sarraf [08e815] Merge changes...
debianbts.py 2007-04-25 riteshsarraf riteshsarraf [52a7b8] [svn] * This should be better. Most files which...
fetch_bugs.py 2007-08-09 Ritesh Raj Sarraf Ritesh Raj Sarraf [64678f] * More license structuring
pypt-offline 2006-12-29 riteshsarraf riteshsarraf [6a1581] [svn] Workarounds
pypt-offline-testcase.bat 2008-04-14 Ritesh Raj Sarraf Ritesh Raj Sarraf [702761] Merge changes
pypt-offline.1 2007-08-21 Ritesh Raj Sarraf Ritesh Raj Sarraf [9b45ce] * Added a socket timeout option which sets the ...
pypt_core.py 2009-04-20 Ritesh Raj Sarraf Ritesh Raj Sarraf [4335cc] Pull some ideas from debdelta
pypt_magic.py 2006-12-29 riteshsarraf riteshsarraf [72ccb9] [svn] Realigning the tree to trunk
pyptofflinegui.py 2008-04-14 Ritesh Raj Sarraf Ritesh Raj Sarraf [702761] Merge changes
pyptofflinegui.ui 2008-04-14 Ritesh Raj Sarraf Ritesh Raj Sarraf [08e815] Merge changes...
reportbug_exceptions.py 2007-04-25 riteshsarraf riteshsarraf [07695f] [svn] * Adding offline bug report functionality...
urlutils.py 2007-04-25 riteshsarraf riteshsarraf [07695f] [svn] * Adding offline bug report functionality...

Read Me

pypt-offline -- An Offline Package Manager 
(C) 2005, 2006 Ritesh Raj Sarraf <rrs@researchut.com> 



# INTRODUCTION 

So you've decided to give this small piece of work a try. 
Good ! Let's get it done faster. 



pypt-offline is an offline package management tool written in the Python Programming Language.
This program, as of now, is intended for people using Debian (And Debian based) systems. 

This program allows leveraging the power of Debian (more precisely apt-get) onto a completely
disconnected machine. Most of the people with slow or no internet connection (most of those in
India/Nepal/Pakistan and nearby countries) have not considered using Debian (or Debian derived
distributions) because Debian's real taste is experienced when it is connected to the internet.

This utility is an attempt in making that problem eradicate. I hope this utility comes to use to you.
I'd be eager to hear your comments/suggestions. Feel free to drop an email at rrs _AT_ researchut |DOT| com


#########################################################################

Let us assume you have a machine at home ( Hereby called Machine-A) with no or very expensive
internet connection on which you've installed Debian (Hereby all Debian and Debian based systems
will be called as Debian).

You or your friend works at a local city office where they have High Speed Internet Connection.
The machine used there is Linux/Windows/Mac box. We'll call this Machine-B henceforth.

pypt-offline allows you to synchronize Machine-A's apt database with the Debian archives.
It does so by 
* Extracting the details of Machine-A's apt's database which needs to updated
* Fetches the required database on Machine-B
* Synchronizes the fetched database back to Machine-A


With these 3 steps you can keep a disconnected Debian machine up-to-date on a daily basis.


The rest of the document will describe the details along with the commands.



STEP - 1



On Machine-A:


pypt-offline --set-update /tmp/update-uris


With this command, pypt-offline extracts the details from apt's database for the files that
are required to update apt's package database. The extracted information is stored in /tmp/update-uris


pypt-offline --set-upgrade /tmp/upgrade-uris --upgrade-type dselect-upgrade


With this command, pypt-offline extracts the details from apt's database for the packages that
are required to be upgraded. The extraced information is stored in /tmp/upgrade-uris
There are 3 types of "upgrade" type. "upgrade", "dist-upgrade" and "dselect-upgrade".
You can pass any one of them.
Note: --set-upgrade and --upgrade-type are mutually inclusive. You cannot use one option without the other


pypt-offline --set-install /tmp/install-uris --set-install-packages package1 package2 packageN


With this command, pypt-offline extracts the details from apt's database for the packages
(and its dependent packages) that are required to be installed. The extracted information is
stored in /tmp/install-uris
Note: --set-install and --set-install-packages are mutually inclusive. You cannot use one option
without the other



The above mentioned options are executed on Machine-A. They extract the details from apt's database.


Now the user needs to copy the extracted data file onto a removable media and take it to Machine-B.



STEP - 2



On Machine-B:

With the extracted data file in hand, on Machine-B, execute the following commands:


pypt-offline --fetch-update /tmp/update-uris [ -d /tmp/updates/ -s /tmp/repository/ --disable-md5check
--zip --zip-update-file /tmp/updates.zip --zip-upgrade-file /tmp/upgrades.zip]


With this command, pypt-offline fetches the required data from the internet as directed by Machine-A
The options in square bracket are optional


-d /tm/updates/ - With this option, the directory where the downloaded data will be saved is set.
If the option is not given, a folder named pypt-offline-downloads is created under the current working directory.


-s /tmp/repository/ - With this option, the directory where the previously downloaded data was saved
is searched. This is used so that you don't download the same file again and again. If the option is
not given, the current working directory is used as the repository and all files and folders under it
are recursively searched.
Also the freshly downloaded files are copied to this folder so that you don't have to download it again
the next time.
Note: This option is effective only for packages which are downloaded and *NOT* for update files.
Update files change almost daily in the Debian repositories, hence keeping a local cache is useless.


--disable-md5check - It is *highly discouraged* to use this option. By default, pypt-offline compares
the md5checksum for every package it downloads. If the md5checksum don't match, the file is deleted.
This is necessary to make sure that you don't end up having tampered packages.
Note: This option is effective only for packages which are downloaded and *NOT* for update files.
Update files currently don't provide md5checksum details.


--zip - It is *highly encouraged* to use this option. Though disabled by default, if enabled, pypt-offline
creates a single zip file of the downloaded files. This way it is easier to track the downloaded files.


--zip-update-files - This option sets the zip file name. If this option is not set, pypt-offline uses the
default file name, pypt-offline-update.zip


--zip-upgrade-files - This option sets the zip file name. If this option is not set, pypt-offline uses the
default file name, pypt-offline-upgrade.zip


If you don't use the --zip option, the downloaded files are stored in the folder you mentioned with the -d option.
You'll need to copy the files from the folder.


With this, once all the data has been downloaded, copy it to your removable storage device and take it back to Machine-A.



STEP - 3


On Machine-A:


Once you come back to Machine-A:



pypt-offline --install-update /tmp/updates.zip [ /tmp/]


With this command, pypt-offline syncs the update files from updates.zip. If a folder name is given as an
argument to --install-update, it searches for the required files and syncs them to apt's package database.


pypt-offline --install-upgrade /tmp/upgrade.zip [/tmp/]


With this command, pypt-offline syncs the package from updates.zip. If a folder name is given as an argument
to --install-update, it searches for the requires files and syncs them to apt's package database.
Note: Please keep in mind that this doesn't actually install/upgrade the packages.
It just makes the "To Be Downloaded" package available. With it apt will not require to download any additional
packages and hence will do the installation as if it was downloaded from the internet.


NOTE: If you use apt-listbugs to track package bugs while you install, it'll fail because apt-listbugs will try
to connect to the internet.





That's all. Please send your comments and suggestions to me at rrs _AT_ researchut |DOT| com
If you come across any bug [misbehavior, feature request], file them at the Bug tracker.
There's also a mailing list available at https://lists.sourceforge.net/lists/listinfo/pypt-offline-general


Thanks,
Ritesh Raj Sarraf