27 kwietnia 2013

Przydatny skrypt: Czyszczenie naszego linuxa z pakietów spoza architektury. (RPM)

Zdarza się, że zainstalowane pakiety na naszym linuxie znajdziemy pakiety z innej architektury procesora, niż nasz własny. Napisałem taki skrypcik w języku Ruby, który szybko znajdzie i wykasuje wszystkie takie pakiety:
#!/usr/bin/envy ruby
# encoding: UTF-8
iloscPakietowDoKasacji=0
tablicaPakietowDoUsuniecia = Array.new
for pojedynczaLiniaWynikuZapytaniaRpmQa in `rpm -qa`.split("\n")
if (pojedynczaLiniaWynikuZapytaniaRpmQa.include?("x86_64") == false && pojedynczaLiniaWynikuZapytaniaRpmQa.include?("noarch")==false) && pojedynczaLiniaWynikuZapytaniaRpmQa.include?("gpg-pubkey")==false)
tablicaPakietowDoUsuniecia.push(pojedynczaLiniaWynikuZapytaniaRpmQa, " ")
iloscPakietowDoKasacji+=1
end
end
if tablicaPakietowDoUsuniecia.length!=0
`rpm --erase --nodeps #{tablicaPakietowDoUsuniecia.join.to_s}`
puts "Zostało skasowanych #{iloscPakietowDoKasacji} plików spoza architektury"
else
puts "Nie było plików do kasacji"
end

Skrypt nie kasuje jedynie pakietów X86_64 i noarch (nie przeznaczonych na konkretna architekturę). Oczywiście to można zmienić wpisując w warunku inne wartości. Nie usuwamy również gpg-pubkey, gdzie przechowywane są zachowane klucze (uwierzytelnienia) np. do repozytoriów pakietów. By uruchomić skrypt musimy mu pierw nadać możliwość wykonania (przez chmod) i uruchomić z pozycji root'a. Oczywiście należy posiadać zainstalowanego Ruby'iego na naszym komputerze. Skrypt działa jedynie na dystrybucjach linuxa korzystających z pakietów RPM. Oczywiście i to można zmienić zamieniając co nieco :)

Brak komentarzy:

Prześlij komentarz