LINUX.ORG.RU
решено ФорумAdmin

Некорректное удаление скомпиленной программы


0

2

Slackware 13.
Нужно было пересобрать iptables.
Прекрасно знаю о компиляции программ в пакеты для слаки для последующей установки. Тут что-то моча в голову ударила.
Вообщем по порядку:
1. Был таблес, что шел в дистрибутиве.

2. Скачал исходники нового, configure, make, make install.

3. Обнаружил, что теперь по разным путям раскиданы разные версии iptables. Сделал removepkg <родной_пакет>.

4. Решил сделать все как у людей и поставить таки из самособранного пакета. При помощи утилиты Src2Pkg сделал пакет.

5. Решил удалить установленный через make install таблес. Сделал whereis iptables, он показал /usr/local/sbin/iptables. Сделал rm /usr/local/sbin/iptables.

6. Поставил самособранный пакет.

Результат довольно предсказуем. По всей системе разбросаны куски таблесов разных версий и компиляций, но самое плохое вот что:

whereis iptables
iptables: /usr/sbin/iptables /usr/man/man8/iptables.8.gz /usr/share/man/man8/iptables.8.gz /usr/X11/man/man8/iptables.8.gz

iptables
-bash: /usr/local/sbin/iptables: Нет такого файла или каталога

Если обратиться напрямую к /usr/sbin/iptables то все нормально.

Главный вопрос: как заставить систему по команде iptables обращаться по новому пути (/usr/sbin/iptables)? Где искать соответствие команда-бинарник?

Второстепенный вопрос: как лучше подчистить мусор от разных версий и сборок iptables?


Для начало стоит понять, что не root не имеет в PATH никаких упоминаний про /sbin/:/usr/sbin/:/usr/local/sbin. Ты уверен что ты не пытаешься запустить iptables из под юзера?

Зайди в папку с исходниками из которых собирал iptables и сделай make uninstall, молясь Патрику, чтобы всё сработало и приговаривая «…я больше никогда не буду делать configure; make; make install…»

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

тогда кури Makefile на тему install, чтобы понять что и куда оно ставило. Как вариант, сделать так:

find * -type f -printf "%p %c \n" > before
make install
find * -type f -printf "%p %c \n" > after
diff before after | grep '>' | sed '1,2d' | cut -d' ' -f2 | sort -f > new

тогда в new окажется все, что установилось make install. Удаляешь. И собираешь уже нормальный пакет.

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

Удивительно. Уже таблес нормально запускается. Помог перелогин что ли... Непонятно почему само починилось, но радует что работает :) Проблема решена, но за дополнительную инфу по вопросам буду благодарен.

IR0N
() автор топика

От того, что в системе были две версии iptables, особо ничего страшного не должно было быть. «Пакетные» iptables стоят в /usr/sbin/iptables (используют /usr/lib, /usr/libexec/xtables/), а компиленые --- /usr/local/...

То есть если запускать /usr/local/sbin/iptables, и поправить путь в скриптах, то всё бы работало.

Когда вы удалили /usr/local/sbin/iptables, то bash об этом не знал и пытался его запустить (man bash, команда hash).

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.