Часто приходится ставить софт "на посмотреть". Т.е. поставил, один-два раза запустил и удалил. Вроде бы ничего страшного - apt-get наш спаситель, но нередко бывает, что пакет при установке притягивает за собой толпы библиотек по зависимостям, и при удалении этого пакета все библиотеки остаются в системе. Часть из них, конечно, можно вычистить с помощью apt-get autoremove, но большая часть всё-таки остаётся. Я обычно в таких случаях записывал себе куда-нибудь список пакетов, устанавливаемых с нужным мне софтом и потом сносил его руками. Вот, решил этот процесс немного автоматизировать скриптом. Ничего особенного, просто небольшая экономия времени.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
#!/bin/bash #
INST_BASE=/var/cache/apt/Inst INST_PROG=/usr/bin/apt-get
# Функция вывода ошибки в случае использования неправильных аргументов f_argerror() { echo "depends_store.sh: Пропущен операнд." echo "Попробуйте \"depends_store.sh -h\" для получения более подробного описания." }
# Функция записи данныхх о зависимостях с проверкой на наличие этих данных. # Если данные имеются, вызывается функция их вывода. f_install() { if [ -e ${INST_BASE}/${OPTARG} ] then echo "Данные о зависимостях для данного пакета уже присутсвуют." f_show exit 0 fi ${INST_PROG} -s install ${OPTARG} | grep Inst | cut -d ' ' -f 2 > ${INST_BASE}/${OPTARG} echo `cat ${INST_BASE}/${OPTARG}` }
# Функция удаления данных о зависимостях. f_remove() { rm ${INST_BASE}/${OPTARG} }
# Функция вывода данных о зависимостях. f_show() { echo `cat ${INST_BASE}/${OPTARG}` }
# Функция вывода списка пакетов, для которых есть записи о зависимостях. f_list() { echo `ls ${INST_BASE}` }
# Функция вывода справки. f_help() { echo "Использование: depends_store.sh КЛЮЧ [ПАКЕТ]" echo " -i ПАКЕТ записать данные о зависимостях для пакета" echo " -r ПАКЕТ удалить данные о зависимостях для пакета" echo " -s ПАКЕТ показать данные о зависимостях для пакета" echo " -l вывести список пакетов, для которых записаны данные о зависимостях" echo " -h показать эту справку и выйти" }
# Проверка на наличие аргументов коммандной строки. if [ $# -eq "0" ] then f_argerror exit 0 fi
# Проверка на наличие директории для хранения данных о пакетах и создание таковой в случае отсутсвия. if [ ! -e ${INST_BASE} ] then mkdir -p ${INST_BASE} fi
# Перебор параметров командной строки. getopts ":i:r:s:lh" Option case $Option in i) f_install ;; r) f_remove ;; s) f_show ;; l) f_list ;; h) f_help ;; *) f_argerror ;; esac
exit 0
|
Скрипт до безобразия простой, так что всё должно быть понятно из комментариев. :) Получился такой себе небольшой костыль над apt-get.
Работать с ним просто.
Нашли нужный пакетик, сказали на него ./depends_store.sh -i и всё запомнилось в базе. Поработали с пакетом, сделали apt-get purge `./depends_store.sh -s имя_пакета` && ./depends_store.sh -r имя_пакета и забыли о нём.