Pakettien tarkistusohjeet

Tämä on joukko pakettiarvioita koskevia ohjeita. Huomaa, että täydellinen luettelo tarkistettavista asioista olisi mahdotonta, mutta asiakirja on pyritty tekemään mahdollisimman kattavaksi. Arvioijien ja avustajien (pakkaajien) tulisi käyttää parasta harkintaansa aina, kun tuotteet ovat epäselviä, ja jos olet epävarma, kysy Fedora -paketointiluettelosta.

Pakettien tarkistusprosessi

Avustajien ja arvostelijoiden PITÄÄ noudattaa Pakettien tarkistusprosessi seuraavin poikkeuksin:

  • FPC myöntää nimenomaisen vapautuksen prosessista, kuten on ilmoitettu tässä.

  • Pakettia ollaan luomassa siten, että saman paketin useita versioita voi esiintyä rinnakkain jakelussa (tai rinnakkain EPEL:n ja RHEL:n välillä). Paketti on PITÄÄ nimetä oikein xref: Naming.adoc # _multiple_packages_with_the_same_base_name [nimeämisohjeet] mukaan ja EI SAA olla ristiriidassa saman paketin kaikkien muiden versioiden kanssa.

  • Paketti on olemassa sekä Fedorassa että RHEL:ssä, mutta pakkaaja haluaa lähettää sen EPEL:ssä vaihtoehtoisella nimellä (kuten EPEL:n käytäntö edellyttää) alipaketin tarjoamiseksi. joka on olemassa Fedorassa, mutta jota ei ole (tai ei toimiteta) RHEL:ssä.

Tarkastettavia asioita

