LINUX.ORG.RU

Удаление файлов из системы командой rm

 


0

1

Тут такое дело, что я искал себе эмулятор Neo-Geo, и вроде как нашел gngeo и фронтенд для него, написанный на питоне xgngeo. Но все это дело не взлетело, и я решил избавится от барахла в системе. Сам gngeo спокойно удалился из системы командой apt-get, а вот с фронтендом для него появились проблемы. Во первых, он устанавливался с помощью питона командой

sudo python setup.py install
я скажу честно, я так и не нашел команды, как это дело все можно удалить, по этому решил пойти по пути наименьшего сопротивления, и просто найти все файлы в системе с именем xgngeo и удалить их. Я знаю что команда rm позволяет это сделать, но забыл как, погуглил с полчасика(что достаточно много), но так и не нашел ответа. Хотя, может есть более хороший способ удалить этот фронтенд?

посмотреть setup.py и разобраться куда он что установил не судьба?

TDrive ★★★★★ ()

найти все файлы в системе с именем xgngeo и удалить их

Ты хочешь команду find с параметром -exec

find / -type f -name "filename" -exec rm -f {} \;

comp00 ★★★★ ()
Последнее исправление: comp00 (всего исправлений: 2)
Ответ на: комментарий от TDrive

тот самый setup.py

#!/usr/bin/env python """XGngeo: a frontend for Gngeo in GTK. ^_^.

Copyleft 2003, 2004, 2005, 2006 Choplair-network $Id: setup.py,v 1.12 2006/09/24 20:03:40 pachilor Exp $

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

