15 Nisan 2017 Cumartesi

Kali Hatalı Paket Yüklemesi Sonrası Sistemi Geriye Alma -Rollback

Bazen oluyor ki saatler süren bir paket ve onun dependency leri ile boğuluyoruz birde araya network hatalaı girince işin içinden çıkılmaz bir hal alıyor. Benim gibi snapshot almayıda unuttuysanız vay halinize :)

işte bu durumlarda history.log içindeki kayıtları kullanarak nasıl bu paketleri geri kaldıracağınıza bir bakalım.

apt-get ile yuklenen belirli tarihteki paketleri once listeliyoruz

grep -A 2 'Start-Date: 2017-04-08  18:00:00' /var/log/apt/history.log | tail -1 >/tmp/packages.txt


sonra icinden Install kelimelerini siliyoruz

sed -i 's/Install://' /tmp/packages.txt

son olarak birkac temizlik daha yapiyoruz

tr ',' '\n' < /tmp/packages.txt | sed '/automatic)/d' | awk '{ print $1}' > /tmp/final.packages.txt
wc -l /tmp/final.packages.txt


elimizde artik asagidaki gibi bir liste var/log/apt/history

# less /tmp/final.packages.txt
libmaa3:amd64
ant:amd64
libmimic0:amd64
dc:amd64
libparse-yapp-perl:amd64
gir1.2-clutter-1.0:amd64
libjna-java:amd64
python-egenix-mxbeebase:amd64
libxkbcommon-x11-0:amd64
libmpeg2-4:amd64
libopencv-core2.4:amd64
libdvdread4:amd64
libhunspell-1.3-0:amd64
fonts-lobster:amd64
libtotem-plparser18:amd64
libodbcinstq4-1:amd64
jed-common:amd64
....
..
...
xfonts-cyrillic:amd64
postgresql:amd64
db5.3-util:amd64
libopencore-amrnb0:amd64
firebird2.5-examples:amd64
libboost-random1.54-dev:amd64
libtbb2:amd64
libwxgtk2.8-0:amd64
libc6-x32:amd64
magicfilter:amd64


artik buradaki paketleri kaldirabiliriz. buradaki kodları bir sh dosyası içine yerleştirmeniz daha şık durabilir tabi. Yemek tarifi gibi oldu biraz :)

# Run as root
# Store packages name in $p
p="$(</tmp/final.packages.txt)"

# Nuke it
apt-get --purge remove $p

#clears out the local repository of retrieved package files
apt-get clean

# Just in case ...
apt-get autoremove

# Verify disk space
df -H