سؤال كيفية سرد جميع الحزم المثبتة


أود إخراج قائمة بجميع الحزم المثبتة في ملف نصي حتى أتمكن من مراجعتها وتثبيتها على نظام آخر. كيف يمكنني ان افعل هذا؟


1578
2017-12-17 02:08


الأصل


وقد تم الرد على هذا بالفعل هنا. - Simon Quigley
نجاح باهر ، من خلال الاطلاع على الإجابات هناك يبدو أن هناك العديد من الطرق لتحقيق ذلك: / - Madivad
كيف أقوم بعملية التثبيت السائبة على نظام جديد من مثل هذا الملف النصي؟ - Elysium
Madivad كان من المفترض أن مديري الحزم هذه جعلوا الحياة أسهل ... - René Nyffenegger
سؤال مماثل في unix.stackexchange.com "حزم القوائم حسب تاريخ التثبيت" - JamesThomasMoon1979


الأجوبة:


أوبونتو 14.04 وما فوق

ال apt أداة على Ubuntu 14.04 وما فوقها يجعل هذا سهل للغاية.

apt list --installed

طريقة قديمة

للحصول على قائمة الحزم المثبتة محليًا ، قم بذلك في المحطة الطرفية الخاصة بك:

dpkg --get-selections | grep -v deinstall

(ال -v tag "inverts" grep لإرجاع الخطوط غير المتطابقة)

للحصول على قائمة حزمة محددة مثبتة:

dpkg --get-selections | grep postgres

لحفظ هذه القائمة في ملف نصي يسمى packages على سطح المكتب الخاص بك القيام بذلك في المحطة الطرفية الخاصة بك:

dpkg --get-selections | grep -v deinstall > ~/Desktop/packages

بدلا من ذلك ، استخدم ببساطة

dpkg -l

(لا تحتاج إلى تشغيل أي من هذه الأوامر كالمستخدم المتميز ، لذا لا sudo أو أي أشكال أخرى ضرورية هنا)


1730
2017-12-17 03:02



ثم ، عند التثبيت على الكمبيوتر الجديد ، افعل cat ~/Desktop/packages > sudo dpkg --set-selections && sudo apt-get dselect upgrade  مصدر - koanhead
ربما تغيرت صيغة بناء الجملة dpkg قليلاً منذ عام 2006 لأن ذلك الأمر لم يعمل بالنسبة لي ،koanhead. sudo dpkg --set-selections < ~/Desktop/packages && sudo apt-get -u dselect-upgrade عمل الحيلة. - James
لاحظ أن هذا لن يعقب أي الحزم التي تم تثبيتها بوضوح من قبل المستخدم والتي تم تثبيتها كتركيبات. هذا يعني أنه في حالة استخدام هذه الطريقة لإعادة إنشاء الإعداد على جهاز آخر ، فلن تتمكن apt من إزالة تبعيات غير ضرورية عند إزالة حزمة معينة. - intuited
من المحزن والمدهش أن تعليقاتintuited ليست مفهومة بشكل أفضل من قبل المجتمع. هل سيتوقف المزيد من المساهمين "ذوي التقييم العالي" على التفكير أكثر قبل تقديم النصيحة بأن مجرد إعادة تحميل الحزم القديمة على إصدار جديد من ubuntu ليست فكرة جيدة (؟). مع كل خيارات dpkg ، ما زلت لا أرى أحدًا يقوم بسحب الحزم "الصريحة" المثبتة من قبل المستخدم حتى يمكن إعادة تحميل قائمة THAT وتركها لتركيب اعتمادياتها ؛ أحب أن أعرف ذلك - يرجى مشاركة هذه المعلومات. في هذه الأثناء ، قم بعمل قائمة بالحزم التي تحتاجها بالفعل عند إعادة التثبيت وتشغيلها - Ricalsin
نحن نعلم جميعا أن لينكس يميز الناس دون ذاكرة التصوير الفوتوغرافي ، ولكن بجدية ، ما هو الخطأ في ذلك apt list installed. يوما ما يجب أن نتوقف بشكل منهجي عن الفشل في مبدأ "الحفاظ على الأشياء البسيطة السهلة".


للحصول على الحزم التي تم تثبيتها بشكل صريح (وليس فقط تثبيتها كتركيبات) ، يمكنك تشغيلها

aptitude search '~i!~M'

سيشمل هذا أيضًا وصفًا مختصرًا قد ترغب فيه. إذا لم يكن كذلك ، يمكنك أيضًا إضافة الخيار -F '%p'، كما ذكر karthick87.


ويبدو أن هناك خيار آخر يتمثل في نسخ الملف /var/lib/apt/extended_states، وهي قاعدة بيانات ملف نصي بهذا التنسيق:

Package: grub-common
Architecture: amd64
Auto-Installed: 0

Package: linux-headers-2.6.35-22-generic
Architecture: amd64
Auto-Installed: 1

Auto-Installed: 0 يشير إلى أن الحزمة تم تثبيتها بشكل صريح وليست مجرد تبعية.


380
2017-08-28 21:35



هذا يجب أن يكون الجواب الصحيح. لماذا قائمة التبعيات؟ - Stavros Korokithakis
هذه ينبغي يكون الجواب ، ولكن باستخدام موهبة غير موثوق به بعض الشيء بسبب Multiarch حاليا (إصلاحات على الطريق) ، للأسف. ما زلت تجري +1 للإشارة فقط إلى قائمة الحزم المثبتة بشكل واضح وطريقة للقيام بذلك (على الرغم من أنه لن يعمل على 11.10+ حاليًا). - gertvdijk
intuited "Fix Released" for Precise (منذ بعض الوقت). :) - gertvdijk
هذا يسرد جميع الحزم ، وليس فقط الحزم المثبتة يدويا على أوبونتو 13.10. - Eamon Nerbonne
على Ubuntu-15.10 ، يجب تثبيت aptitude أولاً على سبيل المثال: sudo apt-get install aptitude - Mark Mikofski


إنشاء نسخة احتياطية من الحزم المثبتة حاليًا:

dpkg --get-selections > list.txt

ثم (على نظام آخر) استعادة عمليات التثبيت من تلك القائمة:

dpkg --clear-selections
sudo dpkg --set-selections < list.txt

للتخلص من الحزم القديمة:

sudo apt-get autoremove

للحصول على تثبيت مثل في وقت النسخ الاحتياطي (أي لتثبيت الحزم التي تم إعدادها بواسطة dpkg --set-selections):

sudo apt-get dselect-upgrade

179
2018-05-16 18:26



نصيحة رائعة حول استعادة على جهاز آخر. +1. - Drew Noakes
هجرة بين 2 أجهزة مختلفة 12.04 أوبونتو هذا النهج كسر نظام بلدي. استغرق الأمر بعض الوقت حتى أدركت ذلك بطريقة ما ubuntu-desktop تم إلغاء تثبيته - ربما بسبب أحد أوامر dpkg. كن حذرا ، استغرق مني ساعات لاصلاح الضرر! - Karl Frisk
وأحيانًا ما يقوم النظام بتحديث تطبيق ترغب في أن يقوم النظام به على وجه التحديد بعدم لمسه على الإطلاق ، قم بإطلاقه في نهاية الأوامر sudo apt-mark hold name-your-package  . هذا سيمنع apt-get من الترقية إلى الإصدار الحالي وهو الافتراضي لتحديث العملية. - Faron


لسرد جميع الحزم مثبت عمدا (ليس كاعتماديات) بواسطة أوامر apt ، قم بتشغيل ما يلي:

(zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null |
  egrep '^(Start-Date:|Commandline:)' |
  grep -v aptdaemon |
  egrep '^Commandline:'

يوفر هذا عرضًا يستند إلى الوقت العكسي ، مع سرد الأوامر القديمة أولاً:

Commandline: apt-get install k3b
Commandline: apt-get install jhead
...

تظهر بيانات التثبيت أيضًا استخدام متشابك ، ولكن بدون تفاصيل (الشيء نفسه مع تاريخ التثبيت):

(zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null |
  egrep '^(Start-Date:|Commandline:)' |
  grep -v aptdaemon |
  egrep -B1 '^Commandline:'

توفير ما يلي:

Start-Date: 2012-09-23  14:02:14
Commandline: apt-get install gparted
Start-Date: 2012-09-23  15:02:51
Commandline: apt-get install sysstat
...

174
2018-02-02 10:39



أو (مع zgrep وإزالة رسائل التحديث): zgrep -hE '^(Start-Date:|Commandline:)' $(ls -tr /var/log/apt/history.log*.gz ) | egrep -v 'aptdaemon|upgrade' | egrep -B1 '^Commandline:' - belacqua
هل يفتقد هذا الأسلوب الحزم المثبتة مع dpkg؟؟ - drevicko
في حين أن الإجابات البسيطة المذكورة أعلاه جيدة للمستخدم العام. هذه الطريقة حتى الآن هي الأفضل للتراجع عن جميع التخصيصات التي تم إجراؤها على الماكينة ، حيث إنها تعرض أيضًا ما تمت إزالته أو إضافته من الصورة الأساسية ، حيث إنها تسردهم في التسلسل الذي تم تنفيذه ، وتساعدك على تذكر أي التسلسل الصحيح لإضافتها في نظام آخر. - AllGamer
drevicko أنت على صواب ، ولا يتم سرد الحزم المثبتة مع dpkg - Steve Buzonas
هذا مفيد للغاية للحفاظ على التنظيم - يفضّلني عقلي بهذه الطريقة لأي سبب كان .. - JeremyFelix


apt-mark showmanual

صفحات رجل الدولة:

سيقوم بطباعة قائمة الحزم المثبتة يدويًا

لذا ، يجب أن تعطي قائمة بالحزم المثبتة بشكل صريح (على الرغم من أن هذا يشمل الحزم التي كانت جزءًا من التثبيت المبدئي الافتراضي) بدون جميع الاعتمادات المضمنة بسبب تثبيت هذه الحزم.

لإخراج النتيجة إلى ملف نصي:

apt-mark showmanual >list-installed.txt

60
2017-07-10 13:43



على ديبيان "apt-mark showmanual" لم تنجح في "الضغط" ولكن عملت على "wheezy" - Wadih M.
كما هو الحال مع معظم الإجابات الأخرى ، apt-mark showmanual لا حقا كما أنه يسرد أطنانًا من الحزم المثبتة تلقائيًا ، وربما جزءًا من التثبيت الأساسي. - mivk
حسنا كان السؤال بالنسبة للحزم المثبتة وهذا يعطي كل الحزم المثبتة ناقص التبعية المثبتة تلقائيا. وهو يشمل الحزم الأولية كجزء من التثبيت الأولي. أعتقد أنه يمكنك تشغيل هذا على تثبيت جديد للحصول على قائمة بالتثبيتات الافتراضية ثم طرح ذلك من هذا لمعرفة الفرق. - Tim Tisdall


dpkg-query (بدلا من dpkg --get-selectionsالذي يسرد بعض الحزم غير المثبتة) كما يلي:

dpkg-query -W -f='${PackageSpec} ${Status}\n' | grep installed |  sort -u | cut -f1 -d \ > installed-pkgs

أو:

dpkg -l | grep ^ii | sed 's_  _\t_g' | cut -f 2 > installed-pkgs

38
2018-05-16 18:40



Typying # for pkg in `cat installed-pkgs`; do apt-get install -y $pkg; done في النظام الثاني جعلت هذا حتى أنه سيتم تثبيت الحزم. - xyz
julianromera: apt-get install -y $(< installed-pkgs) سيجعل الأمر كذلك حتى يبدأ تشغيل apt-get مرة واحدة فقط ويعتني بكل التبعيات دفعة واحدة. - jamadagni
julianromera ... صححني إذا كنت مخطئا ولكن لبناء التطبيق مع التبعيات قبل القيام التثبيت عادة ما يكون sudo apt-get build-dep name-package; sudo apt-get install name-package;  ؟ - Faron


لسرد جميع الحزم المثبتة ،

dpkg -l |awk '/^[hi]i/{print $2}' > 1.txt

أو

aptitude search -F '%p' '~i' > 1.txt

أو

dpkg --get-selections > 1.txt

ملحوظة:
سوف تحصل على ملف النتيجة 1.txt في مجلد المنزل الخاص بك أو يمكنك تحديد المسار الخاص بك.


36
2017-12-17 03:35





يمكنك استخدام Synaptic لحفظ الحالة الحالية لمركبتك التي تم تثبيتها. في Synaptic ، حدد "file / save markings" ، وأدخل اسم الملف لحفظ الحالة إليه ، وتأكد من تحديد مربع "حفظ الحالة بالكامل ، وليس التغييرات فقط".

يمكن تحميل الملف المحفوظ من هذا إلى جهاز جديد باستخدام "علامات الملف / القراءة" في Synaptic.


33
2017-12-17 04:46





أوصي باستخدام مخطط. على الرغم من أنه مصمم للخوادم ، يمكن استخدامه أيضًا من أجهزة سطح المكتب أيضًا. ستقوم بإنشاء نص برمجي شيف / شيف / دمية تستخدمه لإعادة تثبيت جميع الحزم.


32
2018-04-12 12:26



أنا لا أحاول مرآة كاملة ، ولكن فقط حقيقة أخذ ملفات التكوين في الاعتبار رائع. كنت أبحث عن مثل هذه الأداة لفترة من الوقت الآن ، شكرا جزيلا لك! - tbolender


تريد إعادة تثبيت الحزم الآن هناك على 12.04 ، أليس كذلك؟

إذا كان الأمر كذلك ، فمن السهل للغاية. ستحتاج إلى "حساب Ubuntu Single Sign On". (قم بإنشائه قبل إعادة التثبيت حتى تتم مزامنة النظام الخاص بك.)

  1. انتقل إلى مركز البرامج وابحث عن الخيار "مزامنة بين أجهزة الكمبيوتر ..." ضمن القائمة "ملف".

  2. عندما تنقر عليه سترى جهاز الكمبيوتر الخاص بك مسجل وقائمة بجميع التطبيقات على جهاز الكمبيوتر الخاص بك.

  3. عند تثبيت جديد ، سيتم اعتبار هذا الكمبيوتر كمبيوتر جديد.

  4. عليك فقط تسجيل الدخول إلى حساب Ubuntu الخاص بك وسيتم عرض الكمبيوتر السابق.

  5. انقر عليه؛ ستحصل على قائمة بجميع التطبيقات. حدد "تثبيت" على التطبيق الذي تريد تثبيته.


31
2018-05-16 18:26



أقوم بوضع نفس الاسم للكمبيوتر الخاص بي على تثبيت جديد لمنع التحميل الكبير من خادم Ubuntu One في كل مرة. هل تعتقد أن هذا العمل بالنسبة لي؟ - AliNâ