Установить разницу пакетов, установленных на 2 машины

Имеются две машины:

  • Сервер A
  • Сервер B

, какой инструмент лучше всего выводит «набор», diff вид пакетов установлено:

  • Только на сервере A
  • Только на сервере B
  • На обеих машинах
4
задан 11 September 2013 в 16:41

2 ответа

  1. Получить список всех пакетов для каждого компьютера в виде текстовых файлов:

    $ ssh server-a dpkg --get-selections | grep '\binstall 
  2. Использовать оболочку "set операции " для получения желаемых результатов:

    $ comm -12 <(sort server-a.txt) <(sort server-b.txt) > both.txt
    $ comm -23 <(sort server-a.txt) <(sort server-b.txt) > only-server-a.txt
    $ comm -13 <(sort server-a.txt) <(sort server-b.txt) > only-server-b.txt
    
  3. Просмотрите, сколько пакетов в каждом наборе:

    $ wc -l *.txt
      2238 both.txt
       948 only-server-a.txt
        89 only-server-b.txt
      3186 server-a.txt
      2327 server-b.txt
      8788 total
    
| cut -f 1 > server-a.txt $ ssh server-b dpkg --get-selections | grep '\binstall
  • Использовать оболочку "set операции " для получения желаемых результатов:

    $ comm -12 <(sort server-a.txt) <(sort server-b.txt) > both.txt
    $ comm -23 <(sort server-a.txt) <(sort server-b.txt) > only-server-a.txt
    $ comm -13 <(sort server-a.txt) <(sort server-b.txt) > only-server-b.txt
    
  • Просмотрите, сколько пакетов в каждом наборе:

    $ wc -l *.txt
      2238 both.txt
       948 only-server-a.txt
        89 only-server-b.txt
      3186 server-a.txt
      2327 server-b.txt
      8788 total
    
  • | cut -f 1 > server-b.txt
  • Использовать оболочку "set операции " для получения желаемых результатов:

    $ comm -12 <(sort server-a.txt) <(sort server-b.txt) > both.txt
    $ comm -23 <(sort server-a.txt) <(sort server-b.txt) > only-server-a.txt
    $ comm -13 <(sort server-a.txt) <(sort server-b.txt) > only-server-b.txt
    
  • Просмотрите, сколько пакетов в каждом наборе:

    $ wc -l *.txt
      2238 both.txt
       948 only-server-a.txt
        89 only-server-b.txt
      3186 server-a.txt
      2327 server-b.txt
      8788 total
    
  • 0
    ответ дан 11 September 2013 в 16:41

    Я только что написал этот сценарий, который сравнивает также версии пакетов (если вам не нужны версии, то то, что опубликовал rndrük, лучше):

    https://github.com/lepe/ scripts / blob / master / compare_ubuntu_apt.pl

    Использование:

    1) Создать список пакетов на обоих компьютерах, например:

    apt --installed list | tail -n+2 > that_server.lst
    
    [ 118] 2) Выполните скрипт на Perl:

    ./compare_ubuntu_apt.pl this_server.lst that_server.lst
    

    Результаты: (пример)

    ----------------------------------
     DIFFERENCES 
    ----------------------------------
     @ apparmor : 2.8.95~2430-0ubuntu5.2 -> 2.8.95~2430-0ubuntu5.3
     @ apt : 1.0.1ubuntu2.8 -> 1.0.1ubuntu2.10
     @ apt-transport-https : 1.0.1ubuntu2.8 -> 1.0.1ubuntu2.10
     @ apt-utils : 1.0.1ubuntu2.8 -> 1.0.1ubuntu2.10
     @ base-files : 7.2ubuntu5.2 -> 7.2ubuntu5.3
     @ bash-completion : 1:2.1-4 -> 1:2.1-4ubuntu0.1
    ----------------------------------
     MISSING IN this_server.lst
    ----------------------------------
     + acl : 2.2.52-1
     + acpid : 1:2.0.21-1ubuntu2
     + apport : 2.14.1-0ubuntu3.11
     + apport-symptoms : 0.20
     + at : 3.1.14-1ubuntu1
     + at-spi2-core : 2.10.2.is.2.10.1-0ubuntu1
     + attr : 1:2.4.47-1ubuntu1
     + autotools-dev : 20130810.1
    ----------------------------------
     MISSING IN that_server.lst
    ----------------------------------
     - apcupsd : 3.14.10-2build1
     - apcupsd-doc : 3.14.10-2build1
     - beep : 1.3-3
     - btrfs-tools : 3.12-1
     - discover : 2.1.2-5.2ubuntu1
    
    0
    ответ дан 11 September 2013 в 16:41

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

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