Running Synaptic I get the following error message:
E: The package hl1440lpr needs to be reinstalled, but I can't find an archive for it.
E: Internal error opening cache (1). Please report.
Upon accepting the message, Synaptic quits.
aptpackage-managementsynaptic
Running Synaptic I get the following error message:
E: The package hl1440lpr needs to be reinstalled, but I can't find an archive for it.
E: Internal error opening cache (1). Please report.
Upon accepting the message, Synaptic quits.
The error "Apt/Synaptic needs to reinstall package but can't find the archive for it" is at times non-specific.
The most common time I see this error is when upgrading Ubuntu from one version to another .
Note: Ubuntu is converting from apt-get to apt , but I am using apt-get in this post. For additional information see man apt
and https://www.debian.org/doc/manuals/debian-reference/ch02.en.html
The most common cause of this error is when a user has installed a package, and then removed the .deb, typically with sudo apt-get clean
http://manpages.ubuntu.com/manpages/zesty/man8/apt-get.8.html
clean
clean clears out the local repository of retrieved package files. It removes everything but the lock file from /var/cache/apt/archives/ and /var/cache/apt/archives/partial/
Then, at some point, dpkg --reconfigure
is called, either by the user, or by upgrade, or at some point the user tries to reinstall the package is reinstalled sudo apt-get --reinstall foo
or some variation.
If apt cannot locate the .deb in the repository, either because the packages was removed (rare), the repository was removed from the system, or upgrade and the package is not in the new repository, you will get the error "Apt/Synaptic needs to reinstall package but can't find the archive for it"
But the error can come from other causes.
Quoting the relevant sections from the dpkg man page ( See http://manpages.ubuntu.com/manpages/trusty/man1/dpkg.1.html for details )
INFORMATION ABOUT PACKAGES dpkg maintains some usable information about available packages. The information is divided in three classes: states, selection states and flags. These values are intended to be changed mainly with dselect.
Package states
not-installed The package is not installed on your system. config-files Only the configuration files of the package exist on the system. half-installed The installation of the package has been started, but not completed for some reason. unpacked The package is unpacked, but not configured. half-configured The package is unpacked and configuration has been started, but not yet completed for some reason. triggers-awaited The package awaits trigger processing by another package. triggers-pending The package has been triggered. installed The package is unpacked and configured OK.
ACTIONS
-i, --install package-file... Install the package. If --recursive or -R option is specified, package-file must refer to a directory instead. Installation consists of the following steps: 1. Extract the control files of the new package. 2. If another version of the same package was installed before the new installation, execute prerm script of the old package. 3. Run preinst script, if provided by the package. 4. Unpack the new files, and at the same time back up the old files, so that if something goes wrong, they can be restored. 5. If another version of the same package was installed before the new installation, execute the postrm script of the old package. Note that this script is executed after the preinst script of the new package, because new files are written at the same time old files are removed. 6. Configure the package. See --configure for detailed information about how this is done.
--configure package...|-a|--pending
Configure a package which has been unpacked but not yet configured. If -a or --pending is given instead of package, all unpacked but unconfigured packages are configured. To reconfigure a package which has already been configured, try the dpkg-reconfigure(8) command instead. Configuring consists of the following steps: 1. Unpack the conffiles, and at the same time back up the old conffiles, so that they can be restored if something goes wrong. 2. Run postinst script, if provided by the package. /var/lib/dpkg/status Statuses of available packages. This file contains information about whether a package is marked for removing or not, whether it is installed or not, etc. See section INFORMATION ABOUT PACKAGES for more info.
If the man page(s) are tl;dr -> As a part of installation, .deb / dpkg / apt runs pre / post install scripts and other functions . If these installation / removal scripts fail for any variety of reasons, a package will be marked as "half-installed" (or some state other than not installed / installed) . In that unclean state you may sometimes also see the error "Apt/Synaptic needs to reinstall package but can't find the archive for it" . In this example, the problem is not a missing archive, but a problem in the pre/post install scripts that can not be resolved by re running them. Thus the error is at times non specific.
First try to fix dependencies first by making sure the appropriate ppa / repositories are enabled, universe for example, or whatever repositories are needed.
Then the infamous
sudo apt-get install -f
Read any output and error messages and post the command and output here if you need help.
Try to reconfigure
sudo dpkg --configure -a
This will run the config scripts. You may specify a package rather than -a, but -a is more helpful when you are having problems.
Read any output and error messages and post the command and output here if you need help.
Try to look at any failing script and if possible fix the error / problem in the script.
Try to remove the offending package, by force if necessary. You have to be very careful here you you can force removal of a critical package or worse set of critical packages. The following commands go from polite to less polite to outright force. Try them in order.
sudo dpkg --remove $broken_package
sudo dpkg --remove --force-remove-reinstreq $broken_package
sudo dpkg --remove --force-all $broken_package
If any of those work, run sudo apt-get update && sudo apt-get upgrade
, you may need to run sudo apt-get -f install
and/or sudo dpkg --configure -a
as well.
If that fails, you will then need to manually remove the packages. This may involve finding all the components on your system and manually deleting them.
Use the following procedure
Remove the dpkg information (see above)
cd /var/lib/dpkg/info
sudo rm -i package_name*
Be careful you do not remove more than needed here.
Finally remove the offending package
sudo dpkg --remove --force-remove-reinstreq package_name
You should then be able to use apt
sudo apt-get update
sudo apt-get install -f
sudo apt-get upgrade
Only if necessary find and manually remove any files remaining on the system. This is a manual procedure and may include config files in /etc
or man pages or shared data. Use find or locate to identify potential remaining files.
Obviously you should take great care when deleting system files. Do not delete things you do not understand and do not use rm -Rf
without understanding what that command will do. rm -i
is probably better as the -i
option asks for confirmation.
You may be able to reproduce this error message by manually editing the dpkg status file of any package in /var/lib/dpkg/info
and changing the status to half installed
sudo nano /var/lib/dpkg/info/some_package
Edit the Status line so it reads
Status: purge reinstreq half-installed
Then try to run apt-get
.
If that does not work, install a package from a ppa, run apt-get clean, remove the ppa, and then try to reinstall or reconfigure the package.
Sorry for the long post, but I hope this gives you insight into the cause and resolution of this complex error message "Apt/Synaptic needs to reinstall package but can't find the archive for it"
There are 3 steps to take to get to the current version of LibreOffice 6 which I have completed in 18.04 (and 16.04) without problems.
Add the LibreOffice PPA. Open a terminal and type:
sudo add-apt-repository ppa:libreoffice/ppa
Update your system by running this command in terminal:
sudo apt update
Finally run this command in terminal to upgrade or install LibreOffice
sudo apt install libreoffice
Then as any updates are available, they will be automatically offered according to your preferences in Software Updater.
Best Answer
Well we may need a few steps to fix this.
Start with:
If that fails:
Confirm Apt is fixed. The following command should return no errors: