LINUX.ORG.RU

remastersys+lucid


0

1

господа, ткните носом в решение проблемы пожалуйста. при remastersys dist в конце появляется ошибка

Calculating the installed filesystem size for the installer /usr/bin/remastersys: строка 543: 321856020+1.65625: Ошибка синтаксиса: неправильный арифметический оператор (error token is ".65625")

что-то никак не найти решение. вернее даже не понять что делать.


Ответ на: комментарий от ratte

Насколько я понимаю, в цикле находится сумма чисел, содержащихся в файле.

Можно вместо цикла

a=$(echo «$(cat /tmp/size.tmp | tr '\n' '+')0» | bc)

Эта конструкция работает, если вперемешку есть пустые строки в файле

a=$(echo «$(cat /tmp/size.tmp | sed '/^$/d' | tr '\n' '+' )0» | bc)

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

PS: хотя, если файл большой, то подход выше будет неправильным.

for i in `cat /tmp/size.tmp`; do a=$(echo «$a+$i» | bc); done
А здесь лишние форки для bc в количестве числа строк в файле.
Хотя я не знаю, что страшнее, форк, или арифметика на баше.

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

В этом случае:
a=$(echo «$(cat /tmp/size.tmp | tr '\n' '+')0» | bc)
или
a=$(echo «$(cat /tmp/size.tmp | sed '/^$/d' | tr '\n' '+' )0» | bc)
?
Синтакс ерроры в той же строке?

Покажи кусок /tmp/size.tmp
Там может посложнее регексп нужен, вдруг что лишнее есть, чего bc не понимает.

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

> H╒ул╘▀tс&1аUcкu
Это явно не похоже на число.

Какой смысл в том скрипте? Что он должен делать? И почему ему подсовывают такой странный файл?

Это на фрагменте лога считает успешно, без ошибок:
a=$(echo «$(cat /tmp/size.tmp | sed '/^$/d;/[^0-9.]/d' | tr '\n' '+' )0» | bc)

/^$/d — Это вырезает пустые строки
/[^0-9.]/d — Это вырезает все строки где есть хоть что-то отличающееся от цифры или точки

Соответственно можно и фрагмент с циклом изменить. Если прогонять переменную i через sed.

Lumi ★★★★★
()

в чем смысл именно этого скрипта я не знаю.ремастерсис вообще использую для изготовления исо образов своей системы для live флэшки и заодно это же является бэкапом на случай проблем с системой.никогда проблем не было, а тут обновился до 10.04 и понеслись ошибки.

ratte
() автор топика
Ответ на: комментарий от Lumi

c этой строкой

a=$(echo «$(cat /tmp/size.tmp | sed '/^$/d;/[^0-9.]/d' | tr '\n' '+' )0» | bc)

намертво виснет на этапе

Calculating the installed filesystem size for the installer.

ни ошибок, ничего. я так понимаю remastersys не может по какой-то причине свой загрузчик впихнуть в iso

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

Это явно не строка виновата. Она просто выгребает из кучи мусора числа и складывает.
Давай значит весь скрипт.

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

Не забудь потом поделиться причиной, рецептом и пометить тему как решённую.

Lumi ★★★★★
()

господа, кто-нибудь пользуется remastersys под убунту 10.04? никак мне не разобраться с ошибкой этой мерзкой.

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

посоветовали исправить строку

unsquashfs -lls $WORKDIR/ISOTMP/casper/filesystem.squashfs | grep -v " inodes " | grep -v "unsquashfs:" | awk '{print $3}' | grep -v "," > /tmp/size.tmp

на

unsquashfs -lls $WORKDIR/ISOTMP/casper/filesystem.squashfs | grep -v " inodes " | grep -v "unsquashfs:" | awk '{print $3}' | grep -Ev ',|\.' > /tmp/size.tmp

но всё равно ошибка

Calculating the installed filesystem size for the installer
/usr/bin/remastersys: строка 551: 401682300+$@: ошибка синтаксиса: ожидается операнд (error token is "$@")

что-то странное вообще, что я мог в системе сломать, чтобы ремастерсис перестал работать?

сам файл /usr/bin/remastersys

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