Ubuntu, jak skonfigurować nową maszynę jak istniejącą

27

Mam jedną konfigurację komputera z potrzebnymi aplikacjami i chciałbym zainstalować to samo w nowym pudełku Ubuntu.

Czy istnieje skrypt z listą wszystkich zainstalowanych aplikacji, dzięki czemu mogę różnicować się między polami i dodawać brakujące elementy?

Z góry dzięki, Chris

Chris Kimpton
źródło

Odpowiedzi:

18

Oprócz sztuczek dpkg wspomnianych przez pjz, możesz także przyjrzeć się etckeeper ( samouczek ) - aplikacji, która daje kontrolę nad wersją / etc / *, ułatwiając znajdowanie wprowadzonych zmian i powielanie ich na innych serwery.

Ponadto można użyć krótszej listy niż utworzona metodą pjz

$ deborphan -a --no-show-section > /tmp/mypackagelist

To da ci listę pakietów, które zainstalują wszystkie inne pakiety, których potrzebujesz jako zależności. Może być przydatny, jeśli chcesz przejrzeć listę. (dpkg --get-selections wygeneruje długą listę ). Ponadto lista jest na tyle krótka, że ​​można dodawać nowe wiersze i komentować wpisy za pomocą „#”. Następnie podczas instalowania dodatkowych pakietów możesz to zrobić

$ grep -v '#' /tmp/mypackagelist | xargs apt-get install -y

W ten sposób, jeśli istnieją pakiety, które chcesz zainstalować tylko na niektórych komputerach, nie musisz ich całkowicie usuwać z listy pakietów.

Hamish Downer
źródło
etckeeper wygląda naprawdę interesująco (+1).
jkp
17
dpkg --get-selections >/tmp/mypackagelist

powinien załatwić sprawę. Następnie, po upewnieniu się, że twój plik /etc/apt/sources.list na nowym komputerze ma taki sam zestaw wpisów, jak na starym, skopiuj mypackagelist na nowy komputer i wykonaj:

cat mypackagelist | xargs apt-get -y install 

i powinieneś być dobry.

Zauważ, że linia dpkg --get-selections jest również dobrą informacją do umieszczenia w twoim / etc / dir okazjonalnie - oznacza to, że nie musisz zawracać sobie głowy kopią zapasową / bin / i / usr / bin / i tak dalej, ponieważ wiesz jakie pakiety są w systemie.

pjz
źródło
Tak, Jeff, ale co powiesz na modyfikacje plików konfiguracyjnych? co powiesz na opcje dpkg-rekonfiguracji? co z dd
nazwami
2

Forum Ubuntu ma dobrą odpowiedź

  1. Na starej maszynie: $ dpkg --get-selections> zainstalowane oprogramowanie
    • Spowoduje to wyświetlenie listy zainstalowanych aplikacji
  2. Na nowym komputerze: $ dpkg --set-selections
    • Spowoduje to, że nowy komputer zainstaluje pakiety, które nie są aktualnie zainstalowane na nowym komputerze.
    • Interesujące może być sprawdzenie, czy na nowym komputerze nie ma zainstalowanych pakietów na starym komputerze, więc można znaleźć polecenie dpkg --get-selections> na nowym komputerze, a następnie użyć diff do porównania plików wyjściowych z obu.
  3. Wreszcie na nowej maszynie: $ dselect, a pakiety zostaną zainstalowane.

Niektóre dodatkowe linki z dyskusji na forach:

  1. Nie zapomnij swoich kluczy gpg (z tego samego wątku)
  2. Jak zainstalować wszystkie wymagane pakiety i odinstalować wszystkie niepożądane pakiety
pcapademic
źródło
2

Lepszymi poleceniami dpkg może być [oryginalna maszyna]

dpkg --get-selections | grep -v deinstall > packages_list

następnie podczas instalacji [nowa maszyna; po przesłaniu listy paczek]

sudo dpkg --set-selections < packages_list
sudo apt-get -u dselect-upgrade
Benji
źródło
1

Jeśli nie jesteś fanem CLI (choć tak naprawdę powinieneś być), możesz użyć menedżera pakietów Synaptic, aby zapisać obraz zainstalowanych pakietów i użyć tego pliku (ponownie przez Synaptic), aby załadować nową maszynę. Pod opcją oznaczenia pliku / zapisz znajduje się pole wyboru o nazwie „zapisz pełny stan”.

Nerdfest
źródło
Myślę, że to była metoda, którą Cory znalazł
jbdavid
1

Dlaczego po prostu nie klonujesz urządzenia dd?

elcuco
źródło
1
To. Wystarczy sklonować maszynę i zmienić nazwę, to zdecydowanie najszybszy sposób na zrobienie tego.
pjc50,
1

Użycie FSArchiver do replikacji maszyn jest całkowicie dopuszczalne. W przeciwnym razie oto przydatne pary poleceń, których pierwszą połowę możesz również dodać do zapasowego crona:

debconf-get-selections
debconf-set-selections

~

aptitude-create-state-bundle
aptitude-run-state-bundle --unpack

~

dpkg --get-selections
dpkg --clear-selections; dpkg --set-selections

Lokalizacje, które powinieneś replikować to / etc i / var. Powyższe polecenia bezpośrednio manipulują kilkoma plikami w / var, a niektóre pliki konfiguracyjne w / etc pośrednio poprzez debconf. Ten sam efekt uzyskasz, po prostu replikując te poddrzewa i uruchamiając aptitude.

Tobu
źródło
0

Myślę, że Docker byłby teraz na to sposobem - zdefiniuj wymagania w Dockerfile - możesz następnie uruchomić go na dowolnym hoście Docker.

Chris Kimpton
źródło