Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 469136

Summary: sys-apps/openrc-0.11.8 - rc-update does not display orphan services which it presents in rc-update list, but which were already removed
Product: Gentoo Hosted Projects Reporter: Sergey S. Starikoff <Ikonta>
Component: OpenRCAssignee: OpenRC Team <openrc>
Status: UNCONFIRMED ---    
Severity: normal CC: whissi
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---

Description Sergey S. Starikoff 2013-05-09 05:48:56 UTC
While migrating on current version of sys-fs/udev (followed with renaming of network ifaces symbolic links) I've find the following issue (currently it was willingly reproduced for this bug report):

Start point: I've renamed my main interface symbolic link prior to removing it from auto-start list.
And it disappeared from it:
tux ~ # rc-update show | grep wlan
So, I can't simply remove it.
To do it I need to re-create init script (for network interfaces --- symbolic link) and only after that service appears in list and I can remove it:
tux ~ # cd /etc/init.d/
tux init.d # ln -s net.lo net.wlan0
tux init.d # rc-update -v show | grep wlan
            net.wlan0 |      default  
# rc-update del net.wlan0
 * service net.wlan0 removed from runlevel default
# tux init.d # rm net.wlan0

I think, rc-update utility needs in option to breake this link and make it display all services, not only ones with existing init script.


$ einfo 
Portage 2.1.11.62 (default/linux/amd64/13.0, gcc-4.6.3, glibc-2.15-r3, 3.7.10-gentoo-r1 x86_64)
=================================================================
System uname: Linux-3.7.10-gentoo-r1-x86_64-Intel-R-_Core-TM-_i5_CPU_661_@_3.33GHz-with-gentoo-2.2
KiB Mem:     7978480 total,   5334064 free
KiB Swap:    4024240 total,   4024240 free
Timestamp of tree: Thu, 09 May 2013 04:15:01 +0000
ld GNU ld (GNU Binutils) 2.22
app-shells/bash:          4.2_p45
dev-java/java-config:     2.1.12-r1
dev-lang/python:          2.7.3-r3, 3.2.3-r2
dev-util/cmake:           2.8.9
dev-util/pkgconfig:       0.28
sys-apps/baselayout:      2.2
sys-apps/openrc:          0.11.8
sys-apps/sandbox:         2.5
sys-devel/autoconf:       2.13, 2.69
sys-devel/automake:       1.11.6, 1.12.6
sys-devel/binutils:       2.22-r1
sys-devel/gcc:            4.6.3
sys-devel/gcc-config:     1.7.3
sys-devel/libtool:        2.4-r1
sys-devel/make:           3.82-r4
sys-kernel/linux-headers: 3.7 (virtual/os-headers)
sys-libs/glibc:           2.15-r3
Repositories: gentoo rion zugaina ftn-local
ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="* -@EULA GPL* skype-eula"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=native -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /etc/conf.d/clock /etc/rc.conf /usr/share/gnupg/qualified.txt /var/bind"
CONFIG_PROTECT_MASK="${EPREFIX}/etc/gconf /etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5.4/ext-active/ /etc/php/cgi-php5.4/ext-active/ /etc/php/cli-php5.4/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-march=native -O2 -pipe"
DISTDIR="/usr/portage/distfiles"
EMERGE_DEFAULT_OPTS="--ask=y --verbose --autounmask=n"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs buildsyspkg config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="ftp://xeon.gentoo.ru/mirrors/gentoo/distfiles/ 		ftp://mirror2.corbina.ru/gentoo-distfiles/ 		http://mirror2.corbina.ru/gentoo-distfiles/ 		http://mirror.yandex.ru/gentoo-distfiles/ ftp://mirror.yandex.ru/gentoo-distfiles/ 		http://gentoo.bloodhost.ru/ 		ftp://gentoo.bloodhost.ru/ 		distfiles.gentoo.org"
LANG="ru_RU.UTF8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j2"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/var/lib/layman/rion /var/lib/layman/zugaina /usr/local/portage"
SYNC="rsync://mirror.yandex.ru/gentoo-portage/"
USE="X a52 acl alsa amd64 berkdb bzip2 cairo cdr cli consolekit cracklib crypt cups cxx dbus djvu dri dv dvd ffmpeg flac fortran gdbm gif gtk iconv icu jpeg jpeg2k kpathsea mac mmx modules mp3 mpeg mudflap multilib ncurses nls nptl ogg openmp pam pcre pdf png policykit qt3support readline session sse sse2 ssl tcpd tiff truetype unicode utf8 v4l v4l2 vorbis zlib" ABI_X86="64" ALSA_CARDS="hda-intel" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc" FOO2ZJS_DEVICES="hp1018" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" INPUT_DEVICES="keyboard mouse" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="ru" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-3" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_2" QEMU_SOFTMMU_TARGETS="i386" QEMU_USER_TARGETS="i386" RUBY_TARGETS="ruby18 ruby19" SANE_BACKENDS="genesys" USERLAND="GNU" VIDEO_CARDS="intel" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  CPPFLAGS, CTARGET, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON
Comment 1 William Hubbs gentoo-dev 2014-01-15 17:36:12 UTC
For your information, I just found that something like this is valid to
remove dangling symlinks from /etc/runlevels:

rm $(find -L /etc/runlevels -type l)

Given that, do you still think we should do this in OpenRC?

Thanks,

William
Comment 2 Thomas Deutschmann gentoo-dev Security 2014-01-15 18:39:12 UTC
William, please have a look at app-misc/ca-certificates's pkg_postinst function [1]. Maybe we can do the same in the OpenRC ebuild to inform the user about orphan services he/she should cleanup?

Also, can we show such a warning every time we update the depgraph? I don't think we need support in rc-update but this would help to inform the user and would have helped with bug 490750, too.
We could introduce another rc_ variable to suppress this check for people who don't want that.


[1] http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/app-misc/ca-certificates/ca-certificates-20130906.ebuild?view=markup
Comment 3 William Hubbs gentoo-dev 2014-01-15 22:24:30 UTC
(In reply to Thomas D. from comment #2)
> William, please have a look at app-misc/ca-certificates's pkg_postinst
> function [1]. Maybe we can do the same in the OpenRC ebuild to inform the
> user about orphan services he/she should cleanup?

I have a couple of concerns about doing something like this at the ebuild level.

Keep in mind that this approach doesn't help distros or users that do not use ebuilds, so Debian, Alpine and others would not be able to use it.

Also, to really do this right, it would need to be a function in an eclass so that any ebuild that installs an init script could use it in pkg_postinst.

It doesn't seem to be worth the effort at this level since it wouldn't benefit all of our users and would require a lot of effort across multiple ebuilds.

> Also, can we show such a warning every time we update the depgraph? I don't
> think we need support in rc-update but this would help to inform the user
> and would have helped with bug 490750, too.
> We could introduce another rc_ variable to suppress this check for people
> who don't want that.

At a quick glance, I have to say I'm not sure we could do this when we build the depgraph, because the depgraph building code does not seem to check the runlevels directories for any of its information.