четвер, 8 серпня 2013 р.

Ubuntu и различные архитектуры

С появлением 64 битных операционных систем возник вопрос о работе 32 битного ПО в 64 битной системе. Ситуация не такая и простая, как кажется на первый взгляд.

Программы используют библиотеки и если программа собрана компилятором gcc под 32 битную систему, то для работы в 64 битной системе ей нужны 32 битные версии её библиотек. В Убунту пакет-монстр ia32-libs обеспечивал 32 битные программы их последними 32 битными библиотеками. Тарбол ia32-libs весит около 555 Мб, но размер не самое страшное. Некоторые из 32 битных библиотек нужно исправлять отдельно, чтобы они корректно работали в 64 битном окружении и тут возникают никому не нужные сложности для поддержания таких специфичных случаев.

В современных версиях Убунту после релиза 12.04 используется поддержка 32 битных программ в 64 битной системе, взятая из Дебиан и имеющая название - MultiArch. То есть не ищите больше ia32-libs, его нет!

На сегодняшний день мало программ, которые доступны только в 32 битной версии. Проблема начального перехода с 32 бит на 64 бита позади, но если вы ещё встречаетесь с программами, чей пакет вы не можете поставить из-за неудовлетворённой зависимости с ia32-libs, не отчаивайтесь - выход есть.

При установке софта через репозиторий вы судорожно пытаетесь найти и установить ia32-libs, хотя нужно поступать следующим образом: sudo apt-get install имя_пакета:i386

Указание в нотации имя_пакета:i386 укажет что это 32 битное приложение в deb пакете и установка произойдёт успешно.

Кстати, раз речь зашла о Google Earth как о печальном примере, то вот способы получить 32 битный Google Earth в 64 битной Ubuntu.

Установка Google Earth 7 в Ubuntu 64 бита.

wget -c dl.google.com/dl/earth/client/current/google-earth-stable_current_amd64.deb -O google-earth-stable_amd64.deb
sudo apt-get install ttf-mscorefonts-installer lsb-core xfonts-cyrillic

Если вызвать команду:

sudo dpkg -i --ignore-depends=ia32-libs google-earth-stable_amd64.deb

то вы получите рабочий Google Earth 7 в системе, но установленный с ошибкой, так как --ignore-depends=ia32-libs позволило корректно установить пакет, но с проигнорированной зависимостью.

Чтобы сделать всё идеально, нам нужно удалить зависимость от ia32-libs. Создайте скрипт modifydeb.sh и наполните содержимым

#!/bin/bash
if [[ -z "$1" ]]; then
    echo "Syntax: $0 debfile"
    exit 1
fi
DEBFILE="$1"
TMPDIR=`mktemp -d /tmp/deb.XXXXXXXXXX` || exit 1
OUTPUT=`basename "$DEBFILE" .deb`.modified.deb
if [[ -e "$OUTPUT" ]]; then
    echo "$OUTPUT exists."
    rm -r "$TMPDIR"
    exit 1
fi
dpkg-deb -x "$DEBFILE" "$TMPDIR"
dpkg-deb --control "$DEBFILE" "$TMPDIR"/DEBIAN
if [[ ! -e "$TMPDIR"/DEBIAN/control ]]; then
    echo DEBIAN/control not found.
    rm -r "$TMPDIR"
    exit 1
fi
CONTROL="$TMPDIR"/DEBIAN/control
MOD=`stat -c "%y" "$CONTROL"`
nano "$CONTROL"
if [[ "$MOD" == `stat -c "%y" "$CONTROL"` ]]; then
    echo Not modified.
else
    echo Building new deb...
    dpkg -b "$TMPDIR" "$OUTPUT"
fi
rm -rf "$TMPDIR"

Сделайте его исполняемым

chmod +x modifydeb.sh
и вызовите для работы
./modifydeb.sh google-earth-stable_amd64.deb

Вам будет запущен редактор и в нём приведите строку Depends к виду Depends: lsb-core (>= 3.2) и сохраните файл. Скрипт продолжит свою работу и пересоберёт пакет в новый файл google-earth-stable_amd64.modified.deb

Установите его в систему

sudo dpkg -i google-earth-stable_amd64.modified.deb

Используйте новый Google Earth 7 с новыми возможностями: 3D города и тысячи туров по миру.

Установка Google Earth 6 в Ubuntu 64 бита.

wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c 'echo "deb http://dl.google.com/linux/earth/deb/ stable main" >> /etc/apt/sources.list.d/googleearth.list'
sudo apt-get update
sudo apt-get install ttf-mscorefonts-installer lsb-core xfonts-cyrillic google-earth-stable:i386

Дополнительные материалы:
Как сделать Google Earth роднее в Ubuntu.
32 бита против 64 бита.
Почему я не люблю Source Based?

Немає коментарів:

Дописати коментар

HyperComments for Blogger

comments powered by HyperComments