Как установить 32-битную проприетарную deb в 64-битной системе, не вызывая проблем с зависимостями?

15

Я знаю, что Guitar Pro не поддерживает 64 бит, но я заставил его работать с этой командой

jeggy@jeggy-XPS:~$ sudo dpkg --force-architecture -i GuitarPro6-rev9063.deb
[sudo] password for jeggy: 
Selecting previously unselected package guitarpro6:i386.
(Reading database ... 285729 files and directories currently installed.)
Unpacking guitarpro6:i386 (from GuitarPro6-rev9063.deb) ...
dpkg: dependency problems prevent configuration of guitarpro6:i386:
 guitarpro6:i386 depends on gksu.
dpkg: error processing guitarpro6:i386 (--install):
 dependency problems - leaving unconfigured
Processing triggers for bamfdaemon ...
Rebuilding /usr/share/applications/bamf.index...
Processing triggers for desktop-file-utils ...
Processing triggers for gnome-menus ...
Errors were encountered while processing:
 guitarpro6:i386

И даже после того, как я получаю эту ошибку, программа прекрасно работает, и обновление и добавление PPA в систему работает отлично, но когда я пытаюсь установить какое-то другое программное обеспечение, я получаю эту ошибку:

jeggy@jeggy-XPS:~$ sudo apt-get install elinks
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
 elinks : Depends: libfsplib0 (>= 0.9) but it is not going to be installed
          Depends: liblua50 (>= 5.0.3) but it is not going to be installed
          Depends: liblualib50 (>= 5.0.3) but it is not going to be installed
          Depends: libtre5 but it is not going to be installed
          Depends: elinks-data (= 0.12~pre5-7ubuntu1) but it is not going to be installed
 guitarpro6:i386 : Depends: gksu:i386 but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

И всякий раз, когда я пишу "apt-get -f install", я получаю это

jeggy@jeggy-XPS:~$ sudo apt-get -f install
[sudo] password for jeggy: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
  dconf-gsettings-backend:i386 python-levenshtein python-indicate libav-tools libstartup-notification0:i386
  libxmuu1:i386 libavfilter-extra-2 libbabl-0.0-0 libgegl-0.0-0 libgconf2-4:i386 python-vobject libgtk-3-0:i386
  libpam-cap:i386 python-utidylib libdconf0:i386 python-iniparse python-xmpp libpam-gnome-keyring:i386
  libxcb-util0:i386 python-farstream
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  guitarpro6:i386
0 upgraded, 0 newly installed, 1 to remove and 7 not upgraded.
1 not fully installed or removed.
After this operation, 84,0 MB disk space will be freed.
Do you want to continue [Y/n]? y
(Reading database ... 286979 files and directories currently installed.)
Removing guitarpro6:i386 ...
dpkg: warning: while removing guitarpro6:i386, directory '/opt/GuitarPro6/updater' not empty so not removed.
dpkg: warning: while removing guitarpro6:i386, directory '/opt/GuitarPro6/Data/Soundbanks' not empty so not removed.
Processing triggers for bamfdaemon ...
Rebuilding /usr/share/applications/bamf.index...
Processing triggers for desktop-file-utils ...
Processing triggers for gnome-menus ...

А теперь Guitar Pro удален.
Как я могу установить Guitar Pro и в дальнейшем иметь возможность устанавливать другое программное обеспечение?

Jeggy
источник

Ответы:

30

Предупреждение:

GuitarPro Деб это опасно упаковано!

  • В 64-битной системе, если вы apt-get -f installпопытаетесь установить ее, apt-getвы захотите удалить следующие системные критические пакеты , которые могут испортить вашу установку Ubuntu!

    Следующие пакеты будут УДАЛЕНЫ:
     gksu guitarpro6: i386 libgksu2-0 libpam-gnome-keyring  sudo ubuntu-desktop
    ubuntu-минимальный менеджер обновлений update-notifier xauth xinit  xorg
  • судо ? менеджер обновлений ?? ИКС! О чем думают разработчики ?! Это также заставляет apt-getдумать, что куча пакетов i386 установлена, когда ни один из них не был установлен. Вот полная кровавая пастина.


