Deb Installer for Dapper.

Josué Alcalde González josuealcalde at gmail.com
Fri Oct 14 07:28:20 CDT 2005


Now, Breezy is out, it is time for ideas for dapper. I would like to
have a talk about .deb installer.

I think using dpkg is not good because:
- You must use the console
- It could install broken packages.
Gdeb solves first problem, but it uses dpkg. I decided to rewrite it
whit a similar interface to Synaptic. I am a student and I only had
developed Java applications and some C code, but I have been able to
do an alpha using C++ and glade, checking Synaptic code, gdeb code and libapt. I use a lot of
Synaptic code and it looks similar.
http://developer.berlios.de/dbimage.php?id=2164

This would be useful, but the problem is how to install local deb
packages. There have been a lot of threads about this in the forum and
even in the wiki. https://wiki.ubuntu.com/PackageManagement

The problem is libapt doesn't support local packages installation, so
Synaptic can't implement it easy.
Debins uses a trick to make the job, a local repository. It could be a
solution, but I think it is not very good solution to have a local
repository. It could grow too much.
So, I have been thinking and searching and I think, perhaps I have found
a solution.

DebViewer:
01. When you click a /file/to/install/name.deb DebViewer is started.
02. User checks package description (and other details if he wants).
03. If he decided to install it, it is warn: "THIS SOFTWARE IS NOT
SUPPORTED, BLA, BLA, BLA... "
04. If he is brave enough, he will click yes and DebViewer will call
"gksudo DebInstaller /file/to/install/name.deb"

DebInstaller:
01. Locks apt database
02. DebInstaller gets info from control file and build a new file like this:

Package: name
Version: 0.0-0
Priority: optional
Section: thesection
Maintainer: me <me at me.me>
Depends: libinstall1.0-0 (>= 1.9.0)
Architecture: i386
Filename: name.deb
Size: 100
Installed-Size: 150
MD5sum: 44f9abee24f7fc2d32adfe003bbde14d
Description: Dock any program into system tray
 With AllTray you can dock any application with no native tray icon
 into the system tray. A high-light feature is that a click on the
"close" button
 will minimize back to system tray. It works well with Gnome, KDE, XFCE 4*,
 Fluxbox* and WindowMaker*
 *no drag 'n drop support.

It must calc MD5sum (I don't know about what) and size. Other things are
taken from control
This file will be saved as"/var/lib/apt/lists/_file_to_install_Packages"
2. Add to "/etc/apt/sources.list":  "deb file:///file/to/install/ /"
3. Unlock apt-database
4. Now, we can install the package using apt, aptitude or synaptic! Not
need to do an "apt-get update".
    We could use synaptic using something like this (you should correct me):
      "/usr/sbin/synaptic --hide-main-window --non-interactive --set-selections name"
    It will install the package and:
    - if a newer version is available in repositories, it will use it.
    - if dependencies aren't solved, the package isn't installed.
    Synaptic will do the job and end.
5. Lock apt-database.
6. Delete from /etc/apt/sources.list "deb file:///file/to/install/ /"
7.Delete file "/var/lib/apt/lists/_file_to_install_Packages"
8. Unlock apt-database and that's all.

It works. I have installed opera to try this way to install deb
packages. It is complex, but easy to do. No need to make any changes in
apt or synaptic. No need to make a local repository. No need to copy the
file to another place. If you want to uninstall the package,
Synaptic->Installed (local or obsolet)

Some posible problems if something fails:
1. "_file_to_install_Packages" is created but line in sources.list is
not added. (
   No errors are generated by apt and the file will be deleted when
"apt-get update"
2. "sources.list" line is not deleted. There will be an error and user
should delete this from sources.list (or using
gnome-software-properties). Perhaps, we could add someting like
"#$$DELETE$ME$$" to the line, and we could delete it automatically when
gnome-software-properties starts, or when an "apt-get update" is done.
3. Sometimes you need to install more than one package at once... it
could be easy done for DebInstaller, but how should the gui to do these?

Well. What do you think about this?


		
______________________________________________ 
Renovamos el Correo Yahoo! 
Nuevos servicios, más seguridad 
http://correo.yahoo.es




More information about the ubuntu-devel mailing list