Originally Posted by
akm2008
.... скачайте нужные пакеты и поставьте ручками
С ручной установкой пакетов проблем нет. Хочу разобраться, почему криво работают команды Install и Upgrade через вэб-морду IPKG WEB FRONTEND. Подобный вопрос задавался в немецкой ветке (http://wl500g.info/showpost.php?p=219681&postcount=59) полгода назад, ответа нет.
Исследование и сравнение логов strace показывает, что процесс установки пакета, запущенный через IPKG WEB FRONTEND, доходит до фазы выполнения maintainer, preinst и postinst скриптов и вылетает с Segmentation fault. В результате пакет распаковывается, его файлы размещаются по своим местам, но в /opt/lib/ipkg/status нет информации о пакете и система не числит его в установленных.
Фрагмент лога strace установки пакета nano через консоль
Code:
execve("/opt/bin/ipkg", ["ipkg", "install", "nano"], [/* 13 vars */]) = 0
..........................................
open("/opt/etc/ipkg.conf", O_RDONLY) = 3
.............................................
write(1, "Installing nano (2.2.6-1) to /op"..., 38Installing nano (2.2.6-1) to /opt/...
) = 38
write(1, "Downloading http://192.168.1.3/o"..., 63Downloading http://192.168.1.3/optware/nano_2.2.6-1_mipsel.ipk
) = 63
...........................................
fork() = 5505
................................................
open("/opt/ipkg-e77ay9/nano_2.2.6-1_mipsel.ipk", O_RDONLY) = 3
.........................
open("/dev/urandom", O_RDONLY) = 3
read(3, "\315^\274K\t<", 6) = 6
close(3) = 0
............................
...........................
..............................
rmdir("/opt/ipkg-e77ay9/nano-tGcnj8") = 0
unlink("/opt/ipkg-e77ay9/nano_2.2.6-1_mipsel.ipk") = 0
rt_sigprocmask(SIG_UNBLOCK, [INT], [INT], 16) = 0
getpid() = 5504
mkdir("/tmp/ipkg-intercept-5504-0", 0770) = 0
write(1, "Configuring nano\n", 17Configuring nano
) = 17
stat("//opt/lib/ipkg/info/nano.postinst", 0x7fb03918) = -1 ENOENT (No such file or directory)
stat("/tmp/ipkg-intercept-5504-0", {st_mode=S_IFDIR|0750, st_size=40, ...}) = 0
open("/tmp/ipkg-intercept-5504-0", O_RDONLY) = 3
.......................................................
write(4, "\nPackage: nano\n", 15) = 15
write(4, "Version: 2.2.6-1\n", 17) = 17
write(4, "Depends: ncurses\n", 17) = 17
write(4, "Status: install user installed\n", 31) = 31
write(4, "Architecture: mipsel\n", 21) = 21
write(4, "Installed-Time: 1306171336\n", 27) = 27
..........................................................
write(1, "Successfully terminated.\n", 25Successfully terminated.
) = 25
rmdir("/opt/ipkg-e77ay9") = 0
exit(0) = ?
Фрагмент лога strace установки пакета nano через WEB FRONTEND
Code:
execve("/opt/bin/ipkg", ["/opt/bin/ipkg", "install", "nano"], [/* 28 vars */]) = 0
.................................................
open("/opt/etc/ipkg.conf", O_RDONLY) = 4
.................................................
write(1, "Installing nano (2.2.6-1) to /op"..., 101) = 101
............................................
.............................................
.............................................
fork() = 10775
.......................................
open("/opt/ipkg-e77ay9/nano_2.2.6-1_mipsel.ipk", O_RDONLY) = 4
...................................
open("/dev/urandom", O_RDONLY) = 4
read(4, "y\374fB\0315", 6) = 6
close(4) = 0
...................................
....................................
......................................
rmdir("/opt/ipkg-e77ay9/nano-tGcnj8") = 0
unlink("/opt/ipkg-e77ay9/nano_2.2.6-1_mipsel.ipk") = 0
rt_sigprocmask(SIG_UNBLOCK, [INT], [INT], 16) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Для упрощения сравнения приведены "одноименные" строки логов.
Видно, что есть разница в передаче команд через консоль и через cgi-скрипт package.cgi. В прикрепленном архиве логи полностью. При их сравнении, хотя бы в Notepad++ (плагин Compare), видны различия, в некоторых местах кардинальные, но дать им оценку не хватает знаний. Хочется заинтересовать проблемой знающих людей и найти решение. Истина где-то рядом.