Millon m$ aikoo vapauttaa käyttäjät winukan
dll -helvetistä?
On se kumma, kun jokainen koneessa käynytkin
ohjelma jättää koneeseen tusinan dll:ä joita
ei sitten enää tarvita, mutta ei niitä poistetakkaan vaikka softa lähtee.
Dll:t on vielä nimetty varsin havainnollisesti,
esim. omfeacpi.dll, koko winukan rekisteri ja
dll -systeemi ovat haisevia paskoja.
dll -helvetistä?
On se kumma, kun jokainen koneessa käynytkin
ohjelma jättää koneeseen tusinan dll:ä joita
ei sitten enää tarvita, mutta ei niitä poistetakkaan vaikka softa lähtee.
Dll:t on vielä nimetty varsin havainnollisesti,
esim. omfeacpi.dll, koko winukan rekisteri ja
dll -systeemi ovat haisevia paskoja.
Vastaukset 12
Vanhimmat
Ainakin tuolta http://www.ccleaner.com/ saatavalla ilmaisella ohjelmalla saa viittaukset orpoihin dll tiedostoihin pois rekisteristä. Vastaavia ohjelmia on n 1 kpl, myös ilmaisia.
Haku "orphan dll files" tuotti 16500 osumaa kuuklella ja heti ensimmäisellä sivulla oli muutama poisto ehdotus. Jos kovalevy on vähänkään säädyllisen kokoinen niin tällaisen takia ei jaksa vaivautua.
Komentotulkkiin voi kirjoittaa sfc /? joka kertoo että:
c:\>sfc /?
Microsoft(R) Windows XP Järjestelmätiedostojen tarkistus, versio 5.1
(C) 1999 - 2000 Microsoft Corp. Kaikki oikeudet pidätetään.
Tutkii kaikki suojautut järjestelmätiedostot ja korvaa väärät versiot oikeilla.
SFC [/SCANNOW] [/SCANONCE] [/SCANBOOT] [/REVERT] [/PURGECACHE] [/CACHESIZE=x]
/SCANNOW Tutkii suojatut järjestelmätiedostot heti.
/SCANONCE Tutkii suojatut järjestelmätiedostot seuraavan
käynnistyksen yhteydessä.
/SCANBOOT Tutkii suojatut järjestelmätiedostot jokaisen
käynnistyksen yhteydessä.
/REVERT Palauttaa ohjelman oletusasetukset.
/PURGECACHE Tyhjentää tiedostovälimuistin.
/CACHESIZE=x Määrittää välimuistin koon.
Tällainen ominaisuus on ollut olemassa jo W2k:sta lähtien
Ja sitten:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/windows_file_protection_on_windows_2000_and_windows_xp.asp
Ja sitten vielä:
Windows 2000 and XP are designed to let software developers install required DLLs in their own application folders and mark them as "not" sharable. Thus, even if a DLL by the same name is already open and in use, the application will use its own version of the DLL instead. These later operating systems also monitor DLLs being replaced and may prevent an erroneous replacement.
Eli mitä vielä puuttuu?
Tuota tarkoitan, että Windows on suunniteltu
paskasti!
Missään Unix järjestelmässä ei koskaan
ole tarvinnut moista operaatiota tehdä.
Ei GNU/Linuxeissa, ei *BSD:ssä ...
>Eli mitä vielä puuttuu?
Yksi puuttuu ja sen mukana kaikki eli riippuvuustarkastelu.
Winukan softat ei tunnista kirjastojaan muuta kuin nimen perusteella ja sitten kun liikkeellä on puolenkymmentä samannimistä DLL:ää niin soppa on valmis.
Kuinka tuttu onkaan virheilmoitus: "@sitä_ja _tätä was not found in xxxx.dll" ?
Orpojen poisto auttaa vain levytilan vapauttamiseen, ei mihinkään muuhun.
Pyydä jotakuta englannin kielen taitoista suomentamaan alkuperäisessä tekstissä oleva viimeinen argumentti.
>Pyydä jotakuta englannin kielen taitoista...
Olen päivittäin puhelinkontaktissa englantia käyttävien kanssa joten uskoisin kielitaitoni riittävän noinkin yksinkertaiseen lausahdukseen. :)
Jospa minä vähän suomennan sinullekin:
"...are designed to let software developers ..."
Tässä on se olennainen puute. Sanotaan että "to let = on mahdollista" kun pitäisi olla "to enforce = pakotetaan".
Toisaalta "may prevent an erroneous replacement." kun pitäisi olla "definitely prevents an erroneous replacement."
Ei siis "saattaa estää" vaan "varmsti estää "
Jos olet Windowsiin ohjelmia asentanut niin tiedät että tuo omiin kansioon asentaminen on ollut mahdollista jo 3.11:sta lähtien mutta moniko softan tekijä sitä on käyttänyt. Se on ollut ja on edelleen ainoa ratkasu jos koneella on softia jotka vaativat eri version samasta DLL:stä. Jos tuo olisi aikanaan tiedostettu, mistään "dll-helvetistä" ei kukaan puhuisi mitään.
Windows 2000 and XP are designed to let software developers install required DLLs in their own application folders and mark them as "not" sharable.
Muutetaan ehdotettuun muotoon:
Windows 2000 and XP are designed to enforce software developers install required DLLs in their own application folders and mark them as "not" sharable.
Onko järkevä lause? Jos tilanne olisi tämä niin kerro mitä hyötyä dll tiedostoista olisi?
These later operating systems also monitor DLLs being replaced and may prevent an erroneous replacement.
Tässä kirjoittaja on ollut varovainen, tarvitaan jo väkivaltaa että näin käy ja tämä tilanne on suhteellisen helposti korjattavissa kun kyse on sfp:stä.
Aikaisemmissa Windowseissa ei ollut mahdollista että saman niminen mutta eri versiota oleva dll oli ladattuna muistiin yhtä aikaa.
Missä käyttöjärjestelmässä voi samassa hakemistossa olla kaksi täysin samalla nimellä olevaa tiedostoa yhtäaikaa?
DLL Hell
Let's take a brief look at this issue which used to give many headaches to System Administrators and Code Writers. There is no need to panic listening to something called "DLL Hell" as this problem is now totally eliminated with .NET Framework 1.1. It's good to know what used to happen before with the deployed applications, the way they used to behave when new version of an existing application was installed and what exactly is "DLL Hell" and so on.
Artikkelissa on keskitytty vain palvelin käyttikseen mutta .NET Framework 1.1 on asennettuna omassa koneessani (XP home)
Koko juttu löytyy täältä
http://www.startvbdotnet.com/extras/dhell.aspx
Vanhemmilla sovelluskehittimillä tehdyillä softilla "dll hell" voi vielä olla jonkin moinen ongelma mutta niihin löytyy työkaluja. Seuraavassa linkissä on myös .net ratkaisu ja työkalut ja ohjeet vanhemmille softille.
http://msdn.microsoft.com/msdnmag/issues/02/06/debug/
Vastakysymys: Koska linuksista poistuu vastaavat ongelmat?
Results 1 - 10 of about 12,600 for "dll hell" xp. (0.20 seconds)
Results 1 - 10 of about 107,000 for rpm hell linux. (0.16 seconds)
Results 1 - 10 of about 10,200 for "dependency hell" linux. (0.15 seconds)
Ymmärrän hyvin että linuks porukalla on ikävä vanhoja dos pohjaisia 9x Windowseja kaatumisineen ja sekoilemisineen, silloin linuksista ylenmääräiseen vaahtoamiseen oli vielä järkeenkäyviä perusteita.
Niitähän tämäkin kirjoittaja yrittää vielä lämmitellä.
Jatkuvasti
"Kuinka tuttu onkaan virheilmoitus: "@sitä_ja _tätä was not found in xxxx.dll" ?"
Aloittelijat palstakin on ihan pullollaan juuri tätä virheilmoitusta.
"Orpojen poisto auttaa vain levytilan vapauttamiseen, ei mihinkään muuhun."
Aivan oikein, ja saa olla merkillinen määrä softia että tavallisen halvan kotitietokoneenkaan kovalevy niistä vähääkään pullistelisi eli minä en ainakaan vaivaudu tutkimaan mokomaa asiaa.
>... niin kerro mitä hyötyä dll tiedostoista olisi?
Ota nyt jo järki käteen :)
Tietysti tuosta lauseesta saa väännettyä alyttömän jos niin haluaa
> ...samassa hakemistossa olla kaksi täysin samalla nimellä olevaa tiedostoa yhtäaikaa?
Miksi pitää olla samalla nimellä keskenään ristiriitaisia kirjastoja
>...this problem is now totally eliminated with .NET Framework 1.1
Jos näin on, se on osoitus siitä että kyllä kyllä mäsäkin on valmis oppimaan kun on valmis esimerkki mistä katsoa mallia.
>Niitähän tämäkin kirjoittaja yrittää vielä lämmitellä.
Otahan ja kokeile Linuxia niin et tipahda kelkasta.
Tulokset 1 - 10 noin 609 osuman joukosta haulle "rpm hell" linux. (0,21 sekuntia)
Tulokset 1 - 5 kaikkiaan 5 osuman joukosta haulle "rpm hell linux". (0,28 sekuntia)
---------------------------------
Tulokset 1 - 10 noin 89 100 osuman joukosta haulle dll hell xp. (0,16 sekuntia)
Tulokset 1 - 10 noin 166 000 osuman joukosta haulle dll hell windows. (0,20 sekuntia)
Tulokset 1 - 10 noin 2 940 000 osuman joukosta haulle windows crash. (0,20 sekuntia)
Tulokset 1 - 10 noin 822 000 osuman joukosta haulle windows xp crash. (0,33 sekuntia)
Tulokset 1 - 10 noin 12 700 000 osuman joukosta haulle windows not working. (0,20 sekuntia)
Tulokset 1 - 10 noin 2 640 000 osuman joukosta haulle windows xp not working. (0,30 sekuntia)
Tulokset 1 - 10 noin 10 300 000 osuman joukosta haulle windows virus. (0,17 sekuntia)
Tulokset 1 - 10 noin 4 320 000 osuman joukosta haulle windows xp virus. (0,20 sekuntia)
-----------------------------------
"Vastakysymys: Koska linuksista poistuu vastaavat ongelmat?"
Vastaus: Linuxissa on pakettihallintatyökalut ohjelmien asennukseen ja päivittämiseen. Riippuvuudet hoituvat automaattisesti työkalulla, käyttäjän ei niistä tarvitse huolehtia. Vastaavia ongelmia ei ole ollutkaan.
LSB:ssä noi dependency ongelmat kierretään
Windowssin tapaan laittamalla LSB:ssä
määrittelemättömät libraryt (ne .so tiedostot)
mukaan jaettavaan ohjelmistopakettiin.
Tosin tämä on AIDOMPI tapa kuin Windowsin
keinotekoinen DLL:ien merkkaaminen
shared/non-shared tyyppisiksi.
Fakta kuitenkin on, että Windowsissa jokainen DLL
pitää joko itse ladata ja symbolit resolvaa
käsin lähdekoodista, tai sitten rekisteröidä
DLL:ät softan asennuksen yhteydessä.
DLL:ien rekisteröiminen taas tekee merkinnän
rekisteriin ... ja kun softan poistaa,
niin se merkintä jää sinne rekisteriin,
ellei käytä Windowsin ostamaa InstallShield
paskaa tähän hommaan ... ja monikaan
ulkoinen (ilmainen) softa ei tätä käytä.
Linuxissa ei tarvitse kuin asettaa väliaikaisesti
softan ajamisen yhteydessä
LD_LIBRARY_PATH:iin sen softan oma lib-hakemisto,
jolloin linkattavat .so:t resolvataan
ENSIN sieltä softan omasta lib-hakemistosta,
ja sen jälkeen järjestelmän sisäisesti.
Tällöin, vaikka järjestelmässä ei olisi
tarvittavaa komponenttia, niin se löytyy
softan omista resursseista.
Täten, ns. dependency hell on jo voitettu
ainakin linkityksen kannalta.
Linuxissa ei tätä ongelmaa ole.
Ei ole koskaan ollut, eikä tule olemaan.
Koska
jos käytetään järjestelmän sisäisesti eheitä
pakettikokonaisuuksia (APT/YasT/URPMI)
repositorysta, niin ne dependencyt on siellä
jo valmiiksi hoidettu.
Ja jos ULKOISIA softia asennellaan binääreistä,
niin ne aina toimittavat tarvitsemansa
.so:t omassa lib-hakemistossaan, ja asettavat
ajon ajaksi sen LD_LIBRARY_PATH:in osoittamaan
omaan sinne omaan lib-hakemistoonsa.
Eikä minnekkään tarvi mitään rekisteröidä,
ld.so hoitaa kaiken.
vai mikä oli pointtisi?