У вас, конечно, есть несколько вариантов.
Более новая версия через Apt?
Основные репозитории Ubuntu не предоставляют серьезных обновлений для официальных пакетов. Они предоставляют исправления и обновления безопасности; более новые основные версии обычно предоставляются в следующем основном выпуске Ubuntu (Ubuntu 10.04, он же Lucid, в настоящее время в альфа-версии).
Вы можете искать в официальных репозиториях интересующий вас пакет, чтобы увидеть, что доступно и в каком выпуске. В настоящее время кажется, что Karmic использует Gstreamer 0.10.25
, и Lucid в настоящее время содержит незначительное обновление той же версии. Основные обновления могут быть доступны в репозиториях Ubuntu backports
; это более новые пакеты из более поздних выпусков, которые были созданы для работы в более старых выпусках Ubuntu. У вас могут быть проблемы с зависимостью с этими пакетами, поэтому действуйте осторожно.
Вы можете найти стороннее хранилище, которое предоставляет более свежую версию Gstreamer, но они официально не поддерживаются. Хорошие места, чтобы посмотреть, может быть система PPA Launchpad, которые похожи на личные репозитории. Добавьте PPA в свой список репозиториев APT с помощью sudo add-apt-repository ppa:<ppa-name>
.
Backport это сам?
Это также называется « сборка собственного локального пакета ». Если более новая версия пакета, которая вас интересует, доступна в каком-либо репозитории или PPA, но не была собрана с учетом вашей версии Ubuntu, вам лучше взять исходники и скомпилировать их самостоятельно.
Недостатком здесь является то, что, если пакет не предназначен для непосредственной установки с более ранней версией библиотеки, он, вероятно, заменит ваш оригинальный системный пакет. Преимущество заключается в том, что менеджер пакетов знает обо всем, поэтому вы можете использовать менеджер пакетов, чтобы удалить пакет или обновить его по мере необходимости, вместо того, чтобы устанавливать его там, где вы чувствуете необходимость.
Основные шаги:
- установить инструменты сборки;
- установить зависимости, необходимые для компиляции пакета;
- получить исходные коды пакета (оригинальный архив с исходными кодами, патч для Ubuntu / Debian и файл
.dsc
);
- скомпилировать и упаковать.
Автоматизированный способ (apt-get source packagename
, apt-get build-dep packagename
и т.д., См. Здесь для получения дополнительной информации) требует, чтобы ваш APT был настроен для доступа к исходным репозиториям, которые имеют правильную версию пакета. Поскольку мы бэкпортируем более новую версию, я предпочитаю ручной маршрут (подробно описано по той же ссылке): найдите исходные коды пакетов (в репозиториях Lucid , в PPA-файлах Launchpad и т.д.), Загрузите их с помощью wget
или Firefox или чего-либо еще, затем запустите их в ~/debian-build
:
Это распаковывает источники и применяет патч. ( Сначала переместите файлы tarball, patch и .dsc
в каталог.)
dpkg-source -x foo_version-revision.dsc
Постройте пакет (ы). (Обратитесь к документации по компиляции, чтобы убедиться, что у вас установлены необходимые зависимости сборки. apt-get build-dep <packagename>
, вероятно, добьется цели, но могут быть некоторые различия. В основном, apt-get build-dep
dep устанавливает -dev
версии пакетов системных библиотек, которые содержат файлы заголовков и тому подобное.)
dpkg-buildpackage -rfakeroot -b
Установите новый локальный пакет.
dpkg -i ../foo_version-revision_arch.deb
Забыли пакет?
Соберите библиотеку / программу самостоятельно из исходного кода, без помощи менеджера пакетов. Никаких деинсталляций, никаких автоматических обновлений, просто " ./configure ; make ; sudo make install
".
Это действительно сводится к двум вариантам:
Установите в папку по умолчанию (например, /usr
). Удалите старую версию из менеджера пакетов с помощью apt-get remove <packagename>
или apt-get purge <packagename>
или просто позвольте make install
перезаписать версию пакета.
Но ... удаление системного пакета без его замены вызывает проблемы с зависимостями. Не очень приятно осознавать, что APT удалил ваш менеджер рабочего стола, потому что вы очистили одну библиотеку.
Установите в /usr/local
, /opt/<package>-<version>
или в другое место, которое не является стандартным для вашего системного программного обеспечения. Это означает, что нужно указать скрипту configure, где его установить.
./configure --prefix=/usr/local
Намного лучше для вашей системы и здравомыслия; менеджер пакетов не удивит вас, пытаясь удалить ядро; и ваши библиотеки будут установлены таким образом, чтобы вы могли использовать одну для системных целей, а другую для тестирования или компиляции.
Обработка параллельных установок?
Это полностью зависит от того, что вы пытаетесь сделать. Предположим, вы сохранили системный пакет и установили новую версию в /usr/local
. Новые библиотеки находятся в /usr/local/lib
, заголовки в /usr/local/include
, двоичные файлы в /usr/local/bin
и т.д.
Обычно вы получаете доступ к новой версии одним из трех способов:
- указывать в командной строке по одному (используя псевдонимы оболочки или вручную);
- измените вашу оболочку так, чтобы к новой версии обращались по умолчанию (например, используйте псевдоним оболочки для экспорта измененных переменных среды, чтобы все команды в этой оболочке были настроены для получения новой версии первыми); или же
- Настройте системные переменные среды так, чтобы новая версия была системной по умолчанию (используйте одну из двух других опций, чтобы использовать старую версию).
И это зависит от того, к чему вы обращаетесь: исполняемый файл, библиотека и т.д.
Запуск программы, которую вы установили в /usr /local /bin? Измените PATH
вашей среды, чтобы /usr /local /bin появился раньше, чем /usr /bin, или просто укажите полный путь к двоичному файлу в командной строке.
Запуск программы из системы с вашей новой версией библиотеки? Переменная среды LD_LIBRARY_PATH
- это PATH
для динамических библиотек. Вы можете установить системные значения по умолчанию в /etc/ld.so.conf
(запустите ldconfig
после внесения изменений).
Для компиляции другого пакета вы обычно передаете определенные параметры в gcc
(или make
или ./configure
), чтобы указать расположение файлов заголовков ("include") и библиотек, например, так (я думаю ...):
./configure --with-gstreamer=/usr/local