Commit cba68b41 authored by Vitaly Lipatov's avatar Vitaly Lipatov

epm remove: don't try removing after rpm -e said there is not such package

parent 696d258e
При удалении, если ошибка состоит в отсутствии пакета, не нужно переключаться на apt-get
epme вызывает apt-get remove для пакетов, которых нет при удалении через rpm
yum versionlock - сравнить/обобщить yum versionlock - сравнить/обобщить
https://itfb.com.ua/kak-zablokirovat-obnovlenie-odnogo-iz-paketov-ili-ispolzuem-yum-versionlock/ https://itfb.com.ua/kak-zablokirovat-obnovlenie-odnogo-iz-paketov-ili-ispolzuem-yum-versionlock/
...@@ -24,8 +20,6 @@ epm hs поиск с историей какой версией и changelog ...@@ -24,8 +20,6 @@ epm hs поиск с историей какой версией и changelog
https://wiki.archlinux.org/index.php/Pacman/Tips_and_tricks_(Русский) https://wiki.archlinux.org/index.php/Pacman/Tips_and_tricks_(Русский)
systemctl edit юнит
аналог epm purge: запоминаем список файлов, удаляем пакеты и по возможности всё, от чего зависит (рекурсивно). аналог epm purge: запоминаем список файлов, удаляем пакеты и по возможности всё, от чего зависит (рекурсивно).
--interactive --interactive
...@@ -55,8 +49,6 @@ Usage: openvpn {start|stop|reload|restart|reopen|condstop|condrestart|condreload ...@@ -55,8 +49,6 @@ Usage: openvpn {start|stop|reload|restart|reopen|condstop|condrestart|condreload
# anyservice --quiet list # anyservice --quiet list
epmqf - если каталог есть, искать полный /usr/share/node
TODO: yaourt (pacman frontend), need we? TODO: yaourt (pacman frontend), need we?
https://archlinux.fr/man/yaourt.8.html https://archlinux.fr/man/yaourt.8.html
...@@ -106,8 +98,6 @@ dotty - через ссылки на реальные названия (epm req ...@@ -106,8 +98,6 @@ dotty - через ссылки на реальные названия (epm req
Команда Команда
docmdmore docmdmore
Дописывать .service для systemd, если не указано другое.
Установка (для отсутствующих файлов пакетов) и удаление (в любом случае) должны производиться с укороченными именами (которые воспримет верхний уровень) Установка (для отсутствующих файлов пакетов) и удаление (в любом случае) должны производиться с укороченными именами (которые воспримет верхний уровень)
Дописать таблицу на вики на основании реализованных команд. Дописать таблицу на вики на основании реализованных команд.
......
#!/bin/sh #!/bin/sh
# #
# Copyright (C) 2012-2014, 2016, 2017, 2019, 2020 Etersoft # Copyright (C) 2012-2014, 2016, 2017, 2019-2021 Etersoft
# Copyright (C) 2012-2014, 2016, 2017, 2019, 2020 Vitaly Lipatov <lav@etersoft.ru> # Copyright (C) 2012-2014, 2016, 2017, 2019-2021 Vitaly Lipatov <lav@etersoft.ru>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by # it under the terms of the GNU Affero General Public License as published by
...@@ -23,6 +23,13 @@ load_helper epm-print ...@@ -23,6 +23,13 @@ load_helper epm-print
load_helper epm-sh-warmup load_helper epm-sh-warmup
load_helper epm-sh-install load_helper epm-sh-install
__check_rpm_e_result()
{
grep -q "is not installed" $1 && return 2
return $2
}
# Try remove with low level removing # Try remove with low level removing
epm_remove_low() epm_remove_low()
{ {
...@@ -34,10 +41,12 @@ epm_remove_low() ...@@ -34,10 +41,12 @@ epm_remove_low()
*-rpm) *-rpm)
cd /tmp || fatal cd /tmp || fatal
__epm_check_vendor $@ __epm_check_vendor $@
sudocmd rpm -ev $noscripts $nodeps $@ store_output sudocmd rpm -ev $noscripts $nodeps $@
# keep status __check_rpm_e_result $RC_STDOUT $?
#cd - >/dev/null RES=$?
return ;; clean_store_output
cd - >/dev/null
return $RES ;;
*-dpkg|-dpkg) *-dpkg|-dpkg)
# shellcheck disable=SC2046 # shellcheck disable=SC2046
sudocmd dpkg -P $(subst_option nodeps --force-all) $(print_name "$@") sudocmd dpkg -P $(subst_option nodeps --force-all) $(print_name "$@")
...@@ -312,13 +321,8 @@ epm_remove() ...@@ -312,13 +321,8 @@ epm_remove()
epm_remove_low $pkg_names && return epm_remove_low $pkg_names && return
local STATUS=$? local STATUS=$?
# TODO: check if we need continue with hi level
# TODO: we need fail if
# # rpm -ev python2-nase
# error: package python2-nase is not installed
if [ -n "$direct" ] || [ -n "$nodeps" ]; then if [ -n "$direct" ] || [ -n "$nodeps" ] || [ "$STATUS" = "2" ]; then
return $STATUS return $STATUS
fi fi
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment