Daily blurbs Feb. 2005

Plans

daily blurbs


20 Feb 2005 (Sun)

19:06:15 # Life Checking out DDP to my local directory. I've done cvs -z3 -d:ext:gluck.debian.org:/cvs/debian-doc co ddp to start working on DDP. ... It's rather large.

13 Feb 2005 (Sun)

18:05:13 # Debian "It's improper to write versioned conflicts, you can see it in policy." "How so?" A non-debian-geek wouldn't grok this conversation, but what does this mean?

'Conflicts' is a field in Debian package control field for expressing dependency. The name of packages a package will not coexist is listed there. Package management tools like apt and dpkg will use the information.

In Debian, it is quite difficult to express a situation where a package is not required but is required to be greater than a specific version for proper operation. For example, consider a case where a functionality fixed in the later version of a package is required for proper interaction between the two packages. Specifying in Depends field is not optimal; since that would require the installation of package always. When specifying the old version in the Conflicts field, as Conflicts: package (<< version), that would require package management tools to remove the package once to satisfy the conflicts, and then reinstall.

The Conflicts dependency is satisfyable by both upgrading and removing, and the behavior of removing the package is not illogical. However, the requirement of the developer who wrote the dependency is not quite so; it is to specify 'at least this version'.

In future cases, if there are more similar cases, a new field is required.

11 Feb 2005 (Fri)

15:51:51 # Life After the long trip, and being back home in Japan. I'm a bit exhausted after all the trip, and trying to recover from the jet-lag I am avoiding to use the PC too much at night; because if I touch a machine I will be carried away and not sleep at night, which will elongate the sufferings of a jet lag. Or so I believe. How do other hackers cope with jet lags? Do they just never notice what position the Sun is in outside the building?

7 Feb 2005 (Mon)

00:15:21 # Life There was a discussion on dh_strip keep-debug option. dh_strip has had an option to keep debug symbols off to a different file rather than removing it when stripping, facilitating the creation of debug packages. There are two points to the discussion

This is caused by binutils starting to support separate debug symbols scheme.

5 Feb 2005 (Sat)

23:00:13 # Debian "It's a serious bug if a binary gives out an error when there is not enough packages listed in a Depends field". It is a claim that people who do not know Debian won't understand. What does it mean to have a lacking Depends field?

Depends is one of the control fields of a Debian package. Having a list of packages in the Depends field will make tools like apt to ensure that these required packages exist when the package is installed. Some information such as shared library dependency can be obtained automatically at package build time, but mostly maintenance of Depends field relies on manual action from individual maintainers. If a package is found to not function without installing an extra package, that package is added to the Depends field. With this effort from the maintainer side, a package which "just works" after apt-get install is produced.

There sometimes are problems which cannot be avoided from the package side. For example, automatically obtaining shared library dependency information is possible, but if there is change on the shared library package side, it may alter programs to be unexecutable. A collection of known problems and best practices are collected to libpkg-guide. There surely will be more problems to come in the future, but hopefully this document will be kept up-to-date as to what is happening with Debian and what is known to be the best practice.

The following is a sample of a problem with shared library.

$ cat a.c
main()
{
	test();
}

$ cat b.c
test()
{
}
	

An example output of when a shared library cannot be found.

$ gcc -shared b.c -o libb.so
$ gcc -L /test -l b a.c
$ ./a.out
./a.out: error while loading shared libraries: libb.so: cannot open shared object file: No such file or directory
	

An example output of when a shared library is missing a symbol and program fails to execute

$ vi b.c    # delete symbol here
$ gcc -shared b.c -o libb.so   # recompile the shared library
$ LD_LIBRARY_PATH=. ./a.out
./a.out: relocation error: ./a.out: undefined symbol: test
	

22:09:42 # Life Debian Dinner last night with Aaron Ucko and his significant other, and Anthony DeRobertis. Are we too geeky?

23:06:47 # Life I've been writing in my Japanese side of this blog an article a day on a random Debian term. The aim of this is to take up an aspect of Debian, and give consideration to what it is, and consider what could be done to improve that point.

It has so far been a refreshing excercise, and my idea now is to extend it to my English side of the blog. Hopefully that would once again excercise my skill in writing in English. Comments welcome; through email, or leaving some referer links by linking to my blog.

1 Feb 2005 (Tue)

09:15:52 # Life Wow, network connection is back up; nice to be back online.


Junichi Uekawa

$Id: 200502.html.en,v 1.6 2005/02/20 10:06:46 dancer Exp $