gega Δημοσ. 17 Αυγούστου 2009 Share Δημοσ. 17 Αυγούστου 2009 Γεια σας insomniacs Σημερα ανοιξα το synaptic package manager για να εγκαταστησω καποιες εφαρμογες (συγκεκριμενα το LVPM) αφου μαρκαρα τις εφαρμογες για εγκατασταση μου εβγαλε το εξης προβλημα >E: Encountered a section with no Package: header E: Problem with MergeList /var/lib/dpkg/status E: Αδυναμία ανάλυσης ή ανοίγματος το αρχείου λίστας ή κατάστασης πακέτων. E: _cache->open() failed, please report. τι θα πρεπει να κανω ? Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
chek2fire Δημοσ. 17 Αυγούστου 2009 Share Δημοσ. 17 Αυγούστου 2009 Καταρχήν κλεισε όποιο πρόγραμμα έχεις ανοίξει για εγκατάταση προγραμμάτων. Μετά άνοιξε την κονσόλα η αλλιώς terminal και δώσε sudo apt-get update sudo apt-get upgrade και μετά δώσε sudo apt-get install και το ονομα του προγράμματος που θέλεις να εγκαταστήσεις και ανέβασε εδώ ότι σου εμφανίσει. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
gega Δημοσ. 17 Αυγούστου 2009 Μέλος Share Δημοσ. 17 Αυγούστου 2009 Καταρχήν κλεισε όποιο πρόγραμμα έχεις ανοίξει για εγκατάταση προγραμμάτων. Μετά άνοιξε την κονσόλα η αλλιώς terminal και δώσε sudo apt-get update sudo apt-get upgrade και μετά δώσε sudo apt-get install και το ονομα του προγράμματος που θέλεις να εγκαταστήσεις και ανέβασε εδώ ότι σου εμφανίσει. σε ολες τις εντολες μου εβγαζε το ιδιο σφαλμα >Ανάγνωση Λιστών Πακέτων... Σφάλμα! E: Αδύνατη η ανάλυση του αρχείου πακέτου /var/lib/dpkg/status (1) E: Αδύνατο το άνοιγμα ή η ανάλυση των λιστών πακέτων ή του αρχείου κατάστασης. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
subdee Δημοσ. 17 Αυγούστου 2009 Share Δημοσ. 17 Αυγούστου 2009 Έχεις κατεστραμμένο status αρχείο. Κάντο backup και αποθήκευσε/τρέξε το παρακάτω perl script: >#!/usr/bin/env perl # # A script to build a new dpkg status file. Relies on an assumption # that /usr/share/doc is intact, and that each subdir of that # indicates an installed package. # # This script can be run as a non-root user and creates output files, # in an unsecure fashion, in /tmp. # # Thanks to capink on ubuntuforums.org, and Karsten M. Self. # use strict; use warnings; my @installed_packages; my %package_control_info; # By package, then by file. my $new_status_file = "/tmp/new-status"; my $new_dpkg_selections_file = "/tmp/new-dpkg-selections"; ## ## Here we populate @installed_packages by examining /usr/share/doc, ## as suggested by Karsten M. Self. ## opendir DOC, "/usr/share/doc" or die "failed opening doc dir"; foreach ( grep { -d "/usr/share/doc/$_" } readdir( DOC )) { next if ( m/^\./ ); next if ( m/[A-Z]/ ); next if ( $_ eq 'texmf' ); next if ( $_ eq 'debian' ); push @installed_packages, $_; } closedir DOC; ## ## Now we hash the contents of the control files. ## my ($package, $control_file); opendir LISTS, "/var/lib/apt/lists" or die "failed opening lists dir"; while (my $control_file = readdir( LISTS )) { next unless ( -f "/var/lib/apt/lists/$control_file" ); next unless ( "/var/lib/apt/lists/$control_file" =~ m/_Packages$/ ); open CONTROL_FILE, "/var/lib/apt/lists/$control_file" or die "failed opening control file '$_'"; while (my $line = <CONTROL_FILE>) { if ( $line =~ m/^(Package:\s)(.*$)/ ) { my $package_name = $2; push @{ $package_control_info{$package_name}->{$control_file} }, $line; $line = <CONTROL_FILE>; while ($line !~ m/^\s*$/ ) { push @{ $package_control_info{$package_name}->{$control_file} }, $line; $line = <CONTROL_FILE>; } } } close CONTROL_FILE; } closedir LISTS; ## ## Here we create the new status file by printing all the control info ## we have for all the installed packages, as suggested by 'capink' on ## ubuntuforums.org. ## open NEW_STATUS_FILE, ">", $new_status_file or die "this sucks"; foreach my $package ( @installed_packages ) { while (my ($control_file, $control_info_ref) = each( %{ $package_control_info{$package} } ) ) { my @status_info; foreach my $line ( @{ $control_info_ref } ) { next if ( $line =~ m/^Filename:/ ); next if ( $line =~ m/^MD5sum:/ ); next if ( $line =~ m/^Size:/ ); next if ( $line =~ m/^SHA1:/ ); next if ( $line =~ m/^SHA256:/ ); push @status_info, $line; if ( $line =~ m/^Package:/ ) { push @status_info, "Status: install ok installed\n"; } } push @status_info, "\n"; print NEW_STATUS_FILE @status_info; } } close NEW_STATUS_FILE; ## ## Here we create a dpkg selections file containing a list of the ## packages we think are installed. ## open NEW_SELECTIONS_FILE, ">", $new_dpkg_selections_file or die "this also sucks"; foreach my $line ( @installed_packages ) { print NEW_SELECTIONS_FILE "$line install\n"; } close NEW_SELECTIONS_FILE; print "\n"; print "New status file created: '$new_status_file'.\n"; print "If it looks right, then: mv '$new_status_file' '/var/lib/dpkg/status'\n"; print "\n"; print "New dpkg selections file created: '$new_dpkg_selections_file'.\n"; print qq|run 'dpkg --get-selections < "$new_dpkg_selections_file"' to re-create deselect's selections.\n|; print "\n"; Η λύση βρέθηκε στο http://ubuntuforums.org/showthread.php?t=474587 Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
gega Δημοσ. 18 Αυγούστου 2009 Μέλος Share Δημοσ. 18 Αυγούστου 2009 Έχεις κατεστραμμένο status αρχείο.Κάντο backup και αποθήκευσε/τρέξε το παρακάτω perl script: >#!/usr/bin/env perl # # A script to build a new dpkg status file. Relies on an assumption # that /usr/share/doc is intact, and that each subdir of that # indicates an installed package. # # This script can be run as a non-root user and creates output files, # in an unsecure fashion, in /tmp. # # Thanks to capink on ubuntuforums.org, and Karsten M. Self. # use strict; use warnings; my @installed_packages; my %package_control_info; # By package, then by file. my $new_status_file = "/tmp/new-status"; my $new_dpkg_selections_file = "/tmp/new-dpkg-selections"; ## ## Here we populate @installed_packages by examining /usr/share/doc, ## as suggested by Karsten M. Self. ## opendir DOC, "/usr/share/doc" or die "failed opening doc dir"; foreach ( grep { -d "/usr/share/doc/$_" } readdir( DOC )) { next if ( m/^\./ ); next if ( m/[A-Z]/ ); next if ( $_ eq 'texmf' ); next if ( $_ eq 'debian' ); push @installed_packages, $_; } closedir DOC; ## ## Now we hash the contents of the control files. ## my ($package, $control_file); opendir LISTS, "/var/lib/apt/lists" or die "failed opening lists dir"; while (my $control_file = readdir( LISTS )) { next unless ( -f "/var/lib/apt/lists/$control_file" ); next unless ( "/var/lib/apt/lists/$control_file" =~ m/_Packages$/ ); open CONTROL_FILE, "/var/lib/apt/lists/$control_file" or die "failed opening control file '$_'"; while (my $line = <CONTROL_FILE>) { if ( $line =~ m/^(Package:\s)(.*$)/ ) { my $package_name = $2; push @{ $package_control_info{$package_name}->{$control_file} }, $line; $line = <CONTROL_FILE>; while ($line !~ m/^\s*$/ ) { push @{ $package_control_info{$package_name}->{$control_file} }, $line; $line = <CONTROL_FILE>; } } } close CONTROL_FILE; } closedir LISTS; ## ## Here we create the new status file by printing all the control info ## we have for all the installed packages, as suggested by 'capink' on ## ubuntuforums.org. ## open NEW_STATUS_FILE, ">", $new_status_file or die "this sucks"; foreach my $package ( @installed_packages ) { while (my ($control_file, $control_info_ref) = each( %{ $package_control_info{$package} } ) ) { my @status_info; foreach my $line ( @{ $control_info_ref } ) { next if ( $line =~ m/^Filename:/ ); next if ( $line =~ m/^MD5sum:/ ); next if ( $line =~ m/^Size:/ ); next if ( $line =~ m/^SHA1:/ ); next if ( $line =~ m/^SHA256:/ ); push @status_info, $line; if ( $line =~ m/^Package:/ ) { push @status_info, "Status: install ok installed\n"; } } push @status_info, "\n"; print NEW_STATUS_FILE @status_info; } } close NEW_STATUS_FILE; ## ## Here we create a dpkg selections file containing a list of the ## packages we think are installed. ## open NEW_SELECTIONS_FILE, ">", $new_dpkg_selections_file or die "this also sucks"; foreach my $line ( @installed_packages ) { print NEW_SELECTIONS_FILE "$line install\n"; } close NEW_SELECTIONS_FILE; print "\n"; print "New status file created: '$new_status_file'.\n"; print "If it looks right, then: mv '$new_status_file' '/var/lib/dpkg/status'\n"; print "\n"; print "New dpkg selections file created: '$new_dpkg_selections_file'.\n"; print qq|run 'dpkg --get-selections < "$new_dpkg_selections_file"' to re-create deselect's selections.\n|; print "\n"; Η λύση βρέθηκε στο http://ubuntuforums.org/showthread.php?t=474587 το αρχικο προβλημα λυθηκε αλλα εμφανιστηκε αλλο >Προρύθμιση πακέτων ... (Ανάγνωση βάσης δεδομένων ... dpkg: unrecoverable fatal error, aborting: το αρχείο λίστας αρχείων για το πακέτο `os-prober' περιέχει κενό όνομα αρχείου E: Sub-process /usr/bin/dpkg returned an error code (2) επειδη οποτε μπαινω στο synaptic μου λεει οτι υπαρχουν κατεστραμενα πακετα προσπαθω να τα κανω απομακρυνση ή επανεγκατασταση αλλα μου βγαζει παλι το παραπανω προβλημα Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
linuxovios Δημοσ. 18 Αυγούστου 2009 Share Δημοσ. 18 Αυγούστου 2009 Έχεις καμιά ιδέα πώς έγινε corrupted το αρχεία αρχικά ? Κανονικά έπρεπε να χρησιμοποιήσεις το >/var/lib/dpkg/status-old που είναι το backup status αρχείο πριν επιχειρήσεις το rebuilding που σου προτάθηκε πιο πάνω. (Άσχετο : ffs γιατί βάζετε ελληνική γλώσσα για menus και windows... ) Anyway, εγώ δεν μπορώ να βοηθήσω περαιτέρω ... Μια επανεγκατάσταση είναι σίγουρη λύση 15-20 λεπτών. Εξαρτάται από το αν θέλεις να το ψάξεις και άλλο ή όχι Υ.Γ. Από το 2006 χρησιμοποιώ ανελλιπώς ubuntu, system file δεν έχω καταφέρει να καταστρέψω ακόμα... Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.