Jump to content
Read the Funtoo Newsletter: Summer 2023 ×
  • 0

Circular Dependencies


trans

Question

So I decided to give Funtoo a try. I managed to get through the install process with little trouble. The biggest issues I ran into were 1) It was not at all clear what to put in make.conf; and 2) There was no mention of how to use LVM. On both those issues I just winged it, and managed okay. I was able to boot to a login prompt (Yeah!).

 

But now I am stuck, b/c every attempt to emerge anything just leads to a slew of circular dependencies. I managed to force emege gcc, but beyond that I now seem to be thuroughly stuck. Please help.

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

If you are running it in a chroot, or can ssh into it, then

 

Could you post the output of 

emerge --info ; profile-config show

And also the output of

emerge -NavDu --backtrack=50 -p @world

The '--backtrack=50' sometimes is all thats needed to fix the issue. But it's likely we will need to be a bit more involved.

 

If your stuck without network connectivity on the machine, or the above options are problematic for some other reason,

Run

emerge --info >/tmp/PortageInfo ; profile-config show >>/tmp/PortageInfo;
emerge -NavDu --backtrack=50 -p @world > /tmp/EmergeInfo

And then copy the files onto a usb stick to post

You may also wish to do this, and then boot into another OS and open the files from there. Just be sure to change the path from /tmp/ to something else like /home/user/

Link to comment
Share on other sites

  • 0

The only profile I set was to "core". After I got passed this (with the commands I gave above) I changed it to "desktop". My make.config was minimal, basically USE="X acpi" and VIDEO_CARDS="vesa radeon". I'm afraid I spent the whole day working on this, so I suspect I am too far beyond where I was to dump any useful info at this point.

 