Безопасно установите GuitarPro, не apt-getжелая удалять его

  • Я полагаю, что вышеупомянутое поведение происходит от тупой зависимости deb gksu:i386(которая является графическим пакетом повышения прав)
  • К сожалению, единственный безопасный способ установить это и не иметь дело с apt-getнытьем - это установить его вручную и его зависимости. Вот как:

Как вручную проверить и безопасно установить бинарный файл i386 deb с его зависимостями

  • Сначала удалите текущий наполовину установленный пакет с sudo dpkg --remove guitarpro:i386
  • Теперь перейдите в каталог, где хранится ваш файл deb. Для удобства ввода давайте создадим короткую символическую ссылку - моя дебет называется gp6-full-linux-demo-r11100.deb, ваша может отличаться:
    • ln -s gp6-full-linux-demo-r11100.deb gp6.deb

1. Изучите архитектуру и зависимости deb

Сначала мы исследуем зависимости deb, не устанавливая его.

  • dpkg-deb -I gp6.deb показывает нам:

     новый пакет Debian, версия 2.0.
    размер 172147458 байт: контрольный архив = 75020 байт.
     375 байтов, 10 строк управления 
    335109 байтов, 2770 строк md5sums
    Пакет: GuitarPro6 Версия: 6.1.3 Раздел: несвободный / аудио Приоритет: необязательно Архитектура: i386 Зависит от: libc6 (> = 2.1.3), libstdc ++ 6, libasound2, libxml2, libxslt1.1, libportaudio0, libportaudio2, libglu1-mesa, gksu, libssl0.9.8 Установленный размер: 222632 Сопровождающий: Arobas Music Описание: http://www.guitar-pro.com Guitar Pro 6, версия для Linux.

  • Так что это приложение i386, и все его зависимости также будут i386.

  • Первое , что нужно сделать , это установить ia32-libsпакет совместимости i386, если вы еще не:
    • sudo apt-get install ia32-libs
  • Давайте также скопируем и вставим зависимости пакета в текстовый файл для дальнейшего использования.

2. «Извлеките» деб в архив tar и изучите его содержимое

  • Давайте сейчас извлечем deb в архив tar, чтобы мы могли изучить его содержимое без необходимости его установки:
    • dpkg-deb --fsys-tarfile gp6.deb > gp6.tar
  • Откройте диспетчер файлов (Nautilus) и смонтируйте его gp6.tarкак архив, щелкнув правой кнопкой мыши и выбрав « Открыть в Archive Mounter» ; После этого вы увидите gp6.tarдобавленную внизу левую боковую панель со значком извлечения:

    введите описание изображения здесь

  • Перейдите в меню «Вид» для диспетчера файлов и измените «Боковую панель» на « Вид дерева» вместо « Места» :

    введите описание изображения здесь

  • Теперь разверните gp6.tarдерево на боковой панели, нажав на треугольники; повторяйте для каждого уровня, пока не увидите структуру папок файла:

    введите описание изображения здесь

  • Из структуры мы видим, что файлы программы располагаются в двух местах: /optи /usr/share:

    • Все, что входит, /optявляется автономным и не повлияет на что-либо еще в системе.
    • Мы видим, что /usr/shareсодержит только значки / растровые изображения, которые безвредны.

3. Если это безопасно, «установите» программу, распаковав файл tar

  • Вернитесь к терминалу и убедитесь, что вы находитесь в каталоге, содержащем загруженные файлы deb / tar. Затем введите:

    sudo tar -C / -xvf gp6.tar
    
  • Это позволит извлечь файлы программы в соответствующих местах, показывая вам имена файлов и прогресс. ( Образец вывода )

    • -CПереключатель указывает , tarдля выполнения этой операции по отношению к корневой директории, а не текущий каталог.

