Ohjelmistossa voi olla vikaa myös paketoinnissa - joka siis voi olla levitys/distrokohtaista tai jopa versiokohtaista - ja se on ihmeen yleistä.
Kuten aiemmin irrlicht -keskustelussa tuli esiin, merkkikokoasiat tai casetus on yksi virheen syy paketointivaiheessa.
Yksi tapa etsiä CasetusVirHeitä automaattisesti on etsiä kaikki sanan kaltaiset merkkijonot kuten hakemistonimet, tiedostonimet ym. erimuotoisista tiedostoista ja luetella ne merkkijonot jotka esiintyvät kahdella eri casetustavalla. Siis jos tiedostoissa foo.sh ja foo.cpp on merkkijonot "KuvaHakemisto" ja "kuvahakemisto", se on vaaran merkki ja antaa syyn varoitusviestiin joka kertoo tiedostot ja rivinumerot missä se sana esiintyy eri casetuksilla.
Luultavasti myös binääreistä voi etsiä merkkijonovakioita, vai voiko?
Kuten aiemmin irrlicht -keskustelussa tuli esiin, merkkikokoasiat tai casetus on yksi virheen syy paketointivaiheessa.
Yksi tapa etsiä CasetusVirHeitä automaattisesti on etsiä kaikki sanan kaltaiset merkkijonot kuten hakemistonimet, tiedostonimet ym. erimuotoisista tiedostoista ja luetella ne merkkijonot jotka esiintyvät kahdella eri casetustavalla. Siis jos tiedostoissa foo.sh ja foo.cpp on merkkijonot "KuvaHakemisto" ja "kuvahakemisto", se on vaaran merkki ja antaa syyn varoitusviestiin joka kertoo tiedostot ja rivinumerot missä se sana esiintyy eri casetuksilla.
Luultavasti myös binääreistä voi etsiä merkkijonovakioita, vai voiko?
Vastaukset 6
Vanhimmat
”Ohjelmistossa voi olla vikaa myös paketoinnissa - joka siis voi olla levitys/distrokohtaista tai jopa versiokohtaista - ja se on ihmeen yleistä.”
Niinpä. On älytöntä, että jokaiseen distroon joudutaan paketoimaan erikseen jokainen softa. Toisaalta se Windowsin tyylinen päivytyshelvetti, jossa joka softalla on oma, silmille hyppivä päivitysagentti, on myös aika kamala.
Ratkaisu voisi olla jonkinlainen automaattinen, mutta hajautettu ja stantardoitu pakettienhallintajärjestelmä. Upstream-kehittäjät voisivat paketoida itse omat softansa. ZeroInstall on vähän sen tyyppinen järjestelmä, mutta ei ole oikein kovin suurta suosiota saavuttanut. Sitten on tuollainen PackageKit, joka pyrkii yhtenäistämään asoita, joskin valitettavan mutkikkaalla tavalla.
Tietysti. Ei siihen Windowsiinkaan käy esimerkiksi Mac OS X:n tai Ubuntun paketit.
Joopa joo. Ei millään ole tietenkään mitään väliä, kunhan Windows vain on vielä paskempi. Et vaikuta todelliselta teollisuusmieheltä.
Pakettijärjestelmän yhtenäistäminen olisi aivan järkevä veto nykyisenkaltaisessa tilanteessa, jossa on olemassa joukko keskenään binääriyhteensopivia käyttöjärjestelmiä. Saataisiin yksi työvaihe pois.
ZeroInstallkin on toisaalta vähän mutkikas. Mac OS X:n appdir on suhteellisen mukava. Ohjelman voi purkaa mihin huvittaa ja sen voi poistaa yksinkertaisesti poistamalla hakemiston. Mac OS X:ssä ei kuitenkaan ole keskitettyä päivityssysteemiä. Sellaisen voisi implementoida esimerkiksi siten, että jokainen appdir sisältäisi tiedon siitä, mistä softaan saa päivitykset ladattua. Keskitetyn päivityssysteemin konffitiedostoon sitten lisättäisiin (mahdollisesti jollain tapaa automaattisesti) kaikkien koneille asennettujen appdirien polku. Kun päivityskomento ajetaan, kaikki appdirit käytäisiin sitten läpi päivitysten varalta.
rpm on itseasiassa standardoitu LSB:ssä mutta se ei kaikille kelpaa. Lähinnä Debianille ja Ubuntulle.
Debian ja Ubuntu tukevat myös RPM:ää muuttamalla ne ensin deb-paketeiksi. Pelkkä pakettimuodon stantardointi ei riitä. Myös päivitysmekanismi olisi syytä stantardoida. Lisäksi niin RPM:ssä kuin debissäkin on se vika, että ohjelman asentaminen esim. kotihakemistoon ei oikein onnistu.
Kyse on todennäköisyyksistä. Jos on "miljoona" pakettia niin on niin suuria lukuja, että jossain on menty pieleen.