Стандартная арифметика оболочки только позволяет целочисленные арифметические операции. Это не включает **
для возведения в степень, которое удар имеет как расширение.
Целочисленное возведение в степень достаточно легко реализовать как функция оболочки (хотя Вы скоро столкнетесь с циклическим возвратом).
pow () {
set $1 $2 1
while [ $2 -gt 0 ]; do
set $1 $(($2-1)) $(($1*$3))
done
echo $3
}
Как в стороне, почему использование expr
здесь? Арифметика Shell может сделать дополнение.
Кажется, что необходимо создать собственный репозиторий.
Поместите свой RPMs в Вашу требуемую версию в тот репозиторий. Затем активируйте эти репозитории на обеих машинах (как источник установки) и установите пакеты.
Наблюдение как OpenSuse использует RPMs, можно использовать rpm
утилита.
rpm -qa
перечислит все в настоящее время устанавливаемые пакеты в Вашей системе (очень длинный список). Список включает имя пакета, номер версии и архитектуру. Вы могли написать список в файл и дать застежке-молнии файл в новой системе.
Возможности будет несколько пакетов, которые уже установлены по умолчанию, но застежка-молния перескочит через них и установит тех, Вам нужно.
rpm -qa
как вход для zypper
. Это понимает формат превосходного пакета. Я не протестировал, чтобы видеть, повинуется ли это номеру версии, но это высоко зависит от того, содержат ли репозитории более ранние версии. Если repos не делают, то нет очень, можно делать с этим.
– n0pe
04.12.2011, 09:59
Сначала перечислите все установленные пакеты и их версии на машине, "клон" которой вы пытаетесь создать: rpm -qa > /tmp/rpm.list.txt
.
Затем скопируйте /tmp/rpm.list.txt
в систему, которую вы пытаетесь превратить в "клон" другой системы, запустите zypper и передайте ему список пакетов, который вы только что создали: zypper install $(cat /tmp/rpm.list.txt)
(или куда бы вы ни поместили файл со списком пакетов из исходной системы).