You are not logged in.
Hi.
I upgraded my system ignoring glibc as suggested in the news:
sudo pacman -Syu --ignore glibc
I was about to complete the next step, but now I am getting this error when I issue any pacman commands:
pacman: /lib/libc.so.6: version `GLIBC_2.16' not found (required by /usr/lib/libcurl.so.4)
One thing I did (yep, probably the cause) was
pacman -Sd ati-dri binutils boost-libs
as suggested https://wiki.archlinux.org/index.php/De … iki:usrlib, as at first I was getting an error when performing the original upgrade (turns out this wasn't the cause of the error...)
Would be very grateful for a fix!
Thanks
Offline
curl is compiled for glibc 2.16 and therefore does not work anymore with an old glibc package (see FS#30978). The easiest way to fix pacman would be downloading an older curl package (check for the correct architecture; or use the package in pacman's cache), extract the library (libcurl.so.4.2.0) and replace the new library with the old one in /usr/lib (maybe make a backup of the new library first). Now you should be able to use pacman again, so upgrade glibc:
pacman -S glibc
After that, make sure you move the curl library back (in case you made a backup) or reinstall curl.
Offline
Good idea, that works!
Now for the next bit:
I'm now getting
glibc: /lib exists in filesystem
so I follow this helpful advice (https://bbs.archlinux.org/viewtopic.php … 6#p1130416) and issue
grep '^lib/' /var/lib/pacman/local/*/files | grep -v glibc
The result of this is 3500 lines long! Something is telling me this isn't quite right..
Any ideas?
Thanks for the help
Offline
Warrd I get the same thing when I run that grep command. Something tells me it's not right at all but I'm not sure where to go from here.
Glad you figured out rolling back curl though because I though for sure I was really toast without pacman.
Offline
Warrd, here's what I finally did to get it working again.
First, update the system ignoring glibc and curl.
Second, follow the directions outlined in Issue 1 of the wiki link exactly.
I just did these steps and got my system fully updated finally.
Hope this helps!
Offline
I'm now getting
glibc: /lib exists in filesystem
One of the trivial reasons for the error to appear is that you may still have files not belonging to glibc, e.g. old kernel modules sitting in /lib/modules/*. If this is the case, you can safely remove the non-glibc directories/modules and the upgrade should be possible as advised.
Of course, reinstall the modules you need so that they are found in their new location.
Last edited by bohoomil (2012-08-02 21:09:25)
:: Registered Linux User No. 223384
:: github
:: infinality-bundle+fonts: good looking fonts made easy
Offline
ok, I rolled back curl, then ran pacman -Sd to fetch all the other packages on the system, but the final pacman -Su tries to fetch the latest glibc which fails with /lib exists in filesystem. A quick look at /lib shows a redundant modules dir from kernel 3.2.6, but it also shows a whole load of files dated 2/7/12. Not sure if any of them are important, or whether I should just delete the dir and take my chances. I have downloaded 2.16.0.1 from that private repo as suggested on the wiki page and installed that, so now, the latest curl /should/ work.....
Ok, I just ran step two of the wiki, and the grep command now confirms that just glibc 2.16.0.1 owns the remaining files in /lib.....however, it seems to suggest the solution is to remove it, but that would break the system....now what do I do.....
Last edited by Bonzodog (2012-08-02 22:25:28)
Offline
If pacman is complaining about /lib still, then there are files in /lib which are not owned by glibc.
Offline
For anyone else who managed to upgrade glibc but was left unable to connect to any devices (keyboard, mouse, ethernet..), this worked for me:
* Boot from arch image on USB
* Mount root filesystem and /sys /dev /proc
* chroot to the mount point
* Run
mkinitcpio -p linux
Phew, would have been quicker installing from scratch than everything I had to do for this updgrade!
Last edited by warrd (2012-08-03 13:27:40)
Offline
ok, I rolled back curl, then ran pacman -Sd to fetch all the other packages on the system, but the final pacman -Su tries to fetch the latest glibc which fails with /lib exists in filesystem.
Ok, now that curl has been rolled back run
pacman -Syu
It will complain about unresolvable dependencies so what you need to do next is copy what packages have unresolvable dependencies and run them with
pacman -Sd gcc-libs linux initscripts...
Once that is done running the only thing left is /lib should be files owned by glibc so next you run
pacman -Su
My guess is as it stands now there are actually other files still in your /lib that are owned by packages other than glibc. In my case it was still the linux kernel which had not yet been updated properly using
pacman -Sd linux
Try following these steps exactly... as they're outlined in Issue 1 of the developer wiki post and you shouldn't have any problems. If you still have issues then there is something still in /lib that needs to be removed. In that case you need to run the grep command outlined in Issue 2 and figure out what else still owns files in /lib other than glibc.
Offline
Hi.
I upgraded my system ignoring glibc as suggested in the news:sudo pacman -Syu --ignore glibc
Thanks
1. Just upgrade mysql, unforeseen pacman tried to upgrade glibc then system totally crash.
2. Another system classic Pacman Syu.... after glibc upgrade system totally unsable.
I wonder how many archlinux users soon will start complain after any package upgrade include or full upgrade (Syu) will make system dead
Here is my trick how to fix broken os when glibce was unforesen written:
1. in grub menu edit root from ~/dev/sda1 to /dev/loop
2. then linux will fail to mount but let you go to shell
3. then go to /dev/disk/ by-uuid and: mount 234098234098 /tmp (or any directory)
4. now nutsheel: rm /tmp/lib , then copy /lib/* /tmp/lib/*
5. tada - now you have back again alive system with basic old /lib from initramfs file
Last edited by varsovie (2012-08-04 17:01:32)
Offline
curl is compiled for glibc 2.16 and therefore does not work anymore with an old glibc package (see FS#30978). The easiest way to fix pacman would be downloading an older curl package (check for the correct architecture; or use the package in pacman's cache), extract the library (libcurl.so.4.2.0) and replace the new library with the old one in /usr/lib (maybe make a backup of the new library first). Now you should be able to use pacman again, so upgrade glibc:
pacman -S glibc
After that, make sure you move the curl library back (in case you made a backup) or reinstall curl.
Thanks for this - help me alot. Had to go through some manual removal of folders in /lib afterwards before I could update glibc, but this got pacman back on track.
Offline
I was able to work out a solution that didn't involve replacing any of my system libraries. The basic idea is to pull an older version of curl out of pacman's cache, then run pacman linked against that library to downgrade to a working curl.
mkdir /tmp/pacman_build
cd /tmp/pacman_build
# The exact version number probably isn't important, just pick one that isn't the most recent
cp /var/cache/pacman/pkg/curl-7.26.0-1-x86_64.pkg.tar.xz .
tar -xJf curl-7.26.0-1-x86_64.pkg.tar.xz
sudo LD_PRELOAD=/tmp/pacman_build/usr/lib/libcurl.so pacman -U /var/cache/pacman/pkg/curl-7.26.0-1-x86_64.pkg.tar.xz
# Now carry on
sudo pacman -Su
# And clean up if you like
rm -r /tmp/pacman_build
Offline
Hi,
whatever I do the result is:
glibc: /lib exists in filesystem
glibc: /lib64 exists in filesystem
Errors occurred, no packages were upgraded.
Any suggestion?
Thanks
Offline
What is it you did exactly? Are you sure you followed the instructions in the Wiki article from the first post? Are there any files in those directories not owned by glibc? What owns the directories?
All men have stood for freedom...
For freedom is the man that will turn the world upside down.
Gerrard Winstanley.
Offline
This thread saved my day. It would really be a good idea to ship a statically linked version of pacman (and busybox as well) to help dealing with such issues.
For those still stuck with /lib conflicts, please follow the wiki guide: upgrade packages that own files in /lib and then delete the rest (and remember to think before deleting vital stuff).
Offline
I was able to work out a solution that didn't involve replacing any of my system libraries. The basic idea is to pull an older version of curl out of pacman's cache, then run pacman linked against that library to downgrade to a working curl.
mkdir /tmp/pacman_build cd /tmp/pacman_build # The exact version number probably isn't important, just pick one that isn't the most recent cp /var/cache/pacman/pkg/curl-7.26.0-1-x86_64.pkg.tar.xz . tar -xJf curl-7.26.0-1-x86_64.pkg.tar.xz sudo LD_PRELOAD=/tmp/pacman_build/usr/lib/libcurl.so pacman -U /var/cache/pacman/pkg/curl-7.26.0-1-x86_64.pkg.tar.xz # Now carry on sudo pacman -Su # And clean up if you like rm -r /tmp/pacman_build
Nice work around, but it failed for me. Any idea why?
This is my error from Apache:
error_log:PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/curl.so' - /lib/libc.so.6: version `GLIBC_2.16' not found (required by /usr/lib/libcurl.so.4) in Unknown on line 0
*UPDATE*
nvm it worked for me, I just kept it downgraded!
Last edited by PolishHurricane (2012-08-07 18:53:21)
Offline
Hi,
thanks,
I followed instruction (both methods) described on the main page of Archlinux:
http://www.archlinux.org/news/filesyste … equired-1/
with the results shown in my previous mail
glibc: /lib exists in filesystem
glibc: /lib64 exists in filesystem
Errors occurred, no packages were upgraded.
now I'll try to follow suggestions,
Thanks all!
Offline
I read all of these, I have NO clue on how to fix this problem.. can someone spell it out a lil bit more for me?? plaese.. I can not use pacman at all...
I've tried everything I dont know what else to do... I can not update anything..
Last edited by binskipy2u (2012-08-07 04:24:13)
"Sometimes you comfort the afflicted, other times you AFFLICT the COMFORTABLE"
Offline
I read all of these, I have NO clue on how to fix this problem.. can someone spell it out a lil bit more for me?? plaese.. I can not use pacman at all...
I've tried everything I dont know what else to do... I can not update anything..
There's no way to 'spell it out' clearer than what is already available on the front page, the linked wiki page, and various glibc threads. If even that amount of hand-holding is insufficient, please do yourself a favour and use an easier distro.
Allan-Volunteer on the (topic being discussed) mailn lists. You never get the people who matters attention on the forums.
jasonwryan-Installing Arch is a measure of your literacy. Maintaining Arch is a measure of your diligence. Contributing to Arch is a measure of your competence.
Griemak-Bleeding edge, not bleeding flat. Edge denotes falls will occur from time to time. Bring your own parachute.
Offline
Hi,
thanks,
I followed instruction (both methods) described on the main page of Archlinux:http://www.archlinux.org/news/filesyste … equired-1/
with the results shown in my previous mail
glibc: /lib exists in filesystem
glibc: /lib64 exists in filesystem
Errors occurred, no packages were upgraded.
now I'll try to follow suggestions,
Thanks all!
You guys probably need to follow this link instead of the other one: http://www.archlinux.org/news/the-lib-d … a-symlink/ and make note of THIS GUIDE: https://wiki.archlinux.org/index.php/De … iki:usrlib
I maintain a few machines and I found that Issue #2 on that Wiki page pops up a lot, if not 90% of the time. In that case, grep is your friend, it requires more thinking than usual, but even though I consider myself a newbie, I still figured it out.
If you haven't updated since both issues occurred, then you will need to temporarily run ignore on both, fix the filesystem issue first, then deal with glibc.
Last edited by PolishHurricane (2012-08-07 12:30:17)
Offline
I am using Arch Linux on my Dell XPS 15 laptop, and facing the same problem after a pacman -Syu. I tried everything in the wiki, and went through this thread too, but nothing works. ANY command I execute with pacman returns the following error message:
pacman: /lib/libc.so.6: version 'GLIBC - 2.16' not found (required by /usr/lib/libcurl.so.4)
I downloaded glibc-2.16.0-1-x86_64.pkg.tar.xz on my Windows partition, but the Windows partition is not mountable now on Arch: while fdisk displays /dev/sda3 as a valid NTFS partition, the command
mount /dev/sda3 /mnt
which used to work earlier (as root) does not work anymore, and I get a message saying /dev/sda3 could not be found.
To add to my woes, the internet connection is inactive as the wireless driver too seems to have been corrupted during the update. So using wget to download this file is not an option.
Needless to say, X WIndows does not start because the driver and kernel are mismatched, and gcc is inaccessible.
I would appreciate any inputs about how this situation can be remedied. I am having to use my Windows installation just to post this here, and unfortunately I do not have access to another machine right now.
Offline
I am working on getting the system upgrade to work. I haven't been succesful yet, but I got it to work on another machine last week, so it shouldn't be a problem. I'll post detailed instructions when I get it to work.
What I have been able to do is to fix the pacman error:
pacman: /lib/libc.so.6: version 'GLIBC - 2.16' not found (required by /usr/lib/libcurl.so.4
To do so, first backup the existing libraries by doing
# cp /usr/lib/libcurl.so.4 /usr/lib/libcurl.so.4.backup
# cp /usr/lib/libcurl.so.4.2.0 /usr/lib/libcurl.so.4.2.0.backup
Note that you have to do everything as root.
Next, you have to find out if you have an older version of curl in your pacman cache, which should be the case if you didn't clear the cache after the update. To do so, run
$ ls /var/cache/pacman/pkg/curl*
You should get something like
/var/cache/pacman/pkg/curl-7.23.1-2-x86_64.pkg.tar.xz
/var/cache/pacman/pkg/curl-7.24.0-2-x86_64.pkg.tar.xz
/var/cache/pacman/pkg/curl-7.25.0-1-x86_64.pkg.tar.xz
/var/cache/pacman/pkg/curl-7.26.0-1-x86_64.pkg.tar.xz
/var/cache/pacman/pkg/curl-7.27.0-1-x86_64.pkg.tar.xz
as output. As long as you have one version <7.27 you should be all right. I used 7.26, but replace that number with a version you have in the following steps.
Next, you need to extract the package from the cache into a temporary directory. To do so, run
# tar -xvf /var/cache/pacman/pkg/curl-7.26.0-1-x86_64.pkg.tar.xz -C /tmp
Then, copy the libraries extracted from the old package over the new ones:
# cp /tmp/usr/lib/libcurl.so.4 /usr/lib/libcurl.so.4
# cp /tmp/usr/lib/libcurl.so.4.2.0 /usr/lib/libcurl.so.4.2.0
Voilà, pacman should now work. I'll keep working on fixing the main issue and will post again when I do.
EDIT: I got it to work by following the instruction at the end of https://wiki.archlinux.org/index.php/De … iki:usrlib. Specifically, other packages (bluez and lirc) owned files in /usr/lib. To see if that's the problem, run
$ grep '^lib/' /var/lib/pacman/local/*/files
and see if you see any other package than glibc in the /var/lib/PACKAGE/... portion of the output. Then, make note of the packages, remove them without removing their dependencies by using
# pacman -Rdd PACKAGE1 PACKAGE2 ...
update glibc with
# pacman -S glibc
reinstall the packages you removed previously
# pacman -S PACKAGE1 PACKAGE2 ...
and finally update everything with
# pacman -Syu
Last edited by flamirande (2012-08-07 20:54:38)
Offline
Thanks for your reply flamirande. Your solution has fixed pacman, but I cannot update from the console (text) mode, because it seems the wifi isn't going to work until I start X, which won't work till the nvidia driver is properly re-installed, which is possible only when the kernel headers are restored...something that requires internet access.
Offline
Youngian's downgrade fixed (post #13) worked for me. Thanks.
We may only attempt to reverse engineer the future.. for now.
walls/screens|.conkyrc
Offline