Προς το περιεχόμενο

Προβλημα με synapric και με ενημερωσεις


gega

Προτεινόμενες αναρτήσεις

Γεια σας 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.

 

τι θα πρεπει να κανω ?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καταρχήν κλεισε όποιο πρόγραμμα έχεις ανοίξει για εγκατάταση προγραμμάτων. Μετά άνοιξε την κονσόλα η αλλιώς terminal και δώσε

 

sudo apt-get update

sudo apt-get upgrade

 

και μετά δώσε

 

sudo apt-get install και το ονομα του προγράμματος που θέλεις να εγκαταστήσεις και ανέβασε εδώ ότι σου εμφανίσει.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καταρχήν κλεισε όποιο πρόγραμμα έχεις ανοίξει για εγκατάταση προγραμμάτων. Μετά άνοιξε την κονσόλα η αλλιώς terminal και δώσε

 

sudo apt-get update

sudo apt-get upgrade

 

και μετά δώσε

 

sudo apt-get install και το ονομα του προγράμματος που θέλεις να εγκαταστήσεις και ανέβασε εδώ ότι σου εμφανίσει.

 

σε ολες τις εντολες μου εβγαζε το ιδιο σφαλμα

>Ανάγνωση Λιστών Πακέτων... Σφάλμα!
E: Αδύνατη η ανάλυση του αρχείου πακέτου /var/lib/dpkg/status (1)
E: Αδύνατο το άνοιγμα ή η ανάλυση των λιστών πακέτων ή του αρχείου κατάστασης.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Έχεις κατεστραμμένο 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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Έχεις κατεστραμμένο 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 μου λεει οτι υπαρχουν κατεστραμενα πακετα προσπαθω να τα κανω απομακρυνση ή επανεγκατασταση αλλα μου βγαζει παλι το παραπανω προβλημα

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Έχεις καμιά ιδέα πώς έγινε corrupted το αρχεία αρχικά ? Κανονικά έπρεπε να χρησιμοποιήσεις το

>/var/lib/dpkg/status-old

 

που είναι το backup status αρχείο πριν επιχειρήσεις το rebuilding που σου προτάθηκε πιο πάνω.

 

(Άσχετο : ffs γιατί βάζετε ελληνική γλώσσα για menus και windows... )

 

Anyway, εγώ δεν μπορώ να βοηθήσω περαιτέρω ... Μια επανεγκατάσταση είναι σίγουρη λύση 15-20 λεπτών. Εξαρτάται από το αν θέλεις να το ψάξεις και άλλο ή όχι

 

Υ.Γ. Από το 2006 χρησιμοποιώ ανελλιπώς ubuntu, system file δεν έχω καταφέρει να καταστρέψω ακόμα...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...