J'essaie de configurer un environnement de transfert dans une machine virtuelle, afin de tester les mises à jour avant de les appliquer à mon système principal.
Pour ce faire, j'ai fait une installation de base de Debian Wheezy (la même que sur le système principal) dans la VM, puis j'ai exécuté en tant que root à partir de la VM:
# dpkg --clear-selections
# dpkg --add-architecture i386
# apt-get update
# ssh me@main-system 'dpkg --get-selections | grep -v deinstall' | \
dpkg --set-selections
L'architecture i386 est malheureusement nécessaire dans mon cas; le système est natif amd64.
Le problème vient de l' dpkg --set-selections
exécution dans la machine virtuelle. J'ai quelques paquets qui nécessitent une manipulation spéciale (ce sont en fait la principale raison pour laquelle je veux un environnement de transfert en premier lieu) mais quand j'exécute la dernière commande ci-dessus, j'obtiens environ un milliard de lignes de sortie comme:
dpkg: warning: package not in database at line NNN: package-name
pour les packages qui devraient vraiment être disponibles dans le système de base. Les exemples incluent xterm
, yelp
et zip
.
Maintenant pour ma question:
Quel est le processus spécifique pour transférer la liste de sélection de paquets d'un système Debian à un autre (en supposant le même niveau de version Debian, dans Wheezy) et ensuite appliquer ces modifications? L'objectif est que les deux aient la même liste de packages installés, idéalement de telle sorte que faire un diff
entre les sorties de dpkg --get-selections
ou dpkg --list
sur les deux revienne sans aucune différence.
La grep -v deinstall
partie est empruntée à Empêcher les packages d'être supprimés après avoirdpkg --set-selections
terminé sur Ask Ubuntu.
J'ai changé la source dans la VM pour qu'elle soit la même que sur le système principal, en installant également apt-transport-https
:
deb https://ftp-stud.hs-esslingen.de/debian/ wheezy main non-free
deb-src https://ftp-stud.hs-esslingen.de/debian/ wheezy main non-free
deb https://ftp-stud.hs-esslingen.de/debian/ wheezy-updates main non-free
deb-src https://ftp-stud.hs-esslingen.de/debian/ wheezy-updates main non-free
deb [arch=amd64] http://archive.zfsonlinux.org/debian wheezy main
En regardant la sortie --set-selections, je vois:
dpkg: warning: package not in database at line 1: a2ps
dpkg: warning: package not in database at line 1: abiword
dpkg: warning: package not in database at line 1: abiword-common
dpkg: warning: package not in database at line 1: abiword-plugin-grammar
dpkg: warning: package not in database at line 1: abiword-plugin-mathview
dpkg: warning: package not in database at line 1: accountsservice
dpkg: warning: package not in database at line 1: acl
dpkg: warning: package not in database at line 4: aglfn
dpkg: warning: package not in database at line 4: aisleriot
dpkg: warning: package not in database at line 4: alacarte
dpkg: warning: package not in database at line 4: alien
...
Les numéros de ligne semblaient impairs, et la partie correspondante de la sortie de --get-selections est:
a2ps install
abiword install
abiword-common install
abiword-plugin-grammar install
abiword-plugin-mathview install
accountsservice install
acl install
acpi-support-base install
acpid install
adduser install
aglfn install
aisleriot install
alacarte install
alien install
Notez que entre acl
et aglfn
sont acpi-support-base
, acpid
et adduser
pour lesquels aucune erreur sont signalées . Il semble que les paquets pour lesquels des erreurs sont signalées sont un
conformes dpkg -l
ou dpkg -l
n'ont aucune idée à leur sujet ( dpkg-query: no packages found matching ...
). Je sais qu'il existe des packages installés localement, mais pas beaucoup. i386
n'apparaît que gcc-4.7-base:i386 install
beaucoup plus bas dans la liste (ligne 342 dans la sortie --get-selections).
dpkg --get-selections
(et je suppose que vous vouliez dire la dpkg --set-selections
transcription?)? Même le premier contient plus de 3 600 lignes et environ 100 Ko.
/var/lib/dpkg/Packages
(qui est encore plus longue) pourrait également être utile - cela pourrait être le symptôme d'un fichier Packages cassé.
dpkg --get-selections … | … dpkg --set-selections
est le moyen de répliquer les sélections de packages. Si cela échoue pour vous, vous devrez fournir plus d'informations sur la raison. Publiez votre ensemble complet de sources sur les deux systèmes, la sortie dedpkg --get-selections
et la transcription complète dedpkg --get-selections
(peut-être pouvons-nous discerner un modèle en voyant ce qui fonctionne et ce qui ne fonctionne pas). Si le système principal amd64 ou i386? Cela fonctionne-t-il si vous n'ajoutez pas l'architecture i386?