Synchronizowanie instalacji apt-get między wieloma komputerami

11

Czy istnieje sposób na synchronizację moich instalacji (i usuwania) między wieloma komputerami?

Najlepiej z Dropbox - ponieważ już go używam do synchronizacji plików.

Pomyślałem o aliasie dla poleceń apt-get installi apt-get remove, który przechowuje parametry do pliku (jeden do instalacji, jeden do usunięcia) i innym poleceniu, które odczytuje wszystkie wpisy w pliku i wykonuje odpowiednie polecenie. Czy to realistyczne podejście?

Chris
źródło

Odpowiedzi:

7

Możesz użyć marionetki, aby utworzyć pliki konfiguracyjne określające, które pakiety powinny zostać zainstalowane, a możesz użyć Dropbox zamiast serwera puppetmaster do synchronizacji konfiguracji marionetek między komputerami, a także zadania crona do okresowego uruchamiania marionetki i wdrażania wszelkich zmian konfiguracji.

Mike Scott
źródło
To świetny pomysł na niewielką liczbę maszyn. W większym środowisku zdecydowanie powinieneś mieć marionetkowego nauczyciela. Tam, gdzie pracuję, zarządzamy tysiącami maszyn z marionetką.
Ed Manet,
9

Nie wiem, czy istnieje lepszy sposób (prawdopodobnie istnieje), ale w zależności od potrzebnej skali możesz użyć funkcji wyszukiwania aptitude dla części maszyny. Pozwala wyszukiwać pakiety pasujące do wzorca. Więc aptitude search '~i'daje wszystkie zainstalowane pakiety

Musimy jednak pójść o krok dalej. Menedżer pakietów lubi wiedzieć, które pakiety zostały bezpośrednio przez ciebie zamówione, a które właśnie ściągnięte z powodu innych pakietów. Bez tych informacji mogą się zdarzyć brzydkie rzeczy. Możemy więc rozwinąć ten wzorzec wyszukiwania, aby wybrać pakiety, które nie są automatycznie instalowane:aptitude search '!~M ~i'

Funkcja wyszukiwania została szczegółowo opisana w podręczniku użytkownika Aptitude .

Teraz masz swoją listę pakietów do zainstalowania. W razie potrzeby możesz sformatować dane wyjściowe , przekazując do tego polecenia flagę -F, na przykład -F '% p', aby uzyskać listę zawierającą tylko nazwy pakietów.


Na przykład możesz uruchomić to na komputerze 1 :

aptitude -F "%c %p" --disable-columns search '!~M ~i' | awk -F " " '{ print "apt-get -y install " $2 }' > aptshell.sh

Następnie skopiuj nowo utworzony aptshell.shplik na komputer 2 i użyj tego polecenia na komputerze 2, aby go uruchomić:

sudo sh aptshell.sh

Następnie powtórz proces z oryginalną maszyną 2 jako nową maszyną 1 , a oryginalną maszyną 1 jako nową maszyną 2 . Teraz każda maszyna ma wszystkie pakiety, które wcześniej były tylko na drugiej.

Dylan McCall
źródło
Wspaniale byłoby dołączyć wersje ... na przykład maszyna 1 mogła wstrzymywać wersje, a maszyna 2 powinna to odzwierciedlać
Rondo
np. aptitude -F "% c% p% V" - wyłączanie wyszukiwania kolumn '! ~ M ~ i' | awk -F "" "{print" apt-get -y install "$ 2" = "$ 3} '> aptshell.sh
Rondo
2

To stare pytanie, ale ponieważ nikt tego nie powiedział, możesz zrobić coś z dpkg i cronem. Skonfiguruj zadanie crona, które robi coś sprytnego dzięki poleceniom get-selections i set-selections programu dpkg.

dpkg --set-selections < ~/Dropbox/selections.dpkg


dpkg --get-selections > ~/Dropbox/selections.dpkg

To nie jest proponowane rozwiązanie, musisz wypracować jakiś sposób, aby upewnić się, że plik selections.dpkg jest aktualizowany za każdym razem, gdy wprowadzasz zmiany na dowolnym komputerze ...

Jan
źródło
2

Centrum oprogramowania Ubuntu ma funkcję synchronizacji zainstalowanych pakietów na wielu komputerach. Używa twojego konta Ubuntu One do zapisywania pakietów. Po prostu wybierz File > Sync Between Computers...i zaloguj się na swoje konto Ubuntu One.

Synchronizowanie pakietów z Centrum oprogramowania Ubuntu

Obecnie ma on w jakiś sposób ograniczoną funkcjonalność, na przykład obsługuje tylko domyślne pakiety ( ppaa nie s), i musisz ręcznie wybrać, które pakiety mają zostać zainstalowane (może to być postrzegane jako trudna cecha pozytywna). Aby uzyskać szczegółowe instrukcje, zobacz ten artykuł .

Amir Ali Akbari
źródło
-2

Nie będziesz mógł używać Dropbox do synchronizowania instalacji pakietów.

Synaptic ma sposób na zapisanie listy pobranych pakietów, ale nie jestem pewien, czy obsługuje przypadek „wszystkiego, co kiedykolwiek zostało zainstalowane”, a nie tylko „są to pakiety, które chcę pobrać tym razem”

Broam
źródło
-1 ponieważ twoje założenie jest niepoprawne, pytanie opisuje proces implementacji, który przy użyciu listy instalacji / usuwania pyta tylko, czy istnieje realistyczna implementacja, ponieważ w polu opisu opisu jest tylko medium używane do wymiany list synchronizacji
João Pinto,