На этот вопрос уже есть ответ здесь:
Я хочу, чтобы установить пакет на компьютер под управлением Ubuntu Precise.
Однако поставщик пакета "поддерживает" только Ubuntu до Lucid. Более новые версии, вероятно, также поддерживаются, но они перестали обновлять репозиторий. Самый новый доступный репозиторий -
deb http://appscale.cs.ucsb.edu/appscale_packages lucid stable
Если я попытаюсь установить пакет из этого репозитория, я получаю эту ошибку, вероятно, из-за проблем с версией:
$ sudo apt-get install appscale-core
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
appscale-core : Depends: sun-java6-jdk but it is not installable
Depends: libboost-filesystem1.40.0 but it is not installable
Depends: libboost-serialization1.40.0 but it is not installable
Depends: libboost-thread1.40.0 but it is not installable
Depends: libboost-program-options1.40.0 but it is not installable
Depends: libboost-iostreams1.40.0 but it is not installable
Depends: libboost-python1.40.0 but it is not installable
E: Unable to correct problems, you have held broken packages.
Моя система полностью обновлена и обновлена, поэтому я сомневаюсь, что у меня действительно есть сломанные пакеты.
Я уже был в такой ситуации раньше, когда у меня был репозиторий, который существовал только до некоторой версии ниже текущей (LTS) версии.
Есть ли общий способ решить эту проблему?
Вы добавляете
deb http://appscale.cs.ucsb.edu/appscale_packages lucid stable
к своим ресурсам, но где вы ожидаете, что ваша система найдет зависимости?
Пакет внутри этого PPA требует от вас установки
sun-java6-jdk
libboost-filesystem1.40.0 this yeilds dependencies for:
libboost-system1.40.0 (>= 1.40.0-1)
libc6 (>= 2.3.6-6~)
libgcc1 (>= 1:4.1.1)
libstdc++6 (>= 4.1.1)
libboost-serialization1.40.0
libboost-thread1.40.0
libboost-program-options1.40.0
libboost-iostreams1.40.0
libboost-python1.40.0
но apt-get не может найти эти пакеты, так как мы перешли на более новую версию этих пакетов, они не были доступны после Lucid.
Предлагаемый метод установки из вики appscale:
tar xzvf appscale-tools.tar.gz
cd appscale-tools
sudo bash debian/appscale_build.sh
Посмотрите, работает ли это.
Проблема в том, что пакет, который вы пытаетесь установить, устарел, и их зависимости не могут быть удовлетворены. Возможно, потому что библиотеки, которые вы установили в вашей системе, более актуальны, чем те, которые нужны пакету, или они больше не доступны (например, sun-java6-jdk
).
Я полагаю, у вас есть три варианта:
Используя gem
, чтобы установить его (gem
это что-то вроде apt-get
для рубина). Я не знаю, устанавливает ли это то, что вам нужно, или просто некоторые инструменты / библиотеки управления, но вы можете попробовать это:
sudo gem install appscale-tools
Установите этот пакет в систему Ubuntu Lucid, которая вы можете использовать в вашей текущей системе виртуализацию (например, VirtualBox, LXC или даже chroot
могут работать)
Надеюсь, это поможет.
Проблема в этом случае не в том, что ваши пакеты повреждены, а в том, что пакет, который вы пытаетесь установить, очевидно, предназначен для работы с более старыми версиями пакетов, чем те, которые доступны в точности.
Возможно установить старый файл .deb
, игнорируя ошибки зависимостей с sudo dpkg --ignore-depends -i package.deb
. Однако, скорее всего, это не сработает - если пакет содержит какие-либо двоичные файлы, версии библиотек, которые им требуются во время выполнения (начиная с glibc
и выше), будут неправильными, или файлы конфигурации будут в неправильном месте. По сути, вы находитесь в мире боли, и это нарушает точку apt
, которая призвана обеспечить взаимную совместимость всех ваших пакетов.
Однако, если вы чувствуете себя окровавленным, openjdk-6-jdk
должна быть заменой Sun Java, и вы можете попробовать установить текущую версию libboost
и сделать символические ссылки на фальшивку с установленной более старой версией. , Я бы попытался найти обновленный пакет или собрать его из исходного кода.