Takie różne uwagi dopieszczające

Marcin 'Qrczak' Kowalczyk qrczak w knm.org.pl
Sob, 26 Wrz 1998, 17:42:17 CEST


Skoro to ma być takie porządne, to wydaje mi się, że na koniec warto by
wymyśleć, co da się sprawdzić zupełnie automatycznie, hurtem, a mogło ujść
uwadze. Na przykład:

1. Czy któryś spec odwołuje się do /sbin/install-info albo /sbin/chkconfig
   bez Prereq?

2. Gdzie brakuje polskich tłumaczeń? Wywiesić listę, niech ludzie dodadzą.

3. Czy atrybut czegoś w %files jest nieokreślony?

4. Jeśli przyjmujemy jednoznaczne stanowisko względem `install -d' kontra
   `mkdir -p', to czy nic się z tego nie wyłamuje?

5. Czy gdzieś jest cośtam=$RPM_OPT_FLAGS zamiast cośtam="$RPM_OPT_FLAGS"?
   Spotkałem ten błąd w paru pakietach z RedHat{a,-contrib}.

6. Czy gdzieś brakuje odwołania do $RPM_OPT_FLAGS? Ale to nie musi być błąd
   (np. raz znalazłem to w patchu).

7. Brak BuildRoot chyba byłby zauważony natychmiast, no i wyjdzie
   w praniu - nie, to jest zbyt banalne.

8. Może gdzieś plik z /etc nie jest %config?

9. Jeśli należy ustalić, że ma nie być Packagerów bezpośrednio w specu,
   a są, to wywalić.

10. Jeśli jednoznacznie decydujemy się na nazwę speca postaci %{name}.spec
    albo %{name}-%{version}.spec, to sprawdzić, czy coś się nie wyłamuje.
    Ja konsekwektnie używam %{name}.spec - mam nadzieję, że dobrze...

11. Może pozostał jakiś %setup bez -q?

12. Jeśli decydujemy się na jednolity format odstępów i znaków
    przestankowych w %changelogu, to wygładzić.

13. Jeśli jakiś spec ma spacje na końcu linii, to usunąć :-)

14. Jeśli decydujemy się na jednolite sformatowanie nagłówków w specu...

15. Jeśli decydujemy się na BuildRoot: /var/tmp zamiast /tmp... i w ogóle
    nazwa katalogu z BuildRootem - pewnie nigdzie nie ma powodu, żeby
    różniła się od /var/tmp/%{name}-%{version}-root - no, chyba że /var
    ma być noexec, wtedy nie wiem.

16. Jeśli gdzieś brakuje rm -rf $RPM_BUILD_ROOT w %install albo w %clean...

17. Czy każdy devel requires: %{name} = %{version}, a %{static} requires:
    %{name}-devel = %{version}?

Większość z powyższego można załatwić prostymi kombinacjami grepa czy
perla. Pewnie najprościej jednym skrypem w perlu, który czyta speca,
parsuje sekcje i pola nagłówka, po czym wykonuje serię testów. A może
warto by dać taki skrypt obok opracowanych i spisanych w jednym miejscu
reguł przyzwoitości pakietów - zdaje się, że Debian ma coś takiego, więc
i my powinniśmy.

Druga faza - po zainstalowaniu wszystkiego od zera - czy binarki
stripnięte, czy nikt nie przywłaszczył sobie katalogu /usr/bin albo
podobnego, czy każdy katalog /usr/doc/* jest czyjś, czy w żadnym pliku nie
pojawia się tekst /var/tmp (pewnie mało gdzie ma prawo, a mogło pozostać
z czegoś źle przystosowanego do BuildRoot), czy coś się nie zlinkowało
statycznie bez potrzeby, czy nie pozostało gdzieś COPYING albo
niepotrzebne INSTALL... A niczyje katalogi sprywatyzować - może któryś
powstał niejawnie. Upewnić się, że wszystkie (?) symlinki są względne
(u mnie w Redhacie niektóre nie są, a powinny) - program symlinks.

A tak ogólnie, już nie automatycznie... Po uzgodnieniu treści profile
i odpowiedników bashrc sprawdźmy ewentualne wersje przychodzące z różnymi
szelami. Uzupełnijmy komentarze w /etc/*. Sprawdźmy sens kolejności
wywoływania /etc/rc.d/rc*.d/*; ewentualnie dostosujmy wszystko do
chkconfig.

Mam nadzieję, że przynajmniej część z tych rzeczy nie przyszłaby właściwej
osobie do głowy :-)

-- 
 __("<   Marcin Kowalczyk * qrczak w knm.org.pl http://qrczak.home.ml.org/
 \__/       GCS/M d- s+:-- a21 C+++>+++$ UL++>++++$ P+++ L++>++++$ E->++
  ^^                W++ N+++ o? K? w(---) O? M- V? PS-- PE++ Y? PGP->+ t
QRCZAK                  5? X- R tv-- b+>++ DI D- G+ e>++++ h! r--%>++ y-



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