Как понизить пакеты на Ubuntu?

14

Диспетчер обновлений сохраняет пакеты в последней версии, но иногда новая версия пакета может работать не так, как ожидается, или работать неправильно. Как понизить версию установленного пакета и заблокировать его в определенной версии, чтобы предотвратить его обновление? Как я могу сделать это с помощью графического интерфейса или терминала ?

Раду Рэдяну
источник

Ответы:

17

В GUI - с использованием Synaptic

Упрощенный интерфейс Ubuntu Software Center не дает возможности понизить версию пакетов. Synaptic, более продвинутый графический интерфейс менеджера пакетов, который использовался в Ubuntu, предлагает эту опцию. Чтобы графически понизить версию пакета, сначала установите приложение Synaptic :

Ubuntu Software Center

После этого откройте диспетчер пакетов Synaptic из Dash:

synaptis

Найдите пакет, в котором вы хотите установить более старую версию, в Synaptic, выберите его и используйте опцию Пакет > Принудительная версия :

Принудительная версия

Выберите версию, которую хотите установить, и нажмите «Принудительная версия». Synaptic покажет вам только версии, доступные в ваших репозиториях:

Выберите версию

Нажмите кнопку Применить , чтобы применить изменения и установить старую версию пакета, при условии, что все работает правильно.

Подать заявление

После понижения версии пакета выберите его и используйте параметр « Пакет» > « Заблокировать версию» . Если вы этого не сделаете, Ubuntu попытается обновить установленный пакет при следующем обновлении установленных пакетов:

Заблокировать версию

В Терминале - используя apt-get

Вы можете установить конкретную версию пакета apt-getв Терминале . Сначала определите доступные версии, которые вы можете установить, с помощью следующей команды (используйте для packagename название программы, которую вы хотите понизить):

apt-cache showpkg [packagename]

Затем запустить APT-получить команду установить и указать версию пакета , который вы хотите установить (используется для версии номер версии ранее определенной программы , которую вы хотите понизить):

sudo apt-get install [packagename]=[version]

После установки выполните следующую команду, чтобы сохранить установленную версию, не позволяя диспетчеру пакетов автоматически обновлять ее в будущем:

sudo echo "[packagename] hold" | sudo dpkg --set-selections

Источник : http://www.howtogeek.com/117929/how-to-downgrade-packages-on-ubuntu/

Раду Рэдяну
источник
4
если вы основали свой ответ на этом сайте howtogeek.com/117929/how-to-downgrade-packages-on-ubuntu, пожалуйста, предоставьте ссылку на источник. Я не думаю, что howtogeek будет возражать, но им, безусловно, нужна правильная ссылка на источник, чтобы они могли получить кредит.
Луис Альварадо
Когда я попытался сделать это, я столкнулся с различными проблемами с неудовлетворенными зависимостями. Я нашел, что лучше использовать aptitude, так как это разрешило все зависимости, например, sudo aptitude install smbclient = 2: 4.1.6 + dfsg-1ubuntu2. См. Askubuntu.com/questions/770789/how-to-downgrade-smbclient
Лэнс Холланд
3

Другая возможность:

Давайте найдем заархивированный пакет на http://packages.ubuntu.com/ :

Например понижение php5:

Поиск:

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

Найденный точный хит позволяет взглянуть на страницу пакета для php5:

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

Мы можем увидеть различные версии выпусков Ubuntu здесь, в которых мы уверены:

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

Давайте переключимся на версию с php (5.3) ... 12.04 (точная), например:

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

скачать tar.gz

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

А затем распакуйте файл tar и установите его:

cd /path/to/download
tar -xzvf name_of_package
cd name_of_extracted_folder
./configure
make
sudo make install

Возможные проблемы, с которыми можно столкнуться при запуске ./configure:

  • Отсутствующие зависимости (пришлось установить libxm2-dev): введите описание изображения здесь

Проблемы запущены make:

  • ошибки при компиляции могут включать неправильно установленные флаги или проблемы с самим кодом.
  • Куча мусора при компиляции, а затем какая-то проблема в коде?
  • В моем случае мне нужно было найти последние исходные файлы / tarball для php ( http://php.net/downloads.php )
  • и повторите попытку извлечения и сделайте
jmunsch
источник