- Какой командой можно удалить пакет со всеми данными и зависимостями?
- 2 ответа 2
- Похожие
- Подписаться на ленту
- Как полностью удалить пакет с зависимостями в Linux, использующим пакетный менеджер apt.
- Как полностью удалить пакет с зависимостями в Linux, использующим пакетный менеджер apt.
- How to uninstall a .deb package?
- 12 Answers 12
- apt-get -y Potentially Dangerous:
- apt :
- dpkg :
- Conclusion:
Какой командой можно удалить пакет со всеми данными и зависимостями?
Совсем корректный ответ — никакой. Данные програм, которые возникли за время использования программы, не удаляются автоматически. Если упустить этот шаг, то вам надо смотреть в сторону удаления осиротевших листьев репозитория. Я честно говоря не помню про Debian, но наверняка что-то такое там есть.
2 ответа 2
aptitude purge && apt-get autoremove && aptitude purge ~c
Если прога создаст через touch /etc/someone-file , то удалять только руками. Потому что такое в менеджере пакетов не регистрируется.
Для этого в apt есть ключ —purge .
—purge
Use purge instead of remove for anything that would be removed. An asterisk («*») will be displayed next to packages which are scheduled to be purged. remove —purge is equivalent to the purge command. Configuration Item: APT::Get::Purge .
sudo apt autoremove --purge пакет
Похожие
Подписаться на ленту
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.7.12.43529
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как полностью удалить пакет с зависимостями в Linux, использующим пакетный менеджер apt.
При установке программ, при помощи пакетного менеджера apt, у многих часто возникаем вопрос как их удалять. Для этого есть команды:
sudo apt-get autoremove имя_программы
Команда удаляет пакет вместе с зависимости, которые для него устанавливались, и больше ему не нужны.
sudo apt-get remove имя_программы
Команда удаляет пакет не затрагивая зависимости.
sudo apt-get purge имя_программы
Команда удаляет конфигурационные файлы пакета.
Казалось бы, на этом все, но не тут-то было, apt-get autoremove не всегда удаляет всё что было установлено вместе с пакетом.
Что бы наверняка удалить все что было установлено вместе с пакетом, можно посмотреть лог apt:
cat /var/log/apt/history.log | more
Пример вывода этой команды:
Start-Date: 2016-08-03 07:46:19 Commandline: apt-get install samba Install: python-tdb:amd64 (1.3.8-2, automatic), python-samba:amd64 (2:4.3.9+dfsg -0ubuntu0.16.04.2, automatic), python-dnspython:amd64 (1.12.0-1, automatic), sam ba:amd64 (2:4.3.9+dfsg-0ubuntu0.16.04.2), samba-dsdb-modules:amd64 (2:4.3.9+dfsg -0ubuntu0.16.04.2, automatic), libaio1:amd64 (0.3.110-2, automatic), tdb-tools:a md64 (1.3.8-2, automatic), attr:amd64 (1:2.4.47-2, automatic), samba-common:amd6 4 (2:4.3.9+dfsg-0ubuntu0.16.04.2, automatic), samba-vfs-modules:amd64 (2:4.3.9+d fsg-0ubuntu0.16.04.2, automatic), samba-common-bin:amd64 (2:4.3.9+dfsg-0ubuntu0. 16.04.2, automatic), python-ldb:amd64 (2:1.1.24-1ubuntu3, automatic) End-Date: 2016-08-03 07:47:23
Здесь видно что при установке samba, так же были установлены python-tdb, python-samba и т.д. Соответственно для полного удаления установленного пакета можно набрать команду:
sudo apt-get autoremove --purge python-tdb python-samba python-dnspython samba samba-dsdb-modules libaio1 tdb-tools attr samba-common samba-vfs-modules samba-common-bin python-ldb
Для того что бы не искать и не выбирать эти программы из лога вручную можно спарсить лог:
sudo sed -n '/Commandline: apt-get install имя_пакета/,/End-Date:.*/p' /var/log/apt/history.log | sed -n '/Install.*/p' | sed -e s'/Install: //g' | sed -e s'/:amd64 //g' | sed -e s'/(.[^)]*),\//g' | tr '\n' ' '
Внимание: эти команды парсят весь лог, т.е. если несколько раз устанавливалась/удалялась программа, на экран выведутся все программы которые были установлены при каждой установке, не только при последней.
Что бы отображались программы только при последней установке нужно в конце строки заменить «tr ‘\n’ ‘ ‘» на «tail -1», т.е. команда должна быть:
sudo sed -n '/Commandline: apt-get install имя_пакета/,/End-Date:.*/p' /var/log/apt/history.log | sed -n '/Install.*/p' | sed -e s'/Install: //g' | sed -e s'/:amd64 //g' | sed -e s'/(.[^)]*),\//g' | tail -1
На экран выведутся программы, которые были установлены при установке пакета.
Что бы их удалить можно ввести:
sudo sed -n '/Commandline: apt-get install имя_пакета/,/End-Date:.*/p' /var/log/apt/history.log | sed -n '/Install.*/p' | sed -e s'/Install: //g' | sed -e s'/:amd64 //g' | sed -e s'/(.[^)]*),\//g' | tr '\n' ' ' | sudo xargs apt-get autoremove --purge -y
Все что устанавливалось при установке вашего пакета, будет удалено.
Как полностью удалить пакет с зависимостями в Linux, использующим пакетный менеджер apt.
При установке программ, при помощи пакетного менеджера apt, у многих часто возникаем вопрос как их удалять. Для этого есть команды:
sudo apt-get autoremove имя_программы
Команда удаляет пакет вместе с зависимости, которые для него устанавливались, и больше ему не нужны.
sudo apt-get remove имя_программы
Команда удаляет пакет не затрагивая зависимости.
sudo apt-get purge имя_программы
Команда удаляет конфигурационные файлы пакета.
Казалось бы, на этом все, но не тут-то было, apt-get autoremove не всегда удаляет всё что было установлено вместе с пакетом.
Что бы наверняка удалить все что было установлено вместе с пакетом, можно посмотреть лог apt:
cat /var/log/apt/history.log | more
Пример вывода этой команды:
Start-Date: 2016-08-03 07:46:19 Commandline: apt-get install samba Install: python-tdb:amd64 (1.3.8-2, automatic), python-samba:amd64 (2:4.3.9+dfsg -0ubuntu0.16.04.2, automatic), python-dnspython:amd64 (1.12.0-1, automatic), sam ba:amd64 (2:4.3.9+dfsg-0ubuntu0.16.04.2), samba-dsdb-modules:amd64 (2:4.3.9+dfsg -0ubuntu0.16.04.2, automatic), libaio1:amd64 (0.3.110-2, automatic), tdb-tools:a md64 (1.3.8-2, automatic), attr:amd64 (1:2.4.47-2, automatic), samba-common:amd6 4 (2:4.3.9+dfsg-0ubuntu0.16.04.2, automatic), samba-vfs-modules:amd64 (2:4.3.9+d fsg-0ubuntu0.16.04.2, automatic), samba-common-bin:amd64 (2:4.3.9+dfsg-0ubuntu0. 16.04.2, automatic), python-ldb:amd64 (2:1.1.24-1ubuntu3, automatic) End-Date: 2016-08-03 07:47:23
Здесь видно что при установке samba, так же были установлены python-tdb, python-samba и т.д. Соответственно для полного удаления установленного пакета можно набрать команду:
sudo apt-get autoremove --purge python-tdb python-samba python-dnspython samba samba-dsdb-modules libaio1 tdb-tools attr samba-common samba-vfs-modules samba-common-bin python-ldb
Для того что бы не искать и не выбирать эти программы из лога вручную можно спарсить лог:
sudo sed -n '/Commandline: apt-get install имя_пакета/,/End-Date:.*/p' /var/log/apt/history.log | sed -n '/Install.*/p' | sed -e s'/Install: //g' | sed -e s'/:amd64 //g' | sed -e s'/(.[^)]*),\//g' | tr '\n' ' '
Внимание: эти команды парсят весь лог, т.е. если несколько раз устанавливалась/удалялась программа, на экран выведутся все программы которые были установлены при каждой установке, не только при последней.
Что бы отображались программы только при последней установке нужно в конце строки заменить «tr ‘\n’ ‘ ‘» на «tail -1», т.е. команда должна быть:
sudo sed -n '/Commandline: apt-get install имя_пакета/,/End-Date:.*/p' /var/log/apt/history.log | sed -n '/Install.*/p' | sed -e s'/Install: //g' | sed -e s'/:amd64 //g' | sed -e s'/(.[^)]*),\//g' | tail -1
На экран выведутся программы, которые были установлены при установке пакета.
Что бы их удалить можно ввести:
sudo sed -n '/Commandline: apt-get install имя_пакета/,/End-Date:.*/p' /var/log/apt/history.log | sed -n '/Install.*/p' | sed -e s'/Install: //g' | sed -e s'/:amd64 //g' | sed -e s'/(.[^)]*),\//g' | tr '\n' ' ' | sudo xargs apt-get autoremove --purge -y
Все что устанавливалось при установке вашего пакета, будет удалено.
How to uninstall a .deb package?
Suppose I download a .deb package from a website and install it. (I assume that when I double click the .deb file, the package is installed through a GUI that interfaces with dpkg right?) How can I uninstall it?
12 Answers 12
Manually installed packages appear in the Software Centre, along with all the others. Just search the software centre for your package and remove it there.
You may have to click on «Show N technical items»
Along with this, there are a few other methods:
- Go to System → Administration → Synaptic Package Manager
- Click the Status button and select «Installed (local or obsolete)»
- Right click a package and select «mark for removal».
- Click the Apply button. This will have the benefit of listing all of your manually installed packages:
- You can either use sudo apt-get remove packagename if you know the name of the package, or if you don’t, search for it using apt-cache search crazy-app and then remove it using apt get
- You can also use dpkg —remove packagename .
This will also let you know if there are any unneeded packages left on your system, which were possibly installed as dependencies of your .deb package. Use sudo apt-get autoremove to get rid of them.
aerofs-installer-0 (aerofs.com) did not appear in U.S.C., only in the command line and in synaptic. Any idea why?
You can use «sudo apt purge package-name» to uninstall the package and the package’s configuration as well.
+1 for pointing to synaptic — software center didn’t show the app (Microsoft teams, maye because there is also another version from ubuntu??)
To remove package_name , use dpkg with the -r (or —remove ) flag:
If you have to force-remove it, add —force-all :
sudo dpkg -r --force-all pkg_name
Use -P (or —purge ) instead of -r if you want to remove the configuration files as well.
Every solution here assumes you know or can find the name of the package, but none provide how to remove a package if all you have is the deb. To that end, the below command will extract the package name from the deb and remove that package name.
dpkg -r $(dpkg -f your-file-here.deb Package)
NB: this does not confirm that the package being removed is the exact version described by the deb — be careful.
An only correct answer. For uninstalling all *.deb files in current directory command could be something like: for PPP in *.deb ; do sudo dpkg -r $(dpkg -f «$PPP» Package) ; done
Open up Ubuntu Software Center (Applications -> Ubuntu Software Center) and search for the package you want to uninstall, and click on the Remove button:
See this blogpost for more information.
If your want to remove the package and all configuration files related to it:
sudo aptitude purge packagename
apt-get -y Potentially Dangerous:
Although it’s true that- sans GUI— our choices are:
Where dpkg can be executed from a script without the equivalent of a » -y » switch, apt requires this to avoid user input. The consequences are that apt could automatically resolve package dependencies and remove packages other than the target supplied to the command.
apt :
Note when I remove iptables that lxd and ufw also removed. But what if I didn’t want lxd removed? Well, it’s gone now:
apt-get -y purge iptables Reading package lists. Done Building dependency tree Reading state information. Done The following packages will be REMOVED: iptables* lxd* ubuntu-standard* ufw* 0 upgraded, 0 newly installed, 4 to remove and 54 not upgraded. After this operation, 23.2 MB disk space will be freed. (Reading database . 90906 files and directories currently installed.) Removing ubuntu-standard (1.417.3) . Removing ufw (0.36-0ubuntu0.18.04.1) . Skip stopping firewall: ufw (not enabled) Removing lxd (3.0.3-0ubuntu1~18.04.1) . Removing lxd dnsmasq configuration Removing iptables (1.6.1-2ubuntu2) . Processing triggers for man-db (2.8.3-2ubuntu0.1) . Processing triggers for libc-bin (2.27-3ubuntu1) . (Reading database . 90627 files and directories currently installed.) Purging configuration files for ufw (0.36-0ubuntu0.18.04.1) . Purging configuration files for lxd (3.0.3-0ubuntu1~18.04.1) . Processing triggers for systemd (237-3ubuntu10.38) . Processing triggers for rsyslog (8.32.0-1ubuntu4) . Processing triggers for ureadahead (0.100.0-21) .
dpkg :
Note dpkg stops me from potentially altering the system in an unintended way if I were to use it in a scripted execution and refusing to remove both ufw and lxd:
dpkg -r iptables dpkg: dependency problems prevent removal of iptables: lxd depends on iptables. ufw depends on iptables. dpkg: error processing package iptables (--remove): dependency problems - not removing Errors were encountered while processing: iptables
Conclusion:
So although it’s true we like to ensure our scripts complete successfully and not exit in error, it might be desirable for a script to fail than complete by modifying the system outside of the target of the command. Such a use-case makes dpkg -r more desirable for scripted execution.