""" from distutils.core import setup import os import glob import sys

setup( name='XGngeo', version='16', description='A frontend for the Gngeo emulator.', long_description=""" ``XGngeo" is a frontend providing a complete, practical and user-friendly GTK+ interface over ``Gngeo" which is a fast and powerful command line Neo Geo emulator for the Unix platforms (GNU/Linux, FreeBSD...). """, author='Choplair-network', author_email='contact@choplair.org', url='http://www.choplair.org/', download_url='http://developer.berlios.de/project/showfiles.php?group_id=1276', license='GNU General Public License', platforms='Unix', packages=['xgngeo'], package_dir={'xgngeo': 'data/py'}, data_files=[ #Images. (os.path.join("share", "xgngeo", "img"),glob.glob(os.path.join("data", "img", "*.png"))), #ROM info. (os.path.join("share", "xgngeo"),glob.glob(os.path.join("data", "rominfos.*"))), #License text. (os.path.join("share", "xgngeo"),['LICENSE.txt']), #Plain text documentation. (os.path.join("share", "xgngeo","doc"),[os.path.join("doc", "xgngeo-doc.txt")]), # *.desktop (menu entry) (os.path.join("share", "applications"), [os.path.join("data", "misc", "xgngeo.desktop")]), #Localization files. #Spanish (os.path.join("share", "xgngeo", "locale", "es", "LC_MESSAGES"), [os.path.join("data", "locale", "es", "LC_MESSAGES", "xgngeo.mo")]), #German (os.path.join("share", "xgngeo", "locale", "de", "LC_MESSAGES"), [os.path.join("data", "locale", "de", "LC_MESSAGES", "xgngeo.mo")]), #French (os.path.join("share", "xgngeo", "locale", "fr", "LC_MESSAGES"), [os.path.join("data", "locale", "fr", "LC_MESSAGES", "xgngeo.mo")]), #Polish (os.path.join("share", "xgngeo", "locale", "pl", "LC_MESSAGES"), [os.path.join("data", "locale", "pl", "LC_MESSAGES", "xgngeo.mo")]), #Portuguese of Brazil (os.path.join("share", "xgngeo", "locale", "pt_BR", "LC_MESSAGES"), [os.path.join("data", "locale", "pt_BR", "LC_MESSAGES", "xgngeo.mo")]) ] ) if "install" in sys.argv: #Post-install stuffs (Unix). if os.name == "posix": #Determining the best start-up script path prefix. prefix = None str = "--prefix="

for val in sys.argv: #Check if mentioned as command parameter. if val[:len(str)] == str: prefix = val[len(str):] break

if not prefix: prefix = sys.prefix #Use Python prefix.

startup_script = os.path.join(prefix, "bin", "xgngeo") #Startup script path. startup_script_dir = os.path.dirname(startup_script) import shutil if not os.path.exists(startup_script_dir): os.makedirs(startup_script_dir) shutil.copy("./data/script/xgngeo_startup.py", startup_script) print "XGngeo start-up script put into `%s'." % startup_script_dir

kawaikoalex ()
Ответ на: комментарий от comp00

Кстати, если ты случайно удалишь не то — ССЗБ

Вот именно по этому я решил сначала разобраться что да как, а не удалять все подряд. Хотя там имя такое экзотическое, что ничего другого не должно задеть

kawaikoalex ()
Ответ на: комментарий от kawaikoalex

man unix-way. rm утилита для удаления, она не должна ничего искать, а только удалять то, что соответсвует запросу. Для поиска есть find. Как удалить найденную последовательность я тебе показал. Поищи find'ом сначала без rm, посмотри на вывод, если не ничего системного на твой взляд не задето — запускай уже с rm.

comp00 ★★★★ ()
Ответ на: комментарий от kawaikoalex

Можно, конечно и скрипт посмотреть, вот только кому оно надо, кроме тебя? В добавок, даже без форматирования...

comp00 ★★★★ ()
Ответ на: комментарий от kawaikoalex

Не разбираюсь в питоне но сразу бросаются в глаза всякие xgngeo.mo, xgngeo-doc.txt, rominfos.*, xgngeo_startup.py...
Можешь find-ом их поискать и там будет видно в каких они папках, и как там что, в общем можно догадаться.
Ну или сам разберись что и как делает скрипт, или подожди кого нибудь кто в питоне шарит.

TDrive ★★★★★ ()
Ответ на: комментарий от comp00

Так, вроде все нашел, что нужно, подставляю exec и rm и мне он выдает что то типа

find: все пути должны предшествовать выражению: exec
Использование: find [-H] [-L] [-P] [-Oуровень] [-D help|tree|search|stat|rates|opt|exec] [путь...] [выражение]
И я честно сказать хз, что это такое, а все файлы которые нашел вот они

kawaikoalex@Vault13:~$ sudo find / -type f -name "*xgngeo*" /usr/local/share/xgngeo/doc/xgngeo-doc.txt /usr/local/share/xgngeo/img/xgngeo.png /usr/local/share/xgngeo/locale/es/LC_MESSAGES/xgngeo.mo /usr/local/share/xgngeo/locale/de/LC_MESSAGES/xgngeo.mo /usr/local/share/xgngeo/locale/fr/LC_MESSAGES/xgngeo.mo /usr/local/share/xgngeo/locale/pt_BR/LC_MESSAGES/xgngeo.mo /usr/local/share/xgngeo/locale/pl/LC_MESSAGES/xgngeo.mo /usr/local/share/applications/xgngeo.desktop /usr/bin/xgngeo /var/cache/apt/archives/xgngeo_1.0-2ug_amd64.deb /home/kawaikoalex/stuff/XGngeo-16/doc/xgngeo-doc.txt /home/kawaikoalex/stuff/XGngeo-16/doc/xgngeo-doc.pdf /home/kawaikoalex/stuff/XGngeo-16/data/script/xgngeo_startup.py /home/kawaikoalex/stuff/XGngeo-16/data/img/xgngeo.png /home/kawaikoalex/stuff/XGngeo-16/data/locale/es/LC_MESSAGES/xgngeo.po /home/kawaikoalex/stuff/XGngeo-16/data/locale/es/LC_MESSAGES/xgngeo.mo /home/kawaikoalex/stuff/XGngeo-16/data/locale/de/LC_MESSAGES/xgngeo.po /home/kawaikoalex/stuff/XGngeo-16/data/locale/de/LC_MESSAGES/xgngeo.mo /home/kawaikoalex/stuff/XGngeo-16/data/locale/xgngeo.pot /home/kawaikoalex/stuff/XGngeo-16/data/locale/fr/LC_MESSAGES/xgngeo.po /home/kawaikoalex/stuff/XGngeo-16/data/locale/fr/LC_MESSAGES/xgngeo.mo /home/kawaikoalex/stuff/XGngeo-16/data/locale/pt_BR/LC_MESSAGES/xgngeo.po /home/kawaikoalex/stuff/XGngeo-16/data/locale/pt_BR/LC_MESSAGES/xgngeo.mo /home/kawaikoalex/stuff/XGngeo-16/data/locale/pl/LC_MESSAGES/xgngeo.po /home/kawaikoalex/stuff/XGngeo-16/data/locale/pl/LC_MESSAGES/xgngeo.mo /home/kawaikoalex/stuff/XGngeo-16/data/misc/xgngeo.desktop

kawaikoalex ()
Ответ на: комментарий от kawaikoalex
sosnov:~/test11 $ touch 1tst1
sosnov:~/test11 $ touch 1tst2
sosnov:~/test11 $ touch 5tst3
sosnov:~/test11 $ ls ./*
./1tst1  ./1tst2  ./5tst3
sosnov:~/test11 $ find ./ -type f -name "*ts*" 
./1tst2
./5tst3
./1tst1
sosnov:~/test11 $ find ./ -type f -name "*ts*" -exec rm -f {} \;
sosnov:~/test11 $ ls
sosnov:~/test11 $ ls ./*
ls: невозможно получить доступ к ./*: Нет такого файла или каталога
sosnov:~/test11 $ 
comp00 ★★★★ ()
Ответ на: комментарий от kawaikoalex

Все отмена чуваки, разобрался со всем, всем огромное спасибо :3

kawaikoalex ()

Едрена сила! А ведь я сам, скотина такая, в простых проектах никаких make uninstall не предусматриваю...

В принципе, нормальные пакетные менеджеры всегда после сборки софтинки устанавливают ее сначала в "песочницу", затем заносят в БД список файлов софтинки и лишь затем переносят их из "песочницы" в корень.

Тебе тоже надо было, если уж этот пхытоноскрипт — такая гадость, сначала в "песочнице" поиграться.

Eddy_Em ☆☆☆☆☆ ()

У find есть опция -delete, так что нефиг ему в -exec передавать rm: будет ведь значительно дольше!

Eddy_Em ☆☆☆☆☆ ()

21-й век не первое десятилетие идет, а все равно раз за разом находятся деревянные человечки, которые срут в систему в обход менеджера пакетов. Откуда вы все беретесь-то такие, а? Для совсем уж ленивых есть всякие там stow, в конце концов.

anonymous ()
Ответ на: комментарий от kawaikoalex

Ну можно запустить какой-нибудь inotify-watch и заново setup.py.

anonymous ()
Ответ на: комментарий от Eddy_Em

У find есть опция -delete,

Кстати есть, но не везде. Так что не стоит полагаться на её наличие в портируемых скриптах.

KennyMinigun ★★★★★ ()
Ответ на: комментарий от kawaikoalex

найди мне пакеты gngeo и xgngeo

А вот тут наступает момент, когда юный падаван открывает wiki любимого дистрибутива, раздел «Создание пакетов»

KennyMinigun ★★★★★ ()
Ответ на: комментарий от Eddy_Em

Всё верно делаешь, make uninstall не нужен. Совсем. Софтина либо ставится в prefix=$HOME/apps/softname-x.y.z, тогда её удаление так же просто как rm -rf $HOME/apps/softname-x.y.z, либо пишется пакет (если она нужна глобально).

А пакетные менеджеры не волшебством сначала в "песочницу" (промежуточный корень) ставят, это Makefile софтины должен уметь, ну или что там вместо него.

d_a ★★★★★ ()
Последнее исправление: d_a (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.