отказаться от пакетов ppa до версий, доступных в предыдущий момент времени

Как уже упоминалось, вы можете использовать пробел перед вашей командой, но это зависит от переменной HISTCONTROL. Вот несколько альтернатив -

Вы можете сказать терминалу прекратить запись и начать запись истории. Это можно сделать с помощью этих команд -

set +o history      #stop recording history
set -o history      #start recording history

Если вы уже запустили некоторые команды и забыли остановить запись или использовать пробел, вы все равно можете остановить ее от записи до .bash_history, пока сеанс по-прежнему открыт. Он записывается в файл при закрытии сеанса терминала. Таким образом, вы можете удалить текущую историю сеанса непосредственно перед закрытием сеанса (до выхода из su в вашем случае). Это можно сделать с помощью этой команды -

history -c

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

kill -9 $$

$$ выдаст текущий идентификатор процесса терминала, а kill -9 убьет этот процесс.

14
задан 28 June 2011 в 02:12

36 ответов

Использование xorg-edgers ppa для ежедневной работы может быть довольно плохой идеей.

Это может дать вам последние версии драйверов, правда, но вы также можете получить неработающие драйверы.

Чтобы удалить PPA и понизить пакеты, замененные на него (вернемся к тем, которые доступны в официальных репозиториях), сначала установите ppa-purge:

sudo apt-get install ppa-purge

И затем удалите PPA, изящно понизив до Официальные пакеты:

sudo ppa-purge ppaname

Это должно привести к тому, что ваши пакеты будут возвращены к официальным.

Другие пакеты, которые были в PPA, но не в официальных репозиториях, не будут удалены. Вы должны вручную сообщить диспетчеру пакета об их удалении, например, используя apt:

sudo apt-get purge packagename

. Вы можете найти имя ppa, находящееся в разделе «Источники программного обеспечения» в настройках Ubuntu, и просмотреть список пакетов, которые он предоставляет на своей странице панели запуска (или, если установлен, в разделе «Происхождение» диспетчера пакетов Synaptic).

16
ответ дан 25 July 2018 в 21:39
  • 1
    Как я уже сказал, обычные драйверы не работают для меня. Мне нужны xorg-edgers. Я просто хочу обойти самую последнюю версию своих драйверов. – Will 28 June 2011 в 00:47
  • 2
    десять в следующий раз, когда вы используете xorg edgers ppa (и работает), просто отключите ppa и придерживайтесь этих версий пакета – xangua 5 July 2011 в 00:24
  • 3
    [F1] – DmitrySandalov 22 December 2014 в 19:25
  • 4
    он удаляет все в моем случае – noone 2 November 2017 в 00:15

У меня была такая же проблема сегодня, я заметил, что ~ 2 недели назад я установил обновления в свою систему и все еще имел активированный ubuntu-x-swat ppa, у которого был новый драйвер nvidia. Старый был в порядке, новый сломал мою систему (только немного, мне потребовалось некоторое время, чтобы заметить).

Итак, я посмотрел в /var/log/apt/history.log, чтобы найти предыдущий номер версии пакета драйверов nvidia, который я установил, а затем попытался найти пакет в / var / cache / apt / archives, где вы обычно найдете все пакеты, загруженные apt, но его там не было. И ppa не сохраняет предыдущую версию своих пакетов, как только они заменяются более новой версией, поэтому я тоже не смог ее получить.

Но отличие от предыдущей версии пакета до новой хранится в ppa для всех версий, а вместе с оригинальным tarball и его debian-патчами можно отменить все изменения новой версии и получить предыдущие версии.

Я кратко опишу Необходимые шаги:

Перейти к ppa, найти новейшую версию пакета и загрузить оригинальные файлы tarball и (необязательные) debian, в моем случае они были найдены на этой странице: https://launchpad.net/~ubuntu-x-swat/+archive/x-updates/+sourcepub/2087970/+listing-archive-extra Оригинальный tarball named: nvidia-graphics-drivers_290.10.orig.tar.gz Патчи debian, которые делают встроенный пакет из tarball: nvidia-graphics-drivers_290.10-0ubuntu1~lucid~xup1.diff.gz Извлеките их где-нибудь предпочтительно в новый и пустой каталог, а затем примените патчи к исходному дереву ~/nvidia> tar xvzf nvidia-graphics-drivers_290.10.orig.tar.gz [...] ~/nvidia> gzip -d nvidia-graphics-drivers_290.10-0ubuntu1\~lucid\~xup1.diff.gz ~/nvidia> patch -p0 < nvidia-graphics-drivers_290.10-0ubuntu1\~lucid\~xup1.diff [...] . Вы не должны отклоняться куски при патче. На той же странице ppa вы найдете отличие от предыдущей версии пакета с той, на которую вы смотрите, в разделе «Доступные различия». Для меня это было: diff from 285.05.09-0ubuntu1~lucid~xup1 to 290.10-0ubuntu1~lucid~xup1 Загрузите это, извлеките и отмените применить его к исправленным исходным источникам: ~/nvidia> gzip -d nvidia-graphics-drivers_285.05.09-0ubuntu1\~lucid\~xup1_290.10-0ubuntu1\~lucid\~xup1.diff.gz ~/nvidia> patch -R -p0 < nvidia-settings_285.05.09-0ubuntu1\~lucid\~xup1_290.10-0ubuntu1\~lucid\~xup1.diff [...] Presto! Теперь у вас должно быть дерево исходных данных предыдущей версии, готовое для сборки пакета: ~/nvidia> mv nvidia-settings-290.10/ nvidia-settings-285.05.09 ~/nvidia> cd nvidia-settings-285.05.09/ ~/n/nvidia-settings-285.05.09> dpkg-buildpackage Который должен предоставить вам пакет предыдущей версии, который можно установить с помощью dpkg: ~/n/nvidia-settings-285.05.09> cd .. ~/nvidia> sudo dpkg -i nvidia-current_285.05.09-0ubuntu1\~lucid\~xup1_amd64.deb [...]
2
ответ дан 25 July 2018 в 21:39

В будущем, если вы используете synaptic (при условии, что вы можете загрузиться в X), вы можете выбрать из доступных версий, выделив пакет, который нужно изменить, а затем выберите «принудительная версия» в меню. Оттуда вы сможете понизить рейтинг.

0
ответ дан 25 July 2018 в 21:39

[Original Poster]

Не очень весело, я написал сценарий для вычисления разницы и выполнения команды restore; было задействовано около 100 пакетов. К сожалению, мое понижение не удалось, так как многие пакеты больше не доступны: (

#!/usr/bin/env python import sys, getopt, os from datetime import datetime datefmt = "%Y-%m-%d %H:%M:%S" dry_run = True try: opts,args = getopt.getopt(sys.argv[1:],"y") if not args: raise Exception("no date specified") elif len(args) == 1: args.append("00:00:00") # default time elif len(args) != 2: raise Exception("unexpected arguments") snapshot = datetime.strptime(" ".join(args),datefmt) for opt,_ in opts: if opt == "-y": dry_run = False else: raise Exception("unsupported option %s"%opt) except Exception as e: print "error:",e print "usage:",sys.argv[0],"[flags] YYYY-MM-DD [HH:MM:SS]" print "flags: -y = for real; don\'t just show it, restore it" sys.exit(1) # work out what to do history = {} restore = set() remove = set() with open("/var/log/dpkg.log","r") as log: for line in log: date,time,action,line = line.split(None,3) when = datetime.strptime("%s %s"%(date,time),datefmt) package,ver = line.strip().split(None,1) if when <= snapshot: if action in ("upgrade","install"): prev_ver,new_ver = ver.split() history[package] = new_ver elif action == "remove": if package in history: del history[package] else: print "(cannot remove %s)"%line else: if action == "install": remove.add(package) elif action == "upgrade": if package in history: restore.add(package) elif package not in remove: print "(cannot revert %s)"%line elif action == "remove": if package in history: restore.add(package) elif package in remove: remove.remove(package) else: print "(cannot revert %s)"%line # show what to do for package in restore: print "restore",package,history[package] for package in remove: print "remove",package # do it if not dry_run: print "======" def execute(cmd): print cmd os.system(cmd) #execute("apt-get remove "+" ".join(remove)) execute("apt-get install "+" ".join("%s=%s"%(package,history[package]) for package in restore))
0
ответ дан 25 July 2018 в 21:39
  • 1
    Бедный ты. Знаете ли вы, что история установки доступна только в /var/log/apt/history.log? – Lekensteyn 28 June 2011 в 02:13
  • 2
    dpkg.log - это та же информация, но также и другие приложения, кроме apt. – Will 28 June 2011 в 02:15
  • 3
    Какие другие приложения используют dpkg прямо? Synaptic является интерфейсом apt-get. – Lekensteyn 28 June 2011 в 02:21
  • 4
    пользователь может напрямую использовать dpkg; пользователь может также использовать gdebi или какой-либо другой инструмент. Мне пришлось выбрать файл для разбора, поэтому я выбрал один правильный файл - dpkg.log. Случается, что я использую apt исключительно, но с той же разницей. – Will 28 June 2011 в 02:30

Использование xorg-edgers ppa для повседневной работы может быть довольно плохой идеей.

Это может дать вам последние версии драйверов, правда, но вы также можете получить неработающие драйверы.

Чтобы удалить PPA и понизить пакеты, замененные на него (вернемся к тем, которые доступны в официальных репозиториях), сначала установите ppa-purge:

sudo apt-get install ppa-purge

И затем удалите PPA, изящно понизив до Официальные пакеты:

sudo ppa-purge ppaname

Это должно привести к тому, что ваши пакеты будут возвращены к официальным.

Другие пакеты, которые были в PPA, но не в официальных репозиториях, не будут удалены. Вы должны вручную сообщить диспетчеру пакета об их удалении, например, используя apt:

sudo apt-get purge packagename

. Вы можете найти имя ppa, находящееся в разделе «Источники программного обеспечения» в настройках Ubuntu, и просмотреть список пакетов, которые он предоставляет на своей странице панели запуска (или, если установлен, в разделе «Происхождение» диспетчера пакетов Synaptic).

16
ответ дан 31 July 2018 в 10:42
  • 1
    Как я уже сказал, обычные драйверы не работают для меня. Мне нужны xorg-edgers. Я просто хочу обойти самую последнюю версию своих драйверов. – Will 28 June 2011 в 00:47
  • 2
    десять в следующий раз, когда вы используете xorg edgers ppa (и работает), просто отключите ppa и придерживайтесь этих версий пакета – xangua 5 July 2011 в 00:24
  • 3
    [F1] – DmitrySandalov 22 December 2014 в 19:25
  • 4
    он удаляет все в моем случае – noone 2 November 2017 в 00:15

У меня была такая же проблема сегодня, я заметил, что ~ 2 недели назад я установил обновления в свою систему и все еще имел активированный ubuntu-x-swat ppa, у которого был новый драйвер nvidia. Старый был в порядке, новый сломал мою систему (только немного, мне потребовалось некоторое время, чтобы заметить).

Итак, я посмотрел в /var/log/apt/history.log, чтобы найти предыдущий номер версии пакета драйверов nvidia, который я установил, а затем попытался найти пакет в / var / cache / apt / archives, где вы обычно найдете все пакеты, загруженные apt, но его там не было. И ppa не сохраняет предыдущую версию своих пакетов, как только они заменяются более новой версией, поэтому я тоже не смог ее получить.

Но отличие от предыдущей версии пакета до новой хранится в ppa для всех версий, а вместе с оригинальным tarball и его debian-патчами можно отменить все изменения новой версии и получить предыдущие версии.

Я кратко опишу Необходимые шаги:

Перейти к ppa, найти новейшую версию пакета и загрузить оригинальные файлы tarball и (необязательные) debian, в моем случае они были найдены на этой странице: https://launchpad.net/~ubuntu-x-swat/+archive/x-updates/+sourcepub/2087970/+listing-archive-extra Оригинальный tarball named: nvidia-graphics-drivers_290.10.orig.tar.gz Патчи debian, которые делают встроенный пакет из tarball: nvidia-graphics-drivers_290.10-0ubuntu1~lucid~xup1.diff.gz Извлеките их где-нибудь предпочтительно в новый и пустой каталог, а затем примените патчи к исходному дереву ~/nvidia> tar xvzf nvidia-graphics-drivers_290.10.orig.tar.gz [...] ~/nvidia> gzip -d nvidia-graphics-drivers_290.10-0ubuntu1\~lucid\~xup1.diff.gz ~/nvidia> patch -p0 < nvidia-graphics-drivers_290.10-0ubuntu1\~lucid\~xup1.diff [...] . Вы не должны отклоняться куски при патче. На той же странице ppa вы найдете отличие от предыдущей версии пакета с той, на которую вы смотрите, в разделе «Доступные различия». Для меня это было: diff from 285.05.09-0ubuntu1~lucid~xup1 to 290.10-0ubuntu1~lucid~xup1 Загрузите это, извлеките и отмените применить его к исправленным исходным источникам: ~/nvidia> gzip -d nvidia-graphics-drivers_285.05.09-0ubuntu1\~lucid\~xup1_290.10-0ubuntu1\~lucid\~xup1.diff.gz ~/nvidia> patch -R -p0 < nvidia-settings_285.05.09-0ubuntu1\~lucid\~xup1_290.10-0ubuntu1\~lucid\~xup1.diff [...] Presto! Теперь у вас должно быть дерево исходных данных предыдущей версии, готовое для сборки пакета: ~/nvidia> mv nvidia-settings-290.10/ nvidia-settings-285.05.09 ~/nvidia> cd nvidia-settings-285.05.09/ ~/n/nvidia-settings-285.05.09> dpkg-buildpackage Который должен предоставить вам пакет предыдущей версии, который можно установить с помощью dpkg: ~/n/nvidia-settings-285.05.09> cd .. ~/nvidia> sudo dpkg -i nvidia-current_285.05.09-0ubuntu1\~lucid\~xup1_amd64.deb [...]
2
ответ дан 31 July 2018 в 10:42

[Original Poster]

Не очень весело, я написал сценарий для вычисления разницы и выполнения команды restore; было задействовано около 100 пакетов. К сожалению, мое понижение не удалось, так как многие пакеты больше не доступны: (

#!/usr/bin/env python import sys, getopt, os from datetime import datetime datefmt = "%Y-%m-%d %H:%M:%S" dry_run = True try: opts,args = getopt.getopt(sys.argv[1:],"y") if not args: raise Exception("no date specified") elif len(args) == 1: args.append("00:00:00") # default time elif len(args) != 2: raise Exception("unexpected arguments") snapshot = datetime.strptime(" ".join(args),datefmt) for opt,_ in opts: if opt == "-y": dry_run = False else: raise Exception("unsupported option %s"%opt) except Exception as e: print "error:",e print "usage:",sys.argv[0],"[flags] YYYY-MM-DD [HH:MM:SS]" print "flags: -y = for real; don\'t just show it, restore it" sys.exit(1) # work out what to do history = {} restore = set() remove = set() with open("/var/log/dpkg.log","r") as log: for line in log: date,time,action,line = line.split(None,3) when = datetime.strptime("%s %s"%(date,time),datefmt) package,ver = line.strip().split(None,1) if when <= snapshot: if action in ("upgrade","install"): prev_ver,new_ver = ver.split() history[package] = new_ver elif action == "remove": if package in history: del history[package] else: print "(cannot remove %s)"%line else: if action == "install": remove.add(package) elif action == "upgrade": if package in history: restore.add(package) elif package not in remove: print "(cannot revert %s)"%line elif action == "remove": if package in history: restore.add(package) elif package in remove: remove.remove(package) else: print "(cannot revert %s)"%line # show what to do for package in restore: print "restore",package,history[package] for package in remove: print "remove",package # do it if not dry_run: print "======" def execute(cmd): print cmd os.system(cmd) #execute("apt-get remove "+" ".join(remove)) execute("apt-get install "+" ".join("%s=%s"%(package,history[package]) for package in restore))
0
ответ дан 31 July 2018 в 10:42
  • 1
    Бедный ты. Знаете ли вы, что история установки доступна только в /var/log/apt/history.log? – Lekensteyn 28 June 2011 в 02:13
  • 2
    dpkg.log - это та же информация, но также и другие приложения, кроме apt. – Will 28 June 2011 в 02:15
  • 3
    Какие другие приложения используют dpkg прямо? Synaptic является интерфейсом apt-get. – Lekensteyn 28 June 2011 в 02:21
  • 4
    пользователь может напрямую использовать dpkg; пользователь может также использовать gdebi или какой-либо другой инструмент. Мне пришлось выбрать файл для разбора, поэтому я выбрал один правильный файл - dpkg.log. Случается, что я использую apt исключительно, но с той же разницей. – Will 28 June 2011 в 02:30

В будущем, если вы используете synaptic (при условии, что вы можете загрузиться в X), вы можете выбрать из доступных версий, выделив пакет, который нужно изменить, а затем выберите «принудительная версия» в меню. Оттуда вы сможете понизить рейтинг.

0
ответ дан 31 July 2018 в 10:42

Использование xorg-edgers ppa для ежедневной работы может быть довольно плохой идеей.

Это может дать вам последние версии драйверов, правда, но вы также можете получить неработающие драйверы.

Чтобы удалить PPA и понизить пакеты, замененные на него (вернемся к тем, которые доступны в официальных репозиториях), сначала установите ppa-purge:

sudo apt-get install ppa-purge

И затем удалите PPA, изящно понизив до Официальные пакеты:

sudo ppa-purge ppaname

Это должно привести к тому, что ваши пакеты будут возвращены к официальным.

Другие пакеты, которые были в PPA, но не в официальных репозиториях, не будут удалены. Вы должны вручную сообщить диспетчеру пакета об их удалении, например, используя apt:

sudo apt-get purge packagename

. Вы можете найти имя ppa, находящееся в разделе «Источники программного обеспечения» в настройках Ubuntu, и просмотреть список пакетов, которые он предоставляет на своей странице панели запуска (или, если установлен, в разделе «Происхождение» диспетчера пакетов Synaptic).

16
ответ дан 31 July 2018 в 11:46
  • 1
    Как я уже сказал, обычные драйверы не работают для меня. Мне нужны xorg-edgers. Я просто хочу обойти самую последнюю версию своих драйверов. – Will 28 June 2011 в 00:47
  • 2
    десять в следующий раз, когда вы используете xorg edgers ppa (и работает), просто отключите ppa и придерживайтесь этих версий пакета – xangua 5 July 2011 в 00:24
  • 3
    [F1] – DmitrySandalov 22 December 2014 в 19:25
  • 4
    он удаляет все в моем случае – noone 2 November 2017 в 00:15

У меня была такая же проблема сегодня, я заметил, что ~ 2 недели назад я установил обновления в свою систему и все еще имел активированный ubuntu-x-swat ppa, у которого был новый драйвер nvidia. Старый был в порядке, новый сломал мою систему (только немного, мне потребовалось некоторое время, чтобы заметить).

Итак, я посмотрел в /var/log/apt/history.log, чтобы найти предыдущий номер версии пакета драйверов nvidia, который я установил, а затем попытался найти пакет в / var / cache / apt / archives, где вы обычно найдете все пакеты, загруженные apt, но его там не было. И ppa не сохраняет предыдущую версию своих пакетов, как только они заменяются более новой версией, поэтому я тоже не смог ее получить.

Но отличие от предыдущей версии пакета до новой хранится в ppa для всех версий, а вместе с оригинальным tarball и его debian-патчами можно отменить все изменения новой версии и получить предыдущие версии.

Я кратко опишу Необходимые шаги:

Перейти к ppa, найти новейшую версию пакета и загрузить оригинальные файлы tarball и (необязательные) debian, в моем случае они были найдены на этой странице: https://launchpad.net/~ubuntu-x-swat/+archive/x-updates/+sourcepub/2087970/+listing-archive-extra Оригинальный tarball named: nvidia-graphics-drivers_290.10.orig.tar.gz Патчи debian, которые делают встроенный пакет из tarball: nvidia-graphics-drivers_290.10-0ubuntu1~lucid~xup1.diff.gz Извлеките их где-нибудь предпочтительно в новый и пустой каталог, а затем примените патчи к исходному дереву ~/nvidia> tar xvzf nvidia-graphics-drivers_290.10.orig.tar.gz [...] ~/nvidia> gzip -d nvidia-graphics-drivers_290.10-0ubuntu1\~lucid\~xup1.diff.gz ~/nvidia> patch -p0 < nvidia-graphics-drivers_290.10-0ubuntu1\~lucid\~xup1.diff [...] . Вы не должны отклоняться куски при патче. На той же странице ppa вы найдете отличие от предыдущей версии пакета с той, на которую вы смотрите, в разделе «Доступные различия». Для меня это было: diff from 285.05.09-0ubuntu1~lucid~xup1 to 290.10-0ubuntu1~lucid~xup1 Загрузите это, извлеките и отмените применить его к исправленным исходным источникам: ~/nvidia> gzip -d nvidia-graphics-drivers_285.05.09-0ubuntu1\~lucid\~xup1_290.10-0ubuntu1\~lucid\~xup1.diff.gz ~/nvidia> patch -R -p0 < nvidia-settings_285.05.09-0ubuntu1\~lucid\~xup1_290.10-0ubuntu1\~lucid\~xup1.diff [...] Presto! Теперь у вас должно быть дерево исходных данных предыдущей версии, готовое для сборки пакета: ~/nvidia> mv nvidia-settings-290.10/ nvidia-settings-285.05.09 ~/nvidia> cd nvidia-settings-285.05.09/ ~/n/nvidia-settings-285.05.09> dpkg-buildpackage Который должен предоставить вам пакет предыдущей версии, который можно установить с помощью dpkg: ~/n/nvidia-settings-285.05.09> cd .. ~/nvidia> sudo dpkg -i nvidia-current_285.05.09-0ubuntu1\~lucid\~xup1_amd64.deb [...]
2
ответ дан 31 July 2018 в 11:46

В будущем, если вы используете synaptic (при условии, что вы можете загрузиться в X), вы можете выбрать из доступных версий, выделив пакет, который нужно изменить, а затем выберите «принудительная версия» в меню. Оттуда вы сможете понизить рейтинг.

0
ответ дан 31 July 2018 в 11:46

[Original Poster]

Не очень весело, я написал сценарий для вычисления разницы и выполнения команды restore; было задействовано около 100 пакетов. К сожалению, мое понижение не удалось, так как многие пакеты больше не доступны: (

#!/usr/bin/env python import sys, getopt, os from datetime import datetime datefmt = "%Y-%m-%d %H:%M:%S" dry_run = True try: opts,args = getopt.getopt(sys.argv[1:],"y") if not args: raise Exception("no date specified") elif len(args) == 1: args.append("00:00:00") # default time elif len(args) != 2: raise Exception("unexpected arguments") snapshot = datetime.strptime(" ".join(args),datefmt) for opt,_ in opts: if opt == "-y": dry_run = False else: raise Exception("unsupported option %s"%opt) except Exception as e: print "error:",e print "usage:",sys.argv[0],"[flags] YYYY-MM-DD [HH:MM:SS]" print "flags: -y = for real; don\'t just show it, restore it" sys.exit(1) # work out what to do history = {} restore = set() remove = set() with open("/var/log/dpkg.log","r") as log: for line in log: date,time,action,line = line.split(None,3) when = datetime.strptime("%s %s"%(date,time),datefmt) package,ver = line.strip().split(None,1) if when <= snapshot: if action in ("upgrade","install"): prev_ver,new_ver = ver.split() history[package] = new_ver elif action == "remove": if package in history: del history[package] else: print "(cannot remove %s)"%line else: if action == "install": remove.add(package) elif action == "upgrade": if package in history: restore.add(package) elif package not in remove: print "(cannot revert %s)"%line elif action == "remove": if package in history: restore.add(package) elif package in remove: remove.remove(package) else: print "(cannot revert %s)"%line # show what to do for package in restore: print "restore",package,history[package] for package in remove: print "remove",package # do it if not dry_run: print "======" def execute(cmd): print cmd os.system(cmd) #execute("apt-get remove "+" ".join(remove)) execute("apt-get install "+" ".join("%s=%s"%(package,history[package]) for package in restore))
0
ответ дан 31 July 2018 в 11:46
  • 1
    Бедный ты. Знаете ли вы, что история установки доступна только в /var/log/apt/history.log? – Lekensteyn 28 June 2011 в 02:13
  • 2
    dpkg.log - это та же информация, но также и другие приложения, кроме apt. – Will 28 June 2011 в 02:15
  • 3
    пользователь может напрямую использовать dpkg; пользователь может также использовать gdebi или какой-либо другой инструмент. Мне пришлось выбрать файл для разбора, поэтому я выбрал один правильный файл - dpkg.log. Случается, что я использую apt исключительно, но с той же разницей. – Will 28 June 2011 в 02:30

Использование xorg-edgers ppa для ежедневной работы может быть довольно плохой идеей.

Это может дать вам последние версии драйверов, правда, но вы также можете получить неработающие драйверы.

Чтобы удалить PPA и понизить пакеты, замененные на него (вернемся к тем, которые доступны в официальных репозиториях), сначала установите ppa-purge:

sudo apt-get install ppa-purge

И затем удалите PPA, изящно понизив до Официальные пакеты:

sudo ppa-purge ppaname

Это должно привести к тому, что ваши пакеты будут возвращены к официальным.

Другие пакеты, которые были в PPA, но не в официальных репозиториях, не будут удалены. Вы должны вручную сообщить диспетчеру пакета об их удалении, например, используя apt:

sudo apt-get purge packagename

. Вы можете найти имя ppa, находящееся в разделе «Источники программного обеспечения» в настройках Ubuntu, и просмотреть список пакетов, которые он предоставляет на своей странице панели запуска (или, если установлен, в разделе «Происхождение» диспетчера пакетов Synaptic).

16
ответ дан 2 August 2018 в 03:15
  • 1
    Как я уже сказал, обычные драйверы не работают для меня. Мне нужны xorg-edgers. Я просто хочу обойти самую последнюю версию своих драйверов. – Will 28 June 2011 в 00:47
  • 2
    десять в следующий раз, когда вы используете xorg edgers ppa (и работает), просто отключите ppa и придерживайтесь этих версий пакета – xangua 5 July 2011 в 00:24
  • 3
    [F1] – DmitrySandalov 22 December 2014 в 19:25
  • 4
    он удаляет все в моем случае – noone 2 November 2017 в 00:15

У меня была такая же проблема сегодня, я заметил, что ~ 2 недели назад я установил обновления в свою систему и все еще имел активированный ubuntu-x-swat ppa, у которого был новый драйвер nvidia. Старый был в порядке, новый сломал мою систему (только немного, мне потребовалось некоторое время, чтобы заметить).

Итак, я посмотрел в /var/log/apt/history.log, чтобы найти предыдущий номер версии пакета драйверов nvidia, который я установил, а затем попытался найти пакет в / var / cache / apt / archives, где вы обычно найдете все пакеты, загруженные apt, но его там не было. И ppa не сохраняет предыдущую версию своих пакетов, как только они заменяются более новой версией, поэтому я тоже не смог ее получить.

Но отличие от предыдущей версии пакета до новой хранится в ppa для всех версий, а вместе с оригинальным tarball и его debian-патчами можно отменить все изменения новой версии и получить предыдущие версии.

Я кратко опишу Необходимые шаги:

Перейти к ppa, найти новейшую версию пакета и загрузить оригинальные файлы tarball и (необязательные) debian, в моем случае они были найдены на этой странице: https://launchpad.net/~ubuntu-x-swat/+archive/x-updates/+sourcepub/2087970/+listing-archive-extra Оригинальный tarball named: nvidia-graphics-drivers_290.10.orig.tar.gz Патчи debian, которые делают встроенный пакет из tarball: nvidia-graphics-drivers_290.10-0ubuntu1~lucid~xup1.diff.gz Извлеките их где-нибудь предпочтительно в новый и пустой каталог, а затем примените патчи к исходному дереву ~/nvidia> tar xvzf nvidia-graphics-drivers_290.10.orig.tar.gz [...] ~/nvidia> gzip -d nvidia-graphics-drivers_290.10-0ubuntu1\~lucid\~xup1.diff.gz ~/nvidia> patch -p0 < nvidia-graphics-drivers_290.10-0ubuntu1\~lucid\~xup1.diff [...] . Вы не должны отклоняться куски при патче. На той же странице ppa вы найдете отличие от предыдущей версии пакета с той, на которую вы смотрите, в разделе «Доступные различия». Для меня это было: diff from 285.05.09-0ubuntu1~lucid~xup1 to 290.10-0ubuntu1~lucid~xup1 Загрузите это, извлеките и отмените применить его к исправленным исходным источникам: ~/nvidia> gzip -d nvidia-graphics-drivers_285.05.09-0ubuntu1\~lucid\~xup1_290.10-0ubuntu1\~lucid\~xup1.diff.gz ~/nvidia> patch -R -p0 < nvidia-settings_285.05.09-0ubuntu1\~lucid\~xup1_290.10-0ubuntu1\~lucid\~xup1.diff [...] Presto! Теперь у вас должно быть дерево исходных данных предыдущей версии, готовое для сборки пакета: ~/nvidia> mv nvidia-settings-290.10/ nvidia-settings-285.05.09 ~/nvidia> cd nvidia-settings-285.05.09/ ~/n/nvidia-settings-285.05.09> dpkg-buildpackage Который должен предоставить вам пакет предыдущей версии, который можно установить с помощью dpkg: ~/n/nvidia-settings-285.05.09> cd .. ~/nvidia> sudo dpkg -i nvidia-current_285.05.09-0ubuntu1\~lucid\~xup1_amd64.deb [...]
2
ответ дан 2 August 2018 в 03:15

В будущем, если вы используете synaptic (при условии, что вы можете загрузиться в X), вы можете выбрать из доступных версий, выделив пакет, который нужно изменить, а затем выберите «принудительная версия» в меню. Оттуда вы сможете понизить рейтинг.

0
ответ дан 2 August 2018 в 03:15

[Original Poster]

Не очень весело, я написал сценарий для вычисления разницы и выполнения команды restore; было задействовано около 100 пакетов. К сожалению, мое понижение не удалось, так как многие пакеты больше не доступны: (

#!/usr/bin/env python import sys, getopt, os from datetime import datetime datefmt = "%Y-%m-%d %H:%M:%S" dry_run = True try: opts,args = getopt.getopt(sys.argv[1:],"y") if not args: raise Exception("no date specified") elif len(args) == 1: args.append("00:00:00") # default time elif len(args) != 2: raise Exception("unexpected arguments") snapshot = datetime.strptime(" ".join(args),datefmt) for opt,_ in opts: if opt == "-y": dry_run = False else: raise Exception("unsupported option %s"%opt) except Exception as e: print "error:",e print "usage:",sys.argv[0],"[flags] YYYY-MM-DD [HH:MM:SS]" print "flags: -y = for real; don\'t just show it, restore it" sys.exit(1) # work out what to do history = {} restore = set() remove = set() with open("/var/log/dpkg.log","r") as log: for line in log: date,time,action,line = line.split(None,3) when = datetime.strptime("%s %s"%(date,time),datefmt) package,ver = line.strip().split(None,1) if when <= snapshot: if action in ("upgrade","install"): prev_ver,new_ver = ver.split() history[package] = new_ver elif action == "remove": if package in history: del history[package] else: print "(cannot remove %s)"%line else: if action == "install": remove.add(package) elif action == "upgrade": if package in history: restore.add(package) elif package not in remove: print "(cannot revert %s)"%line elif action == "remove": if package in history: restore.add(package) elif package in remove: remove.remove(package) else: print "(cannot revert %s)"%line # show what to do for package in restore: print "restore",package,history[package] for package in remove: print "remove",package # do it if not dry_run: print "======" def execute(cmd): print cmd os.system(cmd) #execute("apt-get remove "+" ".join(remove)) execute("apt-get install "+" ".join("%s=%s"%(package,history[package]) for package in restore))
0
ответ дан 2 August 2018 в 03:15
  • 1
    Бедный ты. Знаете ли вы, что история установки доступна только в /var/log/apt/history.log? – Lekensteyn 28 June 2011 в 02:13
  • 2
    dpkg.log - это та же информация, но также и другие приложения, кроме apt. – Will 28 June 2011 в 02:15
  • 3
    Какие другие приложения используют dpkg прямо? Synaptic является интерфейсом apt-get. – Lekensteyn 28 June 2011 в 02:21
  • 4
    пользователь может напрямую использовать dpkg; пользователь может также использовать gdebi или какой-либо другой инструмент. Мне пришлось выбрать файл для разбора, поэтому я выбрал один правильный файл - dpkg.log. Случается, что я использую apt исключительно, но с той же разницей. – Will 28 June 2011 в 02:30

Использование xorg-edgers ppa для повседневной работы может быть довольно плохой идеей.

Это может дать вам последние версии драйверов, правда, но вы также можете получить неработающие драйверы.

Чтобы удалить PPA и понизить пакеты, замененные на него (вернемся к тем, которые доступны в официальных репозиториях), сначала установите ppa-purge:

sudo apt-get install ppa-purge

И затем удалите PPA, изящно понизив до Официальные пакеты:

sudo ppa-purge ppaname

Это должно привести к тому, что ваши пакеты будут возвращены к официальным.

Другие пакеты, которые были в PPA, но не в официальных репозиториях, не будут удалены. Вы должны вручную сообщить диспетчеру пакета об их удалении, например, используя apt:

sudo apt-get purge packagename

. Вы можете найти имя ppa, находящееся в разделе «Источники программного обеспечения» в настройках Ubuntu, и просмотреть список пакетов, которые он предоставляет на своей странице панели запуска (или, если установлен, в разделе «Происхождение» диспетчера пакетов Synaptic).

16
ответ дан 4 August 2018 в 19:10
  • 1
    Как я уже сказал, обычные драйверы не работают для меня. Мне нужны xorg-edgers. Я просто хочу обойти самую последнюю версию своих драйверов. – Will 28 June 2011 в 00:47
  • 2
    десять в следующий раз, когда вы используете xorg edgers ppa (и работает), просто отключите ppa и придерживайтесь этих версий пакета – xangua 5 July 2011 в 00:24
  • 3
    он удаляет все в моем случае – noone 2 November 2017 в 00:15

У меня была такая же проблема сегодня, я заметил, что ~ 2 недели назад я установил обновления в свою систему и все еще имел активированный ubuntu-x-swat ppa, у которого был новый драйвер nvidia. Старый был в порядке, новый сломал мою систему (только немного, мне потребовалось некоторое время, чтобы заметить).

Итак, я посмотрел в /var/log/apt/history.log, чтобы найти предыдущий номер версии пакета драйверов nvidia, который я установил, а затем попытался найти пакет в / var / cache / apt / archives, где вы обычно найдете все пакеты, загруженные apt, но его там не было. И ppa не сохраняет предыдущую версию своих пакетов, как только они заменяются более новой версией, поэтому я тоже не смог ее получить.

Но отличие от предыдущей версии пакета до новой хранится в ppa для всех версий, а вместе с оригинальным tarball и его debian-патчами можно отменить все изменения новой версии и получить предыдущие версии.

Я кратко опишу Необходимые шаги:

Перейти к ppa, найти новейшую версию пакета и загрузить оригинальные файлы tarball и (необязательные) debian, в моем случае они были найдены на этой странице: https://launchpad.net/~ubuntu-x-swat/+archive/x-updates/+sourcepub/2087970/+listing-archive-extra Оригинальный tarball named: nvidia-graphics-drivers_290.10.orig.tar.gz Патчи debian, которые делают встроенный пакет из tarball: nvidia-graphics-drivers_290.10-0ubuntu1~lucid~xup1.diff.gz Извлеките их где-нибудь предпочтительно в новый и пустой каталог, а затем примените патчи к исходному дереву ~/nvidia> tar xvzf nvidia-graphics-drivers_290.10.orig.tar.gz [...] ~/nvidia> gzip -d nvidia-graphics-drivers_290.10-0ubuntu1\~lucid\~xup1.diff.gz ~/nvidia> patch -p0 < nvidia-graphics-drivers_290.10-0ubuntu1\~lucid\~xup1.diff [...] . Вы не должны отклоняться куски при патче. На той же странице ppa вы найдете отличие от предыдущей версии пакета с той, на которую вы смотрите, в разделе «Доступные различия». Для меня это было: diff from 285.05.09-0ubuntu1~lucid~xup1 to 290.10-0ubuntu1~lucid~xup1 Загрузите это, извлеките и отмените применить его к исправленным исходным источникам: ~/nvidia> gzip -d nvidia-graphics-drivers_285.05.09-0ubuntu1\~lucid\~xup1_290.10-0ubuntu1\~lucid\~xup1.diff.gz ~/nvidia> patch -R -p0 < nvidia-settings_285.05.09-0ubuntu1\~lucid\~xup1_290.10-0ubuntu1\~lucid\~xup1.diff [...] Presto! Теперь у вас должно быть дерево исходных данных предыдущей версии, готовое для сборки пакета: ~/nvidia> mv nvidia-settings-290.10/ nvidia-settings-285.05.09 ~/nvidia> cd nvidia-settings-285.05.09/ ~/n/nvidia-settings-285.05.09> dpkg-buildpackage Который должен предоставить вам пакет предыдущей версии, который можно установить с помощью dpkg: ~/n/nvidia-settings-285.05.09> cd .. ~/nvidia> sudo dpkg -i nvidia-current_285.05.09-0ubuntu1\~lucid\~xup1_amd64.deb [...]
2
ответ дан 4 August 2018 в 19:10

В будущем, если вы используете synaptic (при условии, что вы можете загрузиться в X), вы можете выбрать из доступных версий, выделив пакет, который нужно изменить, а затем выберите «принудительная версия» в меню. Оттуда вы сможете понизить рейтинг.

0
ответ дан 4 August 2018 в 19:10

[Original Poster]

Не очень весело, я написал сценарий для вычисления разницы и выполнения команды restore; было задействовано около 100 пакетов. К сожалению, мое понижение не удалось, так как многие пакеты больше не доступны: (

#!/usr/bin/env python import sys, getopt, os from datetime import datetime datefmt = "%Y-%m-%d %H:%M:%S" dry_run = True try: opts,args = getopt.getopt(sys.argv[1:],"y") if not args: raise Exception("no date specified") elif len(args) == 1: args.append("00:00:00") # default time elif len(args) != 2: raise Exception("unexpected arguments") snapshot = datetime.strptime(" ".join(args),datefmt) for opt,_ in opts: if opt == "-y": dry_run = False else: raise Exception("unsupported option %s"%opt) except Exception as e: print "error:",e print "usage:",sys.argv[0],"[flags] YYYY-MM-DD [HH:MM:SS]" print "flags: -y = for real; don\'t just show it, restore it" sys.exit(1) # work out what to do history = {} restore = set() remove = set() with open("/var/log/dpkg.log","r") as log: for line in log: date,time,action,line = line.split(None,3) when = datetime.strptime("%s %s"%(date,time),datefmt) package,ver = line.strip().split(None,1) if when <= snapshot: if action in ("upgrade","install"): prev_ver,new_ver = ver.split() history[package] = new_ver elif action == "remove": if package in history: del history[package] else: print "(cannot remove %s)"%line else: if action == "install": remove.add(package) elif action == "upgrade": if package in history: restore.add(package) elif package not in remove: print "(cannot revert %s)"%line elif action == "remove": if package in history: restore.add(package) elif package in remove: remove.remove(package) else: print "(cannot revert %s)"%line # show what to do for package in restore: print "restore",package,history[package] for package in remove: print "remove",package # do it if not dry_run: print "======" def execute(cmd): print cmd os.system(cmd) #execute("apt-get remove "+" ".join(remove)) execute("apt-get install "+" ".join("%s=%s"%(package,history[package]) for package in restore))
0
ответ дан 4 August 2018 в 19:10
  • 1
    Бедный ты. Знаете ли вы, что история установки доступна только в /var/log/apt/history.log? – Lekensteyn 28 June 2011 в 02:13
  • 2
    dpkg.log - это та же информация, но также и другие приложения, кроме apt. – Will 28 June 2011 в 02:15
  • 3
    Какие другие приложения используют dpkg прямо? Synaptic является интерфейсом apt-get. – Lekensteyn 28 June 2011 в 02:21
  • 4
    пользователь может напрямую использовать dpkg; пользователь может также использовать gdebi или какой-либо другой инструмент. Мне пришлось выбрать файл для разбора, поэтому я выбрал один правильный файл - dpkg.log. Случается, что я использую apt исключительно, но с той же разницей. – Will 28 June 2011 в 02:30

Использование xorg-edgers ppa для повседневной работы может быть довольно плохой идеей.

Это может дать вам последние версии драйверов, правда, но вы также можете получить неработающие драйверы.

Чтобы удалить PPA и понизить пакеты, замененные на него (вернемся к тем, которые доступны в официальных репозиториях), сначала установите ppa-purge:

sudo apt-get install ppa-purge

И затем удалите PPA, изящно понизив до Официальные пакеты:

sudo ppa-purge ppaname

Это должно привести к тому, что ваши пакеты будут возвращены к официальным.

Другие пакеты, которые были в PPA, но не в официальных репозиториях, не будут удалены. Вы должны вручную сообщить диспетчеру пакета об их удалении, например, используя apt:

sudo apt-get purge packagename

. Вы можете найти имя ppa, находящееся в разделе «Источники программного обеспечения» в настройках Ubuntu, и просмотреть список пакетов, которые он предоставляет на своей странице панели запуска (или, если установлен, в разделе «Происхождение» диспетчера пакетов Synaptic).

16
ответ дан 6 August 2018 в 03:27
  • 1
    Как я уже сказал, обычные драйверы не работают для меня. Мне нужны xorg-edgers. Я просто хочу обойти самую последнюю версию своих драйверов. – Will 28 June 2011 в 00:47
  • 2
    десять в следующий раз, когда вы используете xorg edgers ppa (и работает), просто отключите ppa и придерживайтесь этих версий пакета – xangua 5 July 2011 в 00:24
  • 3
    [F1] – DmitrySandalov 22 December 2014 в 19:25
  • 4
    он удаляет все в моем случае – noone 2 November 2017 в 00:15

У меня была такая же проблема сегодня, я заметил, что ~ 2 недели назад я установил обновления в свою систему и все еще имел активированный ubuntu-x-swat ppa, у которого был новый драйвер nvidia. Старый был в порядке, новый сломал мою систему (только немного, мне потребовалось некоторое время, чтобы заметить).

Итак, я посмотрел в /var/log/apt/history.log, чтобы найти предыдущий номер версии пакета драйверов nvidia, который я установил, а затем попытался найти пакет в / var / cache / apt / archives, где вы обычно найдете все пакеты, загруженные apt, но его там не было. И ppa не сохраняет предыдущую версию своих пакетов, как только они заменяются более новой версией, поэтому я тоже не смог ее получить.

Но отличие от предыдущей версии пакета до новой хранится в ppa для всех версий, а вместе с оригинальным tarball и его debian-патчами можно отменить все изменения новой версии и получить предыдущие версии.

Я кратко опишу Необходимые шаги:

Перейти к ppa, найти новейшую версию пакета и загрузить оригинальные файлы tarball и (необязательные) debian, в моем случае они были найдены на этой странице: https://launchpad.net/~ubuntu-x-swat/+archive/x-updates/+sourcepub/2087970/+listing-archive-extra Оригинальный tarball named: nvidia-graphics-drivers_290.10.orig.tar.gz Патчи debian, которые делают встроенный пакет из tarball: nvidia-graphics-drivers_290.10-0ubuntu1~lucid~xup1.diff.gz Извлеките их где-нибудь предпочтительно в новый и пустой каталог, а затем примените патчи к исходному дереву ~/nvidia> tar xvzf nvidia-graphics-drivers_290.10.orig.tar.gz [...] ~/nvidia> gzip -d nvidia-graphics-drivers_290.10-0ubuntu1\~lucid\~xup1.diff.gz ~/nvidia> patch -p0 < nvidia-graphics-drivers_290.10-0ubuntu1\~lucid\~xup1.diff [...] . Вы не должны отклоняться куски при патче. На той же странице ppa вы найдете отличие от предыдущей версии пакета с той, на которую вы смотрите, в разделе «Доступные различия». Для меня это было: diff from 285.05.09-0ubuntu1~lucid~xup1 to 290.10-0ubuntu1~lucid~xup1 Загрузите это, извлеките и отмените применить его к исправленным исходным источникам: ~/nvidia> gzip -d nvidia-graphics-drivers_285.05.09-0ubuntu1\~lucid\~xup1_290.10-0ubuntu1\~lucid\~xup1.diff.gz ~/nvidia> patch -R -p0 < nvidia-settings_285.05.09-0ubuntu1\~lucid\~xup1_290.10-0ubuntu1\~lucid\~xup1.diff [...] Presto! Теперь у вас должно быть дерево исходных данных предыдущей версии, готовое для сборки пакета: ~/nvidia> mv nvidia-settings-290.10/ nvidia-settings-285.05.09 ~/nvidia> cd nvidia-settings-285.05.09/ ~/n/nvidia-settings-285.05.09> dpkg-buildpackage Который должен предоставить вам пакет предыдущей версии, который можно установить с помощью dpkg: ~/n/nvidia-settings-285.05.09> cd .. ~/nvidia> sudo dpkg -i nvidia-current_285.05.09-0ubuntu1\~lucid\~xup1_amd64.deb [...]
2
ответ дан 6 August 2018 в 03:27

В будущем, если вы используете synaptic (при условии, что вы можете загрузиться в X), вы можете выбрать из доступных версий, выделив пакет, который нужно изменить, а затем выберите «принудительная версия» в меню. Оттуда вы сможете понизить рейтинг.

0
ответ дан 6 August 2018 в 03:27

[Original Poster]

Не очень весело, я написал сценарий для вычисления разницы и выполнения команды restore; было задействовано около 100 пакетов. К сожалению, мое понижение не удалось, так как многие пакеты больше не доступны: (

#!/usr/bin/env python import sys, getopt, os from datetime import datetime datefmt = "%Y-%m-%d %H:%M:%S" dry_run = True try: opts,args = getopt.getopt(sys.argv[1:],"y") if not args: raise Exception("no date specified") elif len(args) == 1: args.append("00:00:00") # default time elif len(args) != 2: raise Exception("unexpected arguments") snapshot = datetime.strptime(" ".join(args),datefmt) for opt,_ in opts: if opt == "-y": dry_run = False else: raise Exception("unsupported option %s"%opt) except Exception as e: print "error:",e print "usage:",sys.argv[0],"[flags] YYYY-MM-DD [HH:MM:SS]" print "flags: -y = for real; don\'t just show it, restore it" sys.exit(1) # work out what to do history = {} restore = set() remove = set() with open("/var/log/dpkg.log","r") as log: for line in log: date,time,action,line = line.split(None,3) when = datetime.strptime("%s %s"%(date,time),datefmt) package,ver = line.strip().split(None,1) if when <= snapshot: if action in ("upgrade","install"): prev_ver,new_ver = ver.split() history[package] = new_ver elif action == "remove": if package in history: del history[package] else: print "(cannot remove %s)"%line else: if action == "install": remove.add(package) elif action == "upgrade": if package in history: restore.add(package) elif package not in remove: print "(cannot revert %s)"%line elif action == "remove": if package in history: restore.add(package) elif package in remove: remove.remove(package) else: print "(cannot revert %s)"%line # show what to do for package in restore: print "restore",package,history[package] for package in remove: print "remove",package # do it if not dry_run: print "======" def execute(cmd): print cmd os.system(cmd) #execute("apt-get remove "+" ".join(remove)) execute("apt-get install "+" ".join("%s=%s"%(package,history[package]) for package in restore))
0
ответ дан 6 August 2018 в 03:27
  • 1
    Бедный ты. Знаете ли вы, что история установки доступна только в /var/log/apt/history.log? – Lekensteyn 28 June 2011 в 02:13
  • 2
    dpkg.log - это та же информация, но также и другие приложения, кроме apt. – Will 28 June 2011 в 02:15
  • 3
    Какие другие приложения используют dpkg прямо? Synaptic является интерфейсом apt-get. – Lekensteyn 28 June 2011 в 02:21
  • 4
    пользователь может напрямую использовать dpkg; пользователь может также использовать gdebi или какой-либо другой инструмент. Мне пришлось выбрать файл для разбора, поэтому я выбрал один правильный файл - dpkg.log. Случается, что я использую apt исключительно, но с той же разницей. – Will 28 June 2011 в 02:30

У меня была такая же проблема сегодня, я заметил, что ~ 2 недели назад я установил обновления в свою систему и все еще имел активированный ubuntu-x-swat ppa, у которого был новый драйвер nvidia. Старый был в порядке, новый сломал мою систему (только немного, мне потребовалось некоторое время, чтобы заметить).

Итак, я заглянул в /var/log/apt/history.log, чтобы найти предыдущий номер версии пакета драйверов nvidia, который я установил, а затем попытался найти пакет в / var / cache / apt / archives, где вы обычно найдете все пакеты, загруженные apt, но его там не было. И ppa не сохраняет предыдущую версию своих пакетов, как только они заменяются более новой версией, поэтому я тоже не смог ее получить.

Но отличие от предыдущей версии пакета до новой версии хранится в ppa для всех версий, а вместе с оригинальным tarball и его debian-патчами можно отменить все изменения новой версии и получить предыдущие версии.

Я кратко опишу Необходимые шаги:

  • Перейти к ppa, найти новейшую версию пакета и загрузить оригинальные tarball и (необязательные) патчи debian, в моем случае они были найдены на этой странице: https : //launchpad.net/~ubuntu-x-swat/+archive/x-updates/+sourcepub/2087970/+listing-archive-extra Оригинальный tarball называется: nvidia-graphics-drivers_290 .10.orig.tar.gz Патчи debian, которые делают встроенный пакет из tarball: nvidia-graphics-drivers_290.10-0ubuntu1 ~ lucid ~ xup1.diff.gz
  • Извлеките где-то желательно в новом и пустом каталоге, затем примените патчи к исходному дереву ~ / nvidia & gt; tar xvzf nvidia-graphics-drivers_290.10.orig.tar.gz [...] ~ / nvidia & gt; gzip -d nvidia-graphics-drivers_290.10-0ubuntu1 \ ~ lucid \ ~ xup1.diff.gz ~ / nvidia & gt; patch -p0 & lt; nvidia-graphics-drivers_290.10-0ubuntu1 \ ~ lucid \ ~ xup1.diff [...] Вы не должны получать какие-либо отброшенные куски при патче.
  • На той же странице ppa, вы найдете отличие от предыдущей версии пакета до той, которую вы смотрите, в разделе «Доступные различия». Для меня это было: diff от 285.05.09-0ubuntu1 ~ lucid ~ xup1 до 290.10-0ubuntu1 ~ lucid ~ xup1
  • Загрузите это, извлеките и отмените применить его к исправленному оригиналу источники: ~ / nvidia & gt; gzip -d nvidia-graphics-drivers_285.05.09-0ubuntu1 \ ~ lucid \ ~ xup1_290.10-0ubuntu1 \ ~ lucid \ ~ xup1.diff.gz ~ / nvidia & gt; patch -R-p0 & lt; nvidia-settings_285.05.09-0ubuntu1 \ ~ lucid \ ~ xup1_290.10-0ubuntu1 \ ~ lucid \ ~ xup1.diff [...]
  • Presto! Теперь у вас должно быть дерево исходных данных предыдущей версии, готовое для сборки пакета: ~ / nvidia & gt; mv nvidia-settings-290.10 / nvidia-settings-285.05.09 ~ / nvidia & gt; cd nvidia-settings-285.05.09 / ~ / n / nvidia-settings-285.05.09 & gt; dpkg-buildpackage
  • Что должно дать вам пакет предыдущей версии, который можно установить с помощью dpkg: ~ / n / nvidia-settings-285.05.09 & gt; cd .. ~ / nvidia & gt; sudo dpkg -i nvidia-current_285.05.09-0ubuntu1 \ ~ lucid \ ~ xup1_amd64.deb [...]
2
ответ дан 7 August 2018 в 21:14

В будущем, если вы используете synaptic (при условии, что вы можете загрузиться в X), вы можете выбрать из доступных версий, выделив пакет, который нужно изменить, а затем выберите «принудительная версия» в меню. Оттуда вы сможете понизить рейтинг.

0
ответ дан 7 August 2018 в 21:14

[Original Poster]

Не очень весело, я написал сценарий для вычисления разницы и выполнения команды restore; было задействовано около 100 пакетов. К сожалению, мое понижение не удалось, так как многие пакеты больше не доступны: (

  #! / Usr / bin / env python import sys, getopt, os from datetime import datetime datefmt = "% Y-% m  -% d% H:% M:% S "dry_run = True try: opts, args = getopt.getopt (sys.argv [1:]," y "), если не args: raise Exception (" дата не указана ")  elif len (args) == 1: args.append ("00:00:00") # default time elif len (args)! = 2: raise Exception ("неожиданные аргументы") snapshot = datetime.strptime ("".  join (args), datefmt) для opt, _ in opts: if opt == "-y": dry_run = False else: raise Exception ("неподдерживаемая опция% s"% opt), за исключением исключения: e: print "error:"  , e print "usage:", sys.argv [0], "[flags] YYYY-MM-DD [HH: MM: SS]" print "flags: -y = для реального, не просто покажите это,  восстановить его "sys.exit (1) # определить, что делать history = {} restore = set () remove = set () с open (" / var / log / dpkg.log "," r ") в качестве журнала:  для строки в журнале: дата, время, действие, строка = строка.split (нет, 3), когда = datetime.strptime ("% s% s"% (дата, время), datefmt) package, ver = line.strip (  )  .split (None, 1), если при & lt; = моментальный снимок: если действие включено ("upgrade", "install"): prev_ver, new_ver = ver.split () history [package] = new_ver elif action == "remove":  если пакет в истории: del history [package] else: print "(не удается удалить% s)"% line else: if action == "install": remove.add (package) elif action == "upgrade": если пакет в  history: restore.add (пакет) elif package not in remove: print "(не может вернуть% s)"% line elif action == "remove": если пакет в истории: restore.add (package) elif package in remove: remove  .remove (package) else: print "(не может отменить% s)"% line # показать, что делать для пакета при восстановлении: напечатать "restore", package, history [package] для пакета в remove: print "remove", package  # сделать это, если не dry_run: print "======" def execute (cmd): print cmd os.system (cmd) #execute ("apt-get remove" + "" .join (удалить)) выполнить (  "apt-get install" + "" .join ("% s =% s"% (package, history [package]) для восстановления пакета))  
0
ответ дан 7 August 2018 в 21:14

Использование xorg-edgers ppa для повседневной работы может быть довольно плохой идеей.

Это может дать вам последние версии драйверов, правда, но вы также можете получить неработающие драйверы.

Чтобы удалить PPA и понизить пакеты, замененные им (так что вернемся к тем, которые доступны в официальных репозиториях), сначала установите ppa-purge:

  sudo apt-get install ppa-purge [  ! d0] 

И затем удалите PPA, изящно понизив до официальных пакетов:

  sudo ppa-purge ppaname  

Это должно верните свои пакеты обратно на официальные.

Другие пакеты, которые были в PPA, но не в официальных репозиториях, не будут удалены. Вы должны вручную сообщить диспетчеру пакета об их удалении, например, используя apt:

  sudo apt-get purge packagename  

Вы можете найти имя ppa, посмотрев раздел «Источники программного обеспечения» в настройках Ubuntu и просмотрите список пакетов, которые он предоставляет на своей странице запуска (или посмотрите раздел «Происхождение» диспетчера пакетов Synaptic, если он установлен).

16
ответ дан 7 August 2018 в 21:14

[Original Poster]

Не очень весело, я написал сценарий для вычисления разницы и выполнения команды restore; было задействовано около 100 пакетов. К сожалению, мое понижение не удалось, так как многие пакеты больше не доступны: (

  #! / Usr / bin / env python import sys, getopt, os from datetime import datetime datefmt = "% Y-% m  -% d% H:% M:% S "dry_run = True try: opts, args = getopt.getopt (sys.argv [1:]," y "), если не args: raise Exception (" дата не указана ")  elif len (args) == 1: args.append ("00:00:00") # default time elif len (args)! = 2: raise Exception ("неожиданные аргументы") snapshot = datetime.strptime ("".  join (args), datefmt) для opt, _ in opts: if opt == "-y": dry_run = False else: raise Exception ("неподдерживаемая опция% s"% opt), за исключением исключения: e: print "error:"  , e print "usage:", sys.argv [0], "[flags] YYYY-MM-DD [HH: MM: SS]" print "flags: -y = для реального, не просто покажите это,  восстановить его "sys.exit (1) # определить, что делать history = {} restore = set () remove = set () с open (" / var / log / dpkg.log "," r ") в качестве журнала:  для строки в журнале: дата, время, действие, строка = строка.split (нет, 3), когда = datetime.strptime ("% s% s"% (дата, время), datefmt) package, ver = line.strip (  )  .split (None, 1), если при & lt; = моментальный снимок: если действие включено ("upgrade", "install"): prev_ver, new_ver = ver.split () history [package] = new_ver elif action == "remove":  если пакет в истории: del history [package] else: print "(не удается удалить% s)"% line else: if action == "install": remove.add (package) elif action == "upgrade": если пакет в  history: restore.add (пакет) elif package not in remove: print "(не может вернуть% s)"% line elif action == "remove": если пакет в истории: restore.add (package) elif package in remove: remove  .remove (package) else: print "(не может отменить% s)"% line # показать, что делать для пакета при восстановлении: напечатать "restore", package, history [package] для пакета в remove: print "remove", package  # сделать это, если не dry_run: print "======" def execute (cmd): print cmd os.system (cmd) #execute ("apt-get remove" + "" .join (удалить)) выполнить (  "apt-get install" + "" .join ("% s =% s"% (package, history [package]) для восстановления пакета))  
0
ответ дан 10 August 2018 в 09:32

В будущем, если вы используете synaptic (при условии, что вы можете загрузиться в X), вы можете выбрать из доступных версий, выделив пакет, который нужно изменить, а затем выберите «принудительная версия» в меню. Оттуда вы сможете понизить рейтинг.

0
ответ дан 10 August 2018 в 09:32

Другие вопросы по тегам:

Похожие вопросы: