glibc-2.2.4

Jakub Bogusz qboosh w prioris.mini.pw.edu.pl
Śro, 17 Paź 2001, 01:00:23 CEST


On Tue, Oct 16, 2001 at 09:25:15AM +0200, Jakub Bogusz wrote:
> On Tue, Oct 16, 2001 at 07:12:46AM +0200, Ziemek Borowski wrote:
> > On Tue, Oct 16, 2001 at 01:58:04AM +0200, Jarosław Kamper wrote:
> > > < sudo rpm -Uvh /var/cache/apt/archives/glibc_2.2.4-5_i686.rpm
> > 
> > znany blad. ktos go juz omawial. Jakis problem z symlinkami z 
> > makrem %lang w rpmie. 
> 
> Z hardlinkami. rpm chce tworzyć dla danego pliku albo wszystkie, albo
> żaden. I to jest ustalane na etapie tworzenia binarnego .rpm, a nie
> instalowania.
> 
> > (oczywiscie alternatywa jest np. wyrzucenie %lang ze speca ale to raczej
> > nie wchodzi w rachube).
> 
> Poprawienie rpm - chyba wiem gdzie - tylko bym musiał potestować, czy to
> czegoś nie popsuje - z jakiegoś powodu w rpm-ie jest kawałek kodu
> (~kilkadziesiąt linijek) odpowiedzialny za takie zachowanie rpm-a.

Chodzi o funkcję checkHardLinks() w build/files.c.
I już wiem dlaczego to było zrobione - ale to jak widać to nie jest
poprawne rozwiązanie problemu hardlinków.

Usunąłem na próbę tę funkcję (wstawiłem return; na początku),
przebudowałem rpm-a, po zainstalowaniu przebudowałem glibc. Pakiet
wyglądał już dobrze pod względem oznaczeń %lang
( tzn. rpm --qf '[%{FILENAMES} : %{FILELANGS}\n]' dawało to co
chciałem), ale przy próba instalowania kończyła się "cpio error: Missing
hard link". Jest tak dlatego, że zawartość pliku mającego hardlinki jest
w *io zapisywana raz, przy jednym wystąpieniu pliku. I jeżeli akurat ta
instancja nie będzie instalowana (bo %lang nie zawiera się
w %_install_langs), to rpm w ogóle nie tworzy pliku, ani hardlinków do
niego.

IMO prawidłowe rozwiązanie to nie checkHardLinks (ta funkcja jest do
wywalenia - ale po poprawieniu tego co trzeba), ale bardziej
inteligentne tworzenie hardlinków - czyli jeżeli zawartość pliku
mającego hardlinki jest umieszczona przy pliku, który ma nie być
instalowany, to trzeba sprawdzać, czy jakiś hardlink do niego nie ma być
zainstalowany i wtedy zapisać go pod inną nazwą (pliku, który ma być
instalowany)...

ufff... nie wiem na ile zrozumiałe to wyszło, ale prościej nie umiem.


-- 
Jakub Bogusz
http://prioris.mini.pw.edu.pl/~qboosh/



Więcej informacji o liście dyskusyjnej pld-devel-pl