Opened 10 years ago
Closed 10 years ago
#44764 closed defect (fixed)
coreutils 8.23_0 failed to upgrade
Reported by: | schnide (Joe Schnide) | Owned by: | ryandesign (Ryan Carsten Schmidt) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.3.99 |
Keywords: | Cc: | udbraumann | |
Port: | coreutils |
Description
yosemite DP 6, port upgrade outdated, coreutils 8.22_0 < 8.23_0 failed to upgrade. find log attached.
Attachments (2)
Change History (19)
Changed 10 years ago by schnide (Joe Schnide)
Attachment: | coreutils.txt added |
---|
comment:1 Changed 10 years ago by neverpanic (Clemens Lang)
Owner: | changed from macports-tickets@… to ryandesign@… |
---|
Seems to be a regression introduced by Ryan in r124489. Ryan?
comment:2 follow-ups: 3 5 Changed 10 years ago by neverpanic (Clemens Lang)
Also, you don't happen to have macportsuser root
in your $prefix/etc/macports/macports.conf
, do you?
comment:3 Changed 10 years ago by udbraumann
Get the same error on my good old 10.5.8 PPC box, but as far as I can remember, had no problems on a 10.6.8 Intel machine earlier today ...
comment:5 Changed 10 years ago by schnide (Joe Schnide)
Replying to cal@…:
Also, you don't happen to have
macportsuser root
in your$prefix/etc/macports/macports.conf
, do you?
I have done a standard install from the instructions that were current when I installed. I have seen feedback from the install and upgrades commands with something about 'macportsuser root`. Where can I find information about this and put it in to my setup (if I need to)? I would prefer not to delete and reinstall everything.
comment:6 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)
jschnide: as cal said, check your macports.conf file. What does it say about macportsuser? The default and usually correct value for this setting is "macports", and you would also need an OS X user account by that name. The MacPorts installer package would have created this for you and set it up for you this way. Your macportsuser should not be "root"; that defeats the purpose.
comment:7 follow-up: 11 Changed 10 years ago by schnide (Joe Schnide)
Please find attached macports.conf file. There is no macportsuser OS X user account. What steps need to be done to get things set up properly? Or would it be better to wipe everything and reinstall everything?
comment:8 follow-ups: 9 12 Changed 10 years ago by neverpanic (Clemens Lang)
Your setup seems to be correct. In this case, there might be a problem with the Portfile.
comment:9 follow-up: 10 Changed 10 years ago by udbraumann
In my macports.conf on my old 10.5.8. PPC I found this definition line not commented out:
# Set the user to run MacPorts compiles, etc as when privileges are dropped during an install macportsuser root
After simply putting a leading # here like
#macportsuser root
I cleaned
sudo port clean coreutils
and called again
sudo port upgrade coreutils
by this doing a smooth upgrade.
However, I have a macports
installation since more than five years and I never ever had to manually touch the macports.conf
before. So I have no idea why this line was previously not commented out, and I also have no idea about possible side effects which may arise from my manipulation.
I also need to say that on a much more recent macports
installation on a 10.6.8 i386 initially made in 2013 this line was commented out, so no problems had occurred during the upgrade of coreutils
to version 8.23_0.
comment:10 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)
Replying to braumann@…:
However, I have a
macports
installation since more than five years and I never ever had to manually touch themacports.conf
before. So I have no idea why this line was previously not commented out, and I also have no idea about possible side effects which may arise from my manipulation.
Because we changed the defaults a few years ago. It's your responsibility, every time MacPorts base is updated, to compare the contents of your macports.conf (which MacPorts never touches) with macports.conf.default in the same directory (which is updated by MacPorts), and adopt any changes from the latter into the former.
The side effects of changing the macportsuser from root to macports is that strange ports will no longer have free reign to read or write files anywhere they please; they're now restricted to reasonable locations. This is a good thing—it's more secure—and it's why we made this change in the defaults.
comment:11 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)
Replying to jschnide@…:
Please find attached macports.conf file. There is no macportsuser OS X user account. What steps need to be done to get things set up properly? Or would it be better to wipe everything and reinstall everything?
The name of the setting in macports.conf is "macportsuser"; its value, and the name of the OS X user account, is usually "macports". You may not see this account in System Preferences; you can run "id macports
" on the command line to see if that user is defined.
comment:12 follow-up: 13 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)
Replying to cal@…:
Your setup seems to be correct. In this case, there might be a problem with the Portfile.
The only problem with the portfile is that it does not allow itself to be used as root. Admittedly this is an unusual restriction and I could revert r124489 to allow this again. However it seems that users are unaware that they are running as root and are unaware of the security implications of doing that, so perhaps that's what we should fix instead.
jschnide, your log does not include the usual privilege-dropping lines. Usually one starts MacPorts with sudo
, thus giving it root privileges. MacPorts then quickly gives up those privileges and switches to the unprivileged macports
user, but in your log, that's not happening. Do you have any idea why? Since you're running MacPorts on a system for which we don't provide binaries yet, I presume you compiled MacPorts from source. What configure arguments did you use?
comment:13 follow-up: 14 Changed 10 years ago by schnide (Joe Schnide)
Replying to ryandesign@…:
The only problem with the portfile is that it does not allow itself to be used as root. Admittedly this is an unusual restriction and I could revert r124489 to allow this again. However it seems that users are unaware that they are running as root and are unaware of the security implications of doing that, so perhaps that's what we should fix instead.
jschnide, your log does not include the usual privilege-dropping lines. Usually one starts MacPorts with
sudo
, thus giving it root privileges. MacPorts then quickly gives up those privileges and switches to the unprivilegedmacports
user, but in your log, that's not happening. Do you have any idea why? Since you're running MacPorts on a system for which we don't provide binaries yet, I presume you compiled MacPorts from source. What configure arguments did you use?
I did nothing unusual. I first used the uninstall instructions on the macports web pages. I then did copy and paste from the install page on how to install from source on the macports web pages. My standard process is to sudo bash, port -d selfupdate, port upgrade outdated and then port -f uninstall inactive.
Just to clarify, what process should be followed whenever macports is updated? Should users should replace macports.conf with macports.conf.defaults? I've been using macports for many years and was not aware of this step.
Thanks
comment:14 follow-up: 16 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)
Replying to jschnide@…:
I did nothing unusual. I first used the uninstall instructions on the macports web pages. I then did copy and paste from the install page on how to install from source on the macports web pages. My standard process is to sudo bash, port -d selfupdate, port upgrade outdated and then port -f uninstall inactive.
Instead of running sudo bash
, try running sudo -s
. Also, instead of port upgrade outdated
and then port -f uninstall inactive
, you could just run port -u upgrade outdated
.
Just to clarify, what process should be followed whenever macports is updated? Should users should replace macports.conf with macports.conf.defaults?
If you have not made any edits to your macports.conf, replacing it with macports.conf.default would be acceptable. However if you have made edits to macports.conf that you wish to keep, you should compare the two files and figure out what you want to do with each line.
I've been using macports for many years and was not aware of this step.
We should document this requirement better.
comment:15 Changed 10 years ago by macports.org@…
We should document this requirement better.
Maybe hash the .conf.default
, on upgrade see if .conf.default
has changed and if it has:
- if
.conf
is a straight copy of the old.conf.default
upgrade it directly - otherwise print a note that defaults have changed and the local configuration may need to be upgraded
Because I was also unaware of this requirement, never touched macports.conf
and the svn $Id$ of my old conf file (which I've now replaced with the current default) states it's from 2009 (revision 59588)
comment:16 follow-up: 17 Changed 10 years ago by schnide (Joe Schnide)
Replying to ryandesign@…:
Replying to jschnide@…:
I did nothing unusual. I first used the uninstall instructions on the macports web pages. I then did copy and paste from the install page on how to install from source on the macports web pages. My standard process is to sudo bash, port -d selfupdate, port upgrade outdated and then port -f uninstall inactive.
Instead of running
sudo bash
, try runningsudo -s
. Also, instead ofport upgrade outdated
and thenport -f uninstall inactive
, you could just runport -u upgrade outdated
.
Tried this and worked fine, I will continue to use this process.
Just to clarify, what process should be followed whenever macports is updated? Should users should replace macports.conf with macports.conf.defaults?
If you have not made any edits to your macports.conf, replacing it with macports.conf.default would be acceptable. However if you have made edits to macports.conf that you wish to keep, you should compare the two files and figure out what you want to do with each line.
I made the replacement and did:
port clean --all coreutils port upgrade coreutils
(it failed again)
port uninstall coreutils port install coreutils
(it failed again)
Here are the last few lines of the log:
:info:configure checking whether mkfifo rejects trailing slashes... no :info:configure checking whether mknod can create fifo without root privileges... configure: error: in `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_sysutils_coreutils/coreutils/work/coreutils-8.23': :info:configure configure: error: you should not run configure as root (set FORCE_UNSAFE_CONFIGURE=1 in environment to bypass this check) :info:configure See `config.log' for more details :info:configure Command failed: cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_sysutils_coreutils/coreutils/work/coreutils-8.23" && ./configure --prefix=/opt/local --disable-silent-rules --program-prefix=g :info:configure Exit code: 1 :error:configure Failed to configure coreutils, consult /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_sysutils_coreutils/coreutils/work/coreutils-8.23/config.log :error:configure Failed to configure coreutils: configure failure: command execution failed :debug:configure Error code: NONE :debug:configure Backtrace: configure failure: command execution failed while executing "$procedure $targetname" :error:configure See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_sysutils_coreutils/coreutils/main.log for details.
Let me know if you would like me to send along the full log. Many thanks for your time on this.
Thanks
comment:17 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)
Resolution: | → fixed |
---|---|
Status: | new → closed |
Replying to jschnide@…:
:info:configure configure: error: you should not run configure as root (set FORCE_UNSAFE_CONFIGURE=1 in environment to bypass this check)
I do not know why your MacPorts continues to try to run the configure phase as root. It should not, and it is unsafe to do so, but since I don't know how else to help you, I reverted r124489 in r125500.
coreutils upgrade log