Tarkistettavaksi on monia asioita. Tämän luettelon tarkoituksena on auttaa uusia arvostelijoita tunnistamaan alueet, joita heidän tulisi etsiä, mutta se ei ole missään nimessä täydellinen. Tarkastajien tulisi käyttää omaa harkintaansa arvioidessaan paketteja. Luetellut tuotteet jaetaan kahteen luokkaan: PITÄISI ja PITÄÄ.

  • PITÄÄ: rpmlint on suoritettava lähdekierrosluvulla ja kaikki rakennuksen tuottamat binääriset rpms. Tulos tulisi julkaista review.footnote: [xref: index.adoc # _use_rpmlint [Pakkausohjeet: Käytä rpmlint \]]

  • * PITÄÄ *: Paketin nimi on oltava xref: Naming.adoc[Package Naming Guidelines].

  • PITÄÄ: Tiedotiedoston nimen on vastattava peruspakettia "% {name} +" muodossa "% {name} .spec +", ellei paketillasi ole poikkeusta. alaviite: [xref: index.adoc # _spec_file_naming [Pakkausohjeet: Spec File Naming \]].

  • PITÄÄ: Paketin on täytettävä xref: index.adoc [Pakkausohjeet].

  • PITÄÄ: Paketilla on oltava Fedoran hyväksymä lisenssi ja sen on täytettävä xref: LicensingGuidelines.adoc [Lisenssiohjeet] .

  • PITÄÄ: Pakettikohtaisen tiedoston lisenssikentän on vastattava todellista lisenssiä. alaviite: [xref: LicensingGuidelines.adoc # _valid_license_short_names [Lisenssiohjeet: Voimassa olevat lisenssin lyhytnimet \]]

  • PITÄÄ: Jos (ja vain jos) lähdepaketti sisältää lisenssin (lisenssien) tekstin omassa tiedostossaan, tiedosto, joka sisältää paketin lisenssin tai lisenssien tekstin, on sisällytettävä `+% lisenssi + `.footnote: [xref: LicensingGuidelines.adoc # _license_text [Lisenssiohjeet: Lisenssiteksti \]]

  • PITÄÄ: Spec-tiedosto on kirjoitettava amerikanenglanniksi. alaviite: [xref: index.adoc # _summary_and_description [Pakkausohjeet: Yhteenveto ja kuvaus\]]

  • PITÄÄ: Paketin PITÄÄ -tiedoston on oltava luettavissa. alaviite: [xref: index.adoc # _spec_legibility [Pakkausohjeet: Spec Luettavuus\]]

  • PITÄÄ: Paketin luomiseen käytettyjen lähteiden on vastattava alkupään lähdettä, kuten URL-osoitteessa ilmoitetaan. Tarkastajien on käytettävä tehtävään sha256sum, koska git-tiedostoon tuotu tiedosto `` + sources + ’käyttää sitä. Jos tälle paketille ei voida määrittää ylävirran URL-osoitetta, katso xref: SourceURL.adoc [Lähde-URL-ohjeet], miten käsitellä tätä pakettia..

  • * PITÄÄ*: Paketti PITÄÄ kääntää ja rakentaa binäärisiksi rpms :iksi vähintään yhden ensisijaisen arkkitehtuurin. alaviite: [xref: index.adoc # _architecture_support [Pakkausohjeet: Arkkitehtuurin tuki\]]

  • PITÄÄ: Jos paketti ei pysty kootamaan, rakentamaan tai toimimaan arkkitehtuurin parissa, kyseiset arkkitehtuurit tulisi luetella ExcludeArch -tietokannassa. Jokaisella ExcludeArch PITÄÄ olla bugzillaan tallennettu vika, joka kuvaa syytä, miksi paketti ei koota/rakenta/toimi kyseisellä arkkitehtuurilla. Vian numero PITÄÄ sijoittaa kommenttiin vastaavan ExcludeArch-rivin viereen. alaviite: [xref: index.adoc # _architecture_build_failures[Pakkausohjeet: Arkkitehtuurin koontivirheet\]]

  • PITÄÄ: Kaikki koontiversiot on lueteltava kohdassa "BuildRequires". alaviite: [xref: index.adoc # buildrequires[Pakkausohjeet: Rakennusajan riippuvuudet (BuildRequires)\]]

  • PITÄÄ: Spec-tiedoston PITÄÄ käsitellä lokaleja oikein. Tämä tehdään käyttämällä makroa %find_lang macro. Using `%{_datadir}/locale/*`käyttö on ehdottomasti kielletty. Jalan huomautus: [xref: index.adoc # _handling_locale_files[Pakkausohjeet: Kielitiedostojen käsittely\]]

  • PITÄÄ: Paketit EI saa niputtaa järjestelmäkirjastojen kopioita. Jalkahuomautus: [xref: index.adoc # niputus [Pakkausohjeet: Järjestelmäkirjaston niputtaminen ja kopiointi)s\]]

  • TÄYTYY: Jos paketti on suunniteltu siirrettäväksi, pakkaajan on mainittava tämä seikka tarkistuspyynnössä sekä kyseisen paketin uudelleensijoittamisen järkeistäminen. Ilman tätä etuliitteen: / usr käyttöä pidetään estäjänä. alaviite:[xref: index.adoc # _relocatable_packages [Pakkausohjeet: Siirrettävät paketit\]]

  • PITÄÄ: Paketin on omistettava kaikki luomansa hakemistot. Jos se ei luo hakemistoa, jota se käyttää, sen on vaadittava paketti, joka luo kyseisen hakemiston. alaviite: [xref: index.adoc # _file_and_directory_ownership[Pakkausohjeet: Tiedoston ja hakemiston omistajuus\]]

  • PITÄÄ: Fedora-paketti ei saa luetella tiedostoa useammin kuin kerran spec-tiedoston% files -luettelossa. (Huomattava poikkeus: lisenssitekstit tietyissä tilanteissa) alaviite: [xref: index.adoc # _duplicate_files[Pakkausohjeet: Kopioi tiedostoja\]]

  • PITÄÄ: Tiedostojen käyttöoikeudet on asetettava oikein. Suoritettavat tiedostot tulisi asettaa esimerkiksi suoritettavilla käyttöoikeuksilla. alaviite: [xref: index.adoc # _file_permissions[Pakkausohjeet: Tiedoston oikeudet\]]

  • PITÄÄ: Jokaisen paketin on käytettävä jatkuvasti makroja. alaviite: [xref: index.adoc # _macros[Pakkausohjeet: Makrot\]]

  • PITÄÄ: Paketin on sisällettävä koodi tai sallittu sisältö. alaviite: [xref: what-can-be-packaged.adoc[Mitä voidaan pakata\]]

  • PITÄÄ: Suurten dokumenttitiedostojen on oltava -doc-alipaketissa. (Suuren määritelmä jätetään pakkaajan parhaan harkinnan mukaan, mutta ei rajoitu kokoon. Suuri voi viitata joko kokoon tai määrään). alaviite: [xref: index.adoc # _documentation[Pakkausohjeet: Dokumentaatio\]]

  • PITÄÄ: Jos paketti sisältää jotain tiedostona% doc, se ei saa vaikuttaa sovelluksen ajonaikaan. Yhteenvetona: Jos se on %doc:ssa, ohjelman on suoritettava oikein, ellei sitä ole läsnä. alaviite: [xref: index.adoc # _documentation[Pakkausohjeet: Dokumentaatio\]]

  • PITÄÄ: Staattisten kirjastojen on oltava staattisessa paketissa. alaviite: [xref: index.adoc # packaging-static-libraries[Pakkausohjeet: Staattisten kirjastojen pakkaaminen\]]

  • PITÄÄ: Kehitystiedostojen on oltava -devel-paketissa. alaviite: [xref: index.adoc # _devel_packages[Pakkausohjeet: Kehityspaketit\]]

  • PITÄÄ: Suurimmassa osassa tapauksia devel-pakettien on vaadittava peruspakettia käyttäen täysin versioitua riippuvuutta: Requires: %{name}%{?_isa} = %{version}-%{release} [1]

  • PITÄÄ: Paketit eivät saa sisältää .la libtool -arkistoja, ne on poistettava spesifikaatioista, jos ne on rakennettu.[2]

  • PITÄÄ: GUI-sovelluksia sisältävissä paketeissa on oltava% \ {name} .desktop-tiedosto, ja kyseisen tiedoston on oltava asennettuna oikein asennettuna desktop-file-install-osioon% install. Jos sinusta tuntuu, että pakattu GUI-sovelluksesi ei tarvitse .desktop-tiedostoa, sinun on lisättävä kommentti Spec-tiedostoon selityksesi kanssa. alaviite: [xref: index.adoc # _desktop_files[Pakkausohjeet: Työpöytätiedostot\]]

  • PITÄÄ: Paketit eivät saa omistaa tiedostoja tai hakemistoja, jotka ovat jo muiden pakettien omistuksessa. Nyrkkisääntö on, että ensimmäisen asennettavan paketin tulisi omistaa tiedostot tai hakemistot, joihin muut paketit voivat luottaa. Tämä tarkoittaa esimerkiksi sitä, että mikään Fedoran paketti ei saa koskaan jakaa omistajuutta mihinkään tiedostoon tai hakemistoon, jonka omistaa paketti tiedostojärjestelmä tai man `. Jos sinusta tuntuu, että sinulla on hyvä syy omistaa tiedosto tai hakemisto, jonka toinen paketti omistaa, esitä se paketin tarkistusajankohtana. alaviite:[xref: index.adoc # _file_and_directory_ownership[Pakkausohjeet: Tiedoston ja hakemiston omistajuus\]]

  • PITÄÄ: Kaikkien rpm-paketeissa olevien tiedostojen nimien on oltava kelvollisia UTF-8. alaviite: [xref: index.adoc # _non_ascii_filenames [Pakkausohjeet: Muut kuin ASCII-tiedostonimet\]]

  • PITÄÄ: Jakeluun lisättävät paketit EI SAA riippua paketeista, jotka on merkitty vanhentuneiksi. alaviite: [xref: deprecating-package.adoc[Deprecating Packages\]]


  • PITÄISI: Jos lähdekoodipaketti ei sisällä lisenssitekstejä erillisinä tiedostoina ylävirtaan, paketin PITÄÄ kysyä ylävirtaan sisällyttääkseen sen. alaviite: [xref: LicensingGuidelines.adoc # _license_text[Lisenssiohjeet: Lisenssiteksti\]]

  • PITÄISI: Pakettien teknisten tiedostojen kuvaus- ja yhteenveto-osioiden tulisi sisältää käännöksiä tuetuille muille kuin englanninkielisille kielille, jos ne ovat saatavilla. alaviite: [xref: index.adoc # _summary_and_description[Pakkausohjeet: Yhteenveto ja kuvaus\]]

  • PITÄISI: Tarkastajan tulisi testata, että paketti rakentaa pilkkaa. alaviite: [Mockin käyttö pakettien koontiversioiden testaamiseen]

  • PITÄISI: Paketin tulisi kääntyä ja rakentaa binäärisiksi rpm :eiksi kaikissa tuetuissa arkkitehtuureissa. alaviite: [xref: index.adoc # _architecture_support[Pakkausohjeet: Arkkitehtuurin tuki\]]

  • PITÄISI: Tarkastajan tulisi testata, että paketti toimii kuvatulla tavalla. Paketin ei tulisi erota esimerkiksi suorituksen sijasta.

  • PITÄISI: Jos käytetään komentosarjoja, niiden tulee olla järkeviä. Tämä on epämääräistä ja jätetään arvostelijoiden päätettäväksi järkevyyden määrittämiseksi. alaviite: [xref: index.adoc # _scriptlets[Pakkausohjeet: Sovelmat\]]

  • PITÄISI: Yleensä muiden alipakettien kuin develin on vaadittava peruspakettia käyttäen täysin versioitua riippuvuutta. alaviite: [xref: index.adoc # _requiring_base_package[Pakkausohjeet: Peruspakettia vaaditaan\]]

  • PITÄISI: pkgconfig (.pc) -tiedostojen sijoittelu riippuu niiden käyttötavasta, ja tämä on yleensä kehitystarkoituksia varten, joten se tulisi sijoittaa -devel pkg: hen. Kohtuullinen poikkeus on, että tärkein paketti itse on kehitystyökalu, jota ei ole asennettu käyttäjän ajonaikaan, esim. gcc tai gdb. alaviite: [xref: index.adoc # _pkgconfig_files_foo_pc[Pakkausohjeet: Pkgconfig-tiedostot\]]

  • PITÄISI: Jos paketilla on tiedostojen riippuvuuksia / etc: n ulkopuolella, / bin, / sbin, / usr / bin tai / usr / sbin harkitse paketin, joka toimittaa tiedoston, itse tiedoston sijaan. alaviite: [xref: index.adoc # _file_and_directory_dependencies[Pakkausohjeet: Tiedostojen ja hakemistojen riippuvuudet\]]

  • PITÄISI: pakettisi tulisi sisältää manuaalisia sivuja binääreille / skripteille. Jos se ei onnistu, lisää ylävirtaan lisätäksesi ne mihin sillä on järkeä. Jalkahuomautus: [xref: index.adoc # _manpages[Pakkausohjeet: Manpages\]]

Huomautus riippuvuuksista

Usein on hyödyllistä toimittaa paketti tarkistettavaksi yhdessä sen riippuvuuksien kanssa erillisinä lippuina. Niin kauan kuin lähettäjä määrittää bugzillan riippuvuudet: ja estää: -kentät oikein, tämä ei ole ongelma, ja on täysin mahdollista tarkistaa nämä paketit ennen kuin koko riippuvuusketju on jakelussa (ylläpitämällä paikallista arkistoa, pakettien rakentaminen ja asentaminen paikallisesti tai Coprin ylläpito).

Muista kuitenkin, että et voi tehdä koji-koontiversioita, jos kaikki koontiversiot eivät täyty (koska et voi tarjota lisäriippuvuuksia kojille) ja kun on aika rakentaa nämä paketit, ne on rakennettava järjestyksessä ja sinun on odota rakenteiden välillä riippuvuuksia saadaksesi sen jakelun sopivaan haaraan. Kehityshaaralle (Rawhide) tämä tapahtuu usein ja se voidaan automatisoida ketjurakenteilla, mutta vapauttamista varten jokaisen paketin on saatava se vakaana ennen kuin ketjun seuraava paketti voidaan rakentaa.

Huomaa myös, että vaikka saatat pystyä todella rakentamaan paketin, koska kaikki sen rakennusajan riippuvuudet täyttyvät, paketti voi silti olla asentamaton (ja siten hyödytön), jos sen runtime riippuvuudet eivät täyty. Pakettia EI TULE rakentaa, jos jokin sen ajonaikaisista riippuvuuksista on tyytymätön.

Viitteet Fedoran pakkausohjeisiin