С появлением 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?
Немає коментарів:
Дописати коментар