Dpkg-hold

From EIK wiki

Autor

Aare Song

AK21

Jaanuar 2014


Sissejuhatus

Dpkg-hold võimaldab kasutajal soovitud paki panna ootele selliselt, et selle järgmist paki versiooni ei uuendata ja paigaldatud versioon on külmutatud. See osutub kasulikuks nt. kui on avastatud mõnest olulisest uuendusest turvaauk, ning ei soovita seda järgmise uuendusega kasutusele võtta. [1]


Eeldused

Eelduseks juhendi kasutajale on baas teadmised linuxi käsurea kasutamisest, paki paigaldusest ja dpkg-st üldisemalt. Antud juhendis on kasutatud ubuntu-server v.12.04.3 LTS. Antud juhendis toodud käsud tuleb täita juurkasutaja õiguseid.

Süntaks

dpkg pakihaldus töötab süntaksil.

    dpkg [option...] action

ent valikusse lihtsalt kirjutades võti hold ei anna meile soovitud tulemust, ning pakki ootele ei panda. Süntaksi puhul on võimalik valida kahe toimingu vahel.

    dpkg --get-selections
    dpkg --set-selections

või

    echo [package...] hold | dpkg --set-selections

Kasutamine

Dpkg-hold kasutamisel on kas varianti. Kas väljastada nimekiri kõikidest pakkidest ja seda muuta ning see uuesti sisse lugeda või teha muudatus otse käsurealt.


Variant üks

Oletame, et soovime nt. tekstiredaktor nano paki seisu talletada ja ootele panna. Dpkg-ga tuleb kõigepealt tekitada nimekiri pakkide valikust. Valiku suuname tekstifaili nimega selections.txt[2]


Näide:

    dpkg --get-selections > selections.txt


Seejärel muuta faili selections.txt sisu. Muuta tuleb seda pakki, mida soovime just ootele panna, antud juhul siis nano. Oluline on, et tühjad read ning '#' märgiga kommenteeritud read ei ole lubatud.[3]

    nano                                           install


muudame:

    nano                                           hold


salvestame faili selections.txt ning laeme selle dpkg andmebaasi tagasi:

    dpkg --set-selections < selections.txt

Tulemus: nano pakki järgmise uuendusega enam ei uuendata.


Antud varjant osutub kasulikus, kui soovime mitut või suuremat hulka pakke ootele panna. Üksikute pakkite puhul on tülikas läbi nii mitme käsu seda teha. Seepärast on võimalik pakke ootele panna ka läbi käsurea.

Variant kaks

Kui on teada, et nt. nano pakis on turvaauk ja on kriitiline, et seda järgmise uuendusega ei uuendataks. Ühe paki puhul ei pea väljastama faili, saab otse käsurealt selle muudatuse teha.[4]


Näide:

    dpkg -l nano     

või

    dpkg -l | grep nano


Nano kõrval vasakul asetsev ’ii’ tähistab, et nano on võimalik uuendada.

Dpkg hold 1.png


Paneme paki ootele:

    echo nano hold | dpkg --set-selections


Kontrollime:

    dpkg -l nano


Tulemus:

Dpkg hold 2.png

Vasakul ’ii’ on asendunud tähisega ’hi’. ’hi’ tähistab paki ootel olekut.


Piirangu eemaldamiseks kasutame hold asemel install.[5]


    echo nano install | dpkg --set-selections


uuesti selekteerides dpkg -l nano, näeme, et ’hi’ on jälle asendunud ’ii’ tähisega. Sellist kontrolli saab rakendada ka esimese variandi puhul, kus valikud loeti sisse failist


Kokkuvõte

dpkg-hold on oluline tööriist erinevatel põhjustel. Kui soovime talletada valitud paki hetke seisu ning kaitsta seda uuenduste eest. Põhjuseks kasvõi uuendustega tulnud turvaaugud. Üksikutel juhtudel saab kiirelt toiminguid teha läbi käsurea, kuid suurema valiku puhul on kasulik kasutada failist sisse lugemist. dpkg-hold on lihtne kasutada, kas ühte või teist pidi kasutades. Võimalusi on veelgi, aga esimese hooga lihtsalt paki versiooni peatamiseks on nendest võimalustest piisavalt. Natukene eksitav on eeldus, et dpkg-hold kohe teeb midagi, ent tegelikult tuleb see soovitud tulemus välja läbi teiste käskude. Minu hinnangul on tegemist väga vajaliku ning olulise tööristaga, mille keerukus tuleb välja vastavalt vajadusele. Paki ootele panek on lihtne ja lühike toiming.


Kasutatud kirjandus

  1. http://man7.org/linux/man-pages/man1/dpkg.1.html
  2. http://www.debian.org/doc/manuals/debian-faq/ch-pkg_basics.en.html
  3. http://www.debianadmin.com/how-to-prevent-a-package-from-being-updated-in-debian.html