4. Выясните, какие зависимости отсутствуют с ldd, установите их, и рок-н-ролл!

  • Откройте /opt/GuitarPro6папку в диспетчере файлов:

    введите описание изображения здесь

    • Мы видим, что исполняемый файл называется GuitarPro (со значком «шестеренки»), а также что lib-xxxxв папку включено много файлов.
    • Это нормально для бинарных программ; они пытаются включить версии конкретных библиотек, в которых они нуждаются, поскольку они могут быть недоступны из репозиториев определенного дистрибутива.
  • Наряду с этими включенными библиотеками и ia32-libsпакетом, большинство 32-битных зависимостей должно быть установлено. Вместо слепой установки зависимостей, которые мы видели в информации о файле deb через apt-get- что может вызвать проблемы - давайте выясним, действительно ли мы что-то упустили.

    • Вернитесь в терминал и перейдите в каталог GuitarPro с помощью cd /opt/GuitarPro6

С помощью ldd

  • Типа ldd GuitarPro | grep found, и на выходе будетlibportaudio.so.2 => not found

    • lddпечатает зависимости (разделяемые библиотеки) программы и их наличие в системе. Вот как выглядит полный вывод GuitarPro.
    • Чтобы облегчить жизнь, мы просто фильтруем тех, через кого не существует grep found.
  • Здесь отсутствует только библиотека libportaudio2 . Но в зависимостях сказал libportaudio 0 ? (см. шаг 1.) Что это?

    • Будем искать доступные версии, используя apt-cache search libportaudioиз терминала.
    • Это говорит нам о том , что , как libportaudio2 и libportaudio0пакеты доступны. Давайте сначала установим 2 , с
      sudo apt-get установить libportaudio2 : i386
    • : I386 часть очень важна , так как наша программа 32-бит. Если apt-getзапрашивается замена / удаление libportaudio2и / или другие файлы, это нормально, поскольку некоторые библиотеки не могут быть установлены одновременно как в 32-, так и в 64-разрядных версиях.
  • Давайте еще раз проверим зависимости в последний раз: ldd GuitarPro6 | grep foundмы ничего не дадим (это то, что мы хотим!)

    • Если вы получили сообщение об ошибке, ./GuitarPro: /opt/GuitarPro6/./libz.so.1: version ZLIB_1.2.3.3 not found (required by /usr/lib/i386-linux-gnu/libxml2.so.2)это означает, что Guitar Pro использует неправильную версию libz , исправьте это, удалив файл libz.so.1 из каталога GuitarPro6:
      sudo rm libz.so.1
      Guitar Pro вернется к libz-версии вашей системы.
  • Выйдите из терминала и вернитесь в /opt/GuitarPro6папку в диспетчере файлов. Дважды щелкните GuitarPro и ...

    введите описание изображения здесь

  • Очистите папку загрузки, удалив файл tar из файлового менеджера.

5. Ярлык запуска уже добавлен

  • Поскольку пакет уже содержал GuitarPro6.desktopярлык, который был извлечен /usr/share/applications, нет необходимости создавать его вручную. Он сидит там в Launcher:

    введите описание изображения здесь

иш
источник
Да, все прошло хорошо, кроме случаев, когда в последний раз я использовал ldd GuitarPro6 | grep обнаружил, что он дал мне ответ: ./GuitarPro: /opt/GuitarPro6/./libz.so.1: версия `ZLIB_1.2.3.3 'не найдена (требуется для / usr / lib / i386-linux-gnu / libxml2 .so.2)
Шахе Таджирян
Я попытался установить это на другом компьютере (12.10 64bit), и я столкнулся с другой ошибкой, и это исправило ее: bit.ly/X7nvJ5 . Просто хотел поделиться этим здесь, если кто-то еще столкнулся с некоторыми проблемами
Jeggy
Какой удивительный ответ. Это прекрасно работало на 64-битной Ubuntu 14.10. Я хотел бы upvote несколько раз ... FYI, я должен был сделать sudo apt-get install libssl0.9.8:i386в дополнение кlibportaudio2:i386
friederbluemle
Он отлично работает в 14.04
Caisara
1

Я попробовал кое-что и заставил это работать!

  1. Я где-то скопировал "/ opt / GuitarPro6".

  2. Я сделал, sudo apt-get -f installчтобы удалить Guitar Pro.

  3. Я скопировал папку обратно /opt/GuitarPro6и заменил там все.

  4. Я установил больше пакетов следующим образом:

    sudo apt-get install dconf-gsettings-backend python-levenshtein python-indicate libav-tools libstartup-notification0 libxmuu1 libavfilter-extra-2 libbabl-0.0-0 libgegl-0.0-0 libgconf2-4 python-vobject libgtk-3-0 libpam-cap python-utidylib libdconf0 python-iniparse python-xmpp libpam-gnome-keyring libxcb-util0 python-farstream
    
  5. Я скачал это изображение значок GuitarPro и сохранил его, /opt/GuitarPro6/icon.pngчтобы у меня было изображение для создания моего собственного .desktopфайла.

  6. Я создал .desktopфайл с sudo gedit:

    #!/usr/bin/env xdg-open
    
    [Desktop Entry]
    Type=Application
    Name=Guitar Pro 6
    Comment=Guitar Pro 6
    Icon=/opt/GuitarPro6/icon.png
    Exec=sh /opt/GuitarPro6/gp-launcher.sh
    Terminal=false
    Categories=Audio
    

    Я сохранил этот файл /usr/share/applicationsс именем GuitarPro6.desktop.

Теперь все работает, и я могу найти Guitar Pro в тире.

Jeggy
источник
1
Это ужасное решение.
tgm4883
1
Какое лучшее решение есть? Я попробовал все остальные ответили. ты знаешь лучше? и этот на самом деле работает нормально.
Джегги
Вы установили все зависимости Guitar Pro?
tgm4883
Хорошо, теперь я сделал это sudo apt-get install dconf-gsettings-backend python-levenshtein python-indicate libav-tools libstartup-notification0 libxmuu1 libavfilter-extra-2 libbabl-0.0-0 libgegl-0.0-0 libgconf2-4 python-vobject libgtk-3-0 libpam-cap python-utidylib libdconf0 python-iniparse python-xmpp libpam-gnome-keyring libxcb-util0 python-farstream. и это работает так же хорошо.
Джегги
В будущем не стоит бежать sudo gedit. Вы должны использовать gksu geditили gksudo geditвместо. Запуск графических программ с rootиспользованием обычного sudo, когда приложение имеет файлы конфигурации для каждого пользователя, может испортить эти программы для не rootпользователя .
Элия ​​Каган
1

Я также боролся с этим в течение последних нескольких дней. Я нашел лучший способ использовать исполняемый файл Windows под Wine. Кажется, намного солиднее.

16b7195abb140a3929bbc322d1c6f1
источник
0

Чтобы ответить на ваш вопрос, чтобы остановить apt-get -f installудаление программного обеспечения, вам необходимо добавить --no-removeкоманду, которую вы запускаете. Это немедленно прервет запуск apt-get, если что-то будет удалено и ваше программное обеспечение не будет удалено.

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

apt-get install package-name

В вашем случае это ГКСУ (в частности, ГКСУ). Теперь вы можете обнаружить, что при попытке установить gksu у него также есть зависимости, которые необходимо установить. Поскольку вы форсируете установку 32-битного пакета, вам нужно будет вручную установить эти зависимости, используя ту же команду, описанную выше.

tgm4883
источник
0

Я просто установил gp6 в LinuxMint 14 32-Bit, запустил программу обновления и исправил проблемы с zlib, скопировав zlib.so1.2.27 в / opt / GuitarPro, переименовав его в zlib.so.1, установил gksu и его зависимости, снова запустил программу обновления для приведения всех в соответствие. После этого я подключил свой 64-битный Linux к 3s-Bit Linux через fish: // username @ mymachineIP / opt в Dolphin и скопировал весь каталог GuitarPro6 в мой домашний каталог на 64-битном Linux и оттуда в / opt. Работает.

Майкл Бергманн
источник
-2

Попробуй это:

Загрузите с http://www6.guitar-pro.com/en/index.php?pg=download .deb файл, но не устанавливайте его.

Скачайте и установите getlibs Затем:

sudo apt-get install libportaudio0
getlibs -l libportaudio.so.2
dpkg -i –force-all /path/to/GuitarPro6Demo2.deb

Наконец, запустите его с (игнорировать ошибки):

/opt/GuitarPro6/gp-launcher.sh
жасмин
источник
Это не сработало лучше, чем раньше :(
Jeggy