Відновлення всіх даних та залежностей від dpkg --set-select '*'


44

Тож я можу працювати на одній машині:

dpkg --get-selections '*' > selection.txt

На іншій машині:

dpkg --set-selections < selection.txt

... з наступним:

aptitude install
apt-get -u dselect-upgrade

... встановити пакунки, які.

Однак виявляється, що деяка інформація втрачається в процесі, наприклад, чи встановлено пакет (скажімо xyz) автоматично, як залежність від іншого пакету ( abc). Це ви можете бачити, коли ви робите щось подібне apt-get --purge remove abc. На оригінальній машині вам буде повідомлено, що пакет xyzвстановлений як залежність abcі ви можете використовувати його apt-get autoremoveдля позбавлення.

Тепер я знаю , deborphanі debfoster, але вони громіздкі , щоб використовувати , враховуючи (простий) завдання під рукою.

Здається, збереження та відновлення виділених елементів, як показано вище, недостатньо для відновлення тонких залежностей встановлених пакетів.

Чи є спосіб створити резервну копію повного набору метаданих для управління пакунками та відновити їх у повному обсязі?


Я часто замислювався над тим, що я створюю великий скрипт оболонки з "sudo apt-get install" з усіма своїми пакунками (мінус libs). Звичайно, я стикаюся з тією ж проблемою, що і у вас.
— Чак Р

Я б здогадався, що найкраще почати шукати - перевірити, чи справді dpkg відповідає за цю інформацію. Якщо це не так, можливо, це влучна робота.
— Геккл

3
Якщо ви apt-mark
— рухаєтеся

Це не в репо пакеті 10,04, чи не так? Це частина канонічних репостів чи сторонніх?
— 0xC0000022L

2
Ні, це лише коментар "для вашої інформації". Я б використовував apt-mark (він є частиною apt, тому його вже слід встановити), щоб отримати та встановити позначки для пакетів (детальніше див. Його сторінку сторінки ).
— htorque

Відповіді:


39

Резервне копіювання:

apt-mark showauto > pkgs_auto.lst
apt-mark showmanual > pkgs_manual.lst

Відновлення:

sudo apt-mark auto $(cat pkgs_auto.lst)
sudo apt-mark manual $(cat pkgs_manual.lst)

Дякуємо, збирався попросити вас або Лекенштейн написати це як відповідь.
— 0xC0000022L

Чи дозволяють ці команди перевстановити програми із цього списку?
— Світлана Бєлкін

Чи може це видалити пакунки, які встановлені додатково, після відновлення?
— n611x007

1
Чи можете ви пояснити різницю між autoі manual? Дякую.
— Анто

Я випадково позначив як посібник купу інших пакетів ... Чи є спосіб повернути? Спасибі
— дентекс

2

Вибрана відповідь на це запитання неповна і не працює (або більше не працює). Болісне виправлення полягає у використанні bash for-loop для розбору вихідних * .lst файлів та подачі їх apt install. Однак поганий вибір не буде проілюстрований тут.

Кращим вибором є використання apt-clone, як видно з цієї відповіді на Unix & Linux Stackexchange. Це створює невеликий файл (приблизно 100 Кб або менше для моєї системи). Нібито, він клонує пакети з невеликим зусиллям або болем.

Отже, коротше, на оригінальній машині:

apt-clone clone `uname -n`

Потім на машині для клонування скопіюйте файл клонування та запустіть:

apt-clone restore original-machine-name.apt-clone.tar.gz

Я включаю цю відповідь сюди, оскільки ця сторінка з'явилася в початкових веб-пошуку, але інша відповідь не. Цей спосіб виглядає легше.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.