Как уже упоминалось, вы можете использовать пробел перед вашей командой, но это зависит от переменной HISTCONTROL. Вот несколько альтернатив -
Вы можете сказать терминалу прекратить запись и начать запись истории. Это можно сделать с помощью этих команд -
set +o history #stop recording history
set -o history #start recording history
Если вы уже запустили некоторые команды и забыли остановить запись или использовать пробел, вы все равно можете остановить ее от записи до .bash_history, пока сеанс по-прежнему открыт. Он записывается в файл при закрытии сеанса терминала. Таким образом, вы можете удалить текущую историю сеанса непосредственно перед закрытием сеанса (до выхода из su в вашем случае). Это можно сделать с помощью этой команды -
history -c
Крайним вариантом было бы убить терминальный процесс, когда вы закончите выполнение всех команд. Вы действительно убиваете процесс, прежде чем он сможет записать историю в файл.
kill -9 $$
$$ выдаст текущий идентификатор процесса терминала, а kill -9 убьет этот процесс.
Использование 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).
У меня была такая же проблема сегодня, я заметил, что ~ 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
[...]
В будущем, если вы используете synaptic (при условии, что вы можете загрузиться в X), вы можете выбрать из доступных версий, выделив пакет, который нужно изменить, а затем выберите «принудительная версия» в меню. Оттуда вы сможете понизить рейтинг.
[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))
Использование 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).
У меня была такая же проблема сегодня, я заметил, что ~ 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
[...]
[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))
В будущем, если вы используете synaptic (при условии, что вы можете загрузиться в X), вы можете выбрать из доступных версий, выделив пакет, который нужно изменить, а затем выберите «принудительная версия» в меню. Оттуда вы сможете понизить рейтинг.
Использование 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).
У меня была такая же проблема сегодня, я заметил, что ~ 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
[...]
В будущем, если вы используете synaptic (при условии, что вы можете загрузиться в X), вы можете выбрать из доступных версий, выделив пакет, который нужно изменить, а затем выберите «принудительная версия» в меню. Оттуда вы сможете понизить рейтинг.
[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))
Использование 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).
У меня была такая же проблема сегодня, я заметил, что ~ 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
[...]
В будущем, если вы используете synaptic (при условии, что вы можете загрузиться в X), вы можете выбрать из доступных версий, выделив пакет, который нужно изменить, а затем выберите «принудительная версия» в меню. Оттуда вы сможете понизить рейтинг.
[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))
Использование 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).
У меня была такая же проблема сегодня, я заметил, что ~ 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
[...]
В будущем, если вы используете synaptic (при условии, что вы можете загрузиться в X), вы можете выбрать из доступных версий, выделив пакет, который нужно изменить, а затем выберите «принудительная версия» в меню. Оттуда вы сможете понизить рейтинг.
[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))
Использование 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).
У меня была такая же проблема сегодня, я заметил, что ~ 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
[...]
В будущем, если вы используете synaptic (при условии, что вы можете загрузиться в X), вы можете выбрать из доступных версий, выделив пакет, который нужно изменить, а затем выберите «принудительная версия» в меню. Оттуда вы сможете понизить рейтинг.
[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))
У меня была такая же проблема сегодня, я заметил, что ~ 2 недели назад я установил обновления в свою систему и все еще имел активированный ubuntu-x-swat ppa, у которого был новый драйвер nvidia. Старый был в порядке, новый сломал мою систему (только немного, мне потребовалось некоторое время, чтобы заметить).
Итак, я заглянул в /var/log/apt/history.log, чтобы найти предыдущий номер версии пакета драйверов nvidia, который я установил, а затем попытался найти пакет в / var / cache / apt / archives, где вы обычно найдете все пакеты, загруженные apt, но его там не было. И ppa не сохраняет предыдущую версию своих пакетов, как только они заменяются более новой версией, поэтому я тоже не смог ее получить.
Но отличие от предыдущей версии пакета до новой версии хранится в 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 [...]
Вы не должны получать какие-либо отброшенные куски при патче. 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 [...]
~ / 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
~ / n / nvidia-settings-285.05.09 & gt; cd .. ~ / nvidia & gt; sudo dpkg -i nvidia-current_285.05.09-0ubuntu1 \ ~ lucid \ ~ xup1_amd64.deb [...]
В будущем, если вы используете synaptic (при условии, что вы можете загрузиться в X), вы можете выбрать из доступных версий, выделив пакет, который нужно изменить, а затем выберите «принудительная версия» в меню. Оттуда вы сможете понизить рейтинг.
[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]) для восстановления пакета))
Использование 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, если он установлен).
[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]) для восстановления пакета))
В будущем, если вы используете synaptic (при условии, что вы можете загрузиться в X), вы можете выбрать из доступных версий, выделив пакет, который нужно изменить, а затем выберите «принудительная версия» в меню. Оттуда вы сможете понизить рейтинг.