A bit O.T. but maybe it will be useful... It is really nice to get highly optimized programs for my machine. Everything runs quite snappy. I don't mind all the time it takes to compile from source to reap that benefit.[1] Unfortunately beyond that upside there has just been one problem after another. With very little to go on, I've spend two whole days searching the internet for solutions over and over. The first being the issue of this thread. The most common issue I had was emerge reporting some USE issues. I never understood what it was talking about (still don't), and just ended up emrging individual packages (those that seemed most fundamental) by hand until emerge was finally happy to do @world. Frustrating, but something that can be worked through. The show stopper however was getting the video driver and window manager working. I started with openbox to keep things simple, and after much work was able to get it to rotate to portrait and get pcmanfm --desktop up (well mostly, trashcan shows up but no home icons). But when I finally got that far and thought "at last there is hope for this", when I exited from openbox the screen goes black and my system freezes up (using radeonsi drive btw). No idea why. When I ctrl-c to end the xsession instead of usng the exit menu item, it says something about an IO errror. So then I thought maybe installing gnome would help, so I added that to my profile. Went through the emerge rigameroll and after hours of compiling, and setting up gdm (there are really too many conflicting approaches on the web about how to do this, btw) I got gnome to run (although gdm would not run on boot up, that reported another error, so I had to startx). Of course it somehow confused my HDMI connected TV for the primary display and at first I didn't see anything. So that took a bit to figure out and get (partially) corrected. But it did not solve the exit issue. When I try to login as a different user the blank screen and crash occurs.

 

So, at this point, with all these little issues still unresolved and the huge issue of crashing my machine, after three days of doing nothing but working on this, I've reluctantly decided that I can't afford to devote any more time to it. I wish I could, but I have other things to do. And basically I feel like three days should be enough for a long-time itermediate Linux user to get the basic things up and running. I've always loved the spirit of Gentoo (and now Funtoo), but tinkering with my OS can't take up so much of my time. So I have to let it go. :-( But thanks for the lessons, I did learn some things, and I wish Funtoo all the best.

 

[1] Has anyone ever thought about using peer-to-peer networking to share binaries? Surely someone out there compiled with the same arch and USE vars as me...

Link to comment
Share on other sites

  • 0

Yes, there are some binary portage pakages and package servers. Some popular and resource-intensive ebuilds will have a binnary ebuild in the funtoo/gentoo repos as well. For instance firefox and  icedtea ebuilds are

accompanied with firefox-bin and icedtea-bin ebuilds.

My laptop's portage is actualy configured to ask's my desktop to emerge packages from source and build binary packages using the laptops use and cflags.  The laptop then uses the dektop as a binary packager server. (My initial install was done by using portage to cross-compile and copying the boootable img to a usb for testing/installation)

 

But that is besides the point. While initial setup is usualy quite time consuming, its not suppose to remain that way.

 

The only profile I set was to "core". After I got passed this (with the commands I gave above) I changed it to "desktop". My make.config was minimal, basically USE="X acpi" and VIDEO_CARDS="vesa radeon". I'm afraid I spent the whole day working on this, so I suspect I am too far beyond where I was to dump any useful info at this point.

 

A bit O.T. but maybe it will be useful... It is really nice to get highly optimized programs for my machine. Everything runs quite snappy. I don't mind all the time it takes to compile from source to reap that benefit.[1] Unfortunately beyond that upside there has just been one problem after another. With very little to go on, I've spend two whole days searching the internet for solutions over and over. The first being the issue of this thread. The most common issue I had was emerge reporting some USE issues. I never understood what it was talking about (still don't), and just ended up emrging individual packages (those that seemed most fundamental) by hand until emerge was finally happy to do @world.

From the sound of it, your main problem was failure to understand what use flags are. Ill admit that the funtoo installation documentation fails misrably in describing what they do. However, it does link to the gentoo handbook which gives a detailed description of what they do.

https://wiki.gentoo.org/wiki/Handbook:AMD64/Working/USE

 

The idea behind USE flags

When installing Gentoo (or any other distribution, or even operating system for that matter) users make choices depending on the environment they are working with. A setup for a server differs from a setup for a workstation. A gaming workstation differs from a 3D rendering workstation.

This is not only true for choosing what packages to install, but also what features a certain package should support. If there is no need for OpenGL, why would someone bother to install and maintain OpenGL and build OpenGL support in most of the packages? If someone doesn't want to use KDE, why would they bother compiling packages with KDE support if those packages work flawlessly without?

To help users in deciding what to install/activate and what not, Gentoo wanted the user to specify his/her environment in an easy way. This forces the user into deciding what they really want and eases the process for portage to make useful decisions.

Definition of a USE flag

Enter the USE flags. Such a flag is a keyword that embodies support and dependency-information for a certain concept. If someone defines a certain USE flag, Portage will know that they want support for the chosen keyword. Of course this also alters the dependency information for a package.

Take a look at a specific example: the kde keyword. If this keyword is not in the USE variable, all packages that have optional KDE support will be compiled without KDE support. All packages that have an optional KDE dependency will be installed without installing the KDE libraries (as dependency). When the kde keyword is defined, then those packages will be compiled with KDE support, and the KDE libraries will be installed as dependency.

By correctly defining the keywords the system will be tailored specifically to the user's needs.

I would recommend you read it in it's entity if you haven't already.

 

Simply put, USE flags determine what each package/program supports. Generally, use flags determine what each package marks as it's dependencies, and alters the options passed to ./configure for the package. eg. For vlc, the 'qt5' use flag would give you the normal qt based vlc GUI. Failure to add a gtk/qt/ncurses/etc use flag to vlc would result in only cvlc being compiled, giving no GUI.

 

However, wouldn't this ean that by default almost nothing is supported? In which case, we would have to add a bunch of use flags to out make.conf for basic support? No, luckily profile-config gives us an easy way of adding basic support to a system. Depending on what you plan to install/support, you should add different flavors/mixins from profile-config to get your default-use flags set for your system.  For instance, the kde mixin would add kde-related use flags into the profile.

Since you mentioned you only have core selected, yet are using X11 and buysybox. I would like to recommend adding funtoo/1.0/linux-gnu/mix-ins/X to it (if not now autoselected by desktop).

 

Now, although I understand you don't plan on continuing with funtoo due to the frustrations you are experiencing on initial setup, I would like to still request that you post the output so, in the off chancew that you decide to try again, we may have an answer for you.

In addition to that, I would also like to request you post the contents of '/var/log/emerge.log'. With this much info, we may be better able to help.

In the event you continue using funtoo and run into further errors, you may wish to join the irc.

Funtoo Linux has a very active IRC community on Freenode (in the #funtoo channel) and you are encouraged to hang out with us.

While its harder to be detailed there, I personally find it more than adaquit for most problems. Especially for common problems such as circular deps and setting use flags.

 

 

While it's not very helpful, and you defiantly should NOT copy/past it, here is my make.conf. I commented my reasonings for adding most of the global use flags.

Not that these alone do not run my installation. I also have several use flags set in /etc/portage/package.use/* , and have a few things in package.unmask, package.accept_keywords, and package.license .

For the most part though, unmask-write and dispatch-config added these. 

 

CFLAGS is/was set to the recommened values. If you wish to compile binaries to be used on other systems, you may wish to change this

CFLAGS="-march=native -O2 -pipe"
CXXFLAGS="-march=native -O2 -pipe"
# I have 4 cores with hyperthreading, so 8 threads+1 to keep all us busy.
MAKEOPTS="-j9"

USE="

My cpu is showing support for these, So I compile everything with them. This shouldn't be needed, however, as they are selected by my march. I'm not sure why I felt compelled to list them...

sse sse2 sse3 sse4 ssse3 mmx

bash-completion yanks the cli out of hell. So I add support for it by default. Without this, even if bash-completion ebuild is emerged, most programs will not provide tab completion.

I like the lzma compression, especialy when I am stuck trying to cram a bunch of crap onto a small usb stick or cd.

pcre, or perl compatable regular experession, allow me to do things like grep -P '.+' , and similar in vim . I was intregued with perl for a while, so I have a tendency to write perl regex's. This makes that tendency non decrimental

bash-completion 
lzma pcre

I personnaly hate cups on gentoo/funtoo. I keept ran into circular dependencies with cups, cups-filter, and some other package whenever cups was updated.

As I do not actually own a printer (new printers always mark the ink as expired before I make a second print, usualy printing only 3 times a year).

I have also marked it in package.provided and manualy added cups-header o system for compiling icedtea. This is the most complex thing I usualy have to do after completing install.

And it's actually not all that bad.

-cups

Awesomewm uses lua, cairo, and I believe libnotify, adding support for it lets things like mpv and conky to better fit in the my WM. Some apps, like audacious, may add notifications (like track changed) when compiled with libnotify. As a single user system, consolekit is pointless.

cairo -consolekit libnotify -policykit dbus udev

'dvi' is the LaTex dovument format;

dvi 

I frequently play with programs which make use of opengl like blender and qemu, apparently.

opengl gles2 3dnow

I use alsa, so I have support for it by default. Many packages are setup to support pulse by default, however, making portage attempt to install pulse as a dep. As such, I explisitly state that I do not want to support for it.

I like ffmpeg, matroska, and flac. I want any video players or editors I install to support them too! Furthermore, I love watching my matroska shows and movies on a colored ascii shell(libcaca). Very high quality! (this a joke, though I do love option)

Metadata? Yes, I utilize it! As such I add exif support to anything that can support it so I can easily view/alter infor on photoes and tracks.

alsa aalib -pulseaudio
ffmpeg flac matroska thumbnail imlib2 imlib imagemagick jpeg png svg libcaca 
exif

I am using awesomewm, thus gnome and kde support is generaly unwanted. Note that adding gnome use flag wont necessarly install gnome, but it will add packages needed by anything you have installed that have gnome specific support options. However, I don't want gnome support, as it would just add wasted cpu cycles compiling ang running the program. Not to mention time compiling gnome-common and other packages necessary for gnome support.

Note semantic-desktop, kde semantic search and retrieval, is used by most kde-desktop applications. or all applications.

Never used emacs...

-kde -emacs webkit canberra X xattr

Text/Fonts

truetype unicode

My system is pure64. I even removed x86 support from the kernel. While profile should have added this, I have it here for re-ensurence.

-multilib

I have ipv6, so I ensure everything supports using it. without ipv6 here, some programs will not be able to use it by default.

If you don't have ipv6, '-ipv6' should be used instead to remove support. Which is a good idea since if ipv6 support is added, it is tried first for ~all requests. Adding noticeable lag in networks with no or error pron ipv6 support.

(comcast gave us ipv6 local network and had a ipv6 dns server defined on the modem by default, but we did not have external  ipv6 support. aaaa request thus hung and initial connections to sites were extreamly slow Furthermore it seemed like my system re-attemprted to establish an ipv6 adress ~every 15 minutes. My network now prefers ipv4, and I have created a ipv6 over ipv4 tunnel for use with ipv6 only sites, completly removing the previous lag.)

ssl nls ipv6 

My deskop is hardwired, no hardware for wifi nor bluetooth devices. So support is sensless. without '-wifi' packages like networkmanager may add useless apps for controlling such.

-wifi -bluetooth

Installed apache2. However, my installed php build did not have apache2 support. Added apache2 use flag to add support.

apache2 apache2_modules_proxy_ajp apache2_modules_proxy "

End of USE

The rest of the file.

LINGUAS="en ja"

VIDEO_CARDS="nouveau"
# If I am using blender a lot, I compile support for both and switch on boot.
# I dont keep it since I get tired of pathing nvidia. using git-sources.
# VIDEO_CARDS="nouveau nvidia"
ALSA_CARDS="hda-intel"
INPUT_DEVICES="evdev"

Oftentime, you can fix use errors by simply adding '--autounmask-write' to the emerge command.

After which, running dispatch-conf should show changes emerge wishes to make in /etc/portage/package.use or package.unmask.

If it looks good you can accept the changes.

 

If you ever want to know what use flags are availible, or what they are for, you can find it online here or you can read it localy in '/usr/portage/profiles/use.desc' and '/usr/portage/profiles/use.local.desc'

You can find short descriptions and acceptable values for other things as well such as VIDEO_CARDS, INPUT_DEVICES, and ALSA_CARDS in the files listed by

find /usr/portage/profiles/ -regex '.*\.desc$'

Though thses shouldn't be of much interest too you until you have use flags down.

 

PS.

When I first tried to install gentoo, It took me 3 tries and about 6 days. I was coming from ubuntu/debian with ~2 years worth of experience on it. Dispite being relitivly new to GNU/Linux, I was actually able to do everything was perfectly thanks to the manual...  except for missing the kernel support for my hard-drive (silicon-disk or something like that). I kept thinking it was grub2 since I believe it somehow ended up showing some unrelated error message after the kernel crashed (grub2 was near brand new at the time).

By the 3rd install I had a  64gb usb stcik with 13 distros on it, recursive menues (generated by grub functions) for toggling things like X/nox, failsafe, x86/amd_64, vesa, forensicmode, networkless mode, recoverey mode...

If it was in the original boot menu, I created a toggle for it in the custom grub2.cfg.  At that point, I knew there was no way that the simple grub2 config was the problem.  And was soon able to diagnose the real error and was dirctede to Debian HCL; Check Kernel Driver Support and report modules

which made the solution clear as day.

Point being, mine was a simple fix in the end, and I am hopeful that yours will be too. 

 

PPS. Thinking about it again, peer-peeer networking with all users acting as binhost could be interesting. However, I would imain verifying every possible binary created (all use options, using every supported version of packages it depends on, which also could be compiled withany use, and any verson of deps... )) would be impossible. So while we could create such a network, we couldnt verify that the majourity of the binaries are truely what they claim to be (except by compiling them ourselves with the same versions of all used packages, which would make the peer network pointless since we or a authoritive server has to compile the package in the end for verification).

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...