maemo.org - Talk

maemo.org - Talk (https://talk.maemo.org/index.php)
-   Maemo 5 / Fremantle (https://talk.maemo.org/forumdisplay.php?f=40)
-   -   [Announce] Enhanced BusyBox package (https://talk.maemo.org/showthread.php?t=72801)

anthonie 2013-03-18 23:01

Re: [Announce] Enhanced BusyBox package
 
Yes, manually adding them, provided you take care of the xrw attributes, should work. After all, each program you install on a linux machine should provide it's own man page, that gets placed in /usr/share/man or whatever, at the time of installing. So that's not different. There is a pretty strict structure though.

http://www.schweikhardt.net/man_page_howto.html

This link will provide you with more information than you need but have a look anyway ;)

sowwhatyoureap 2013-03-19 01:03

Re: [Announce] Enhanced BusyBox package
 
Had a look at the guide you provided but for some reason man just don't want to cooperate... I've set the MANPATH=/usr/share/man/man1:/usr/share/man (and used export) and placed the unpacked (was .gz in EasyDebian) man page for "find" -- "find.1" -- in the man1 dir but no go. "man find" still complains about "no entry" and "man -a" returns zero entries.

I guess there is another requisite to get man to find the pages. I'm no Linux whiz so I don't really know what to try next. If you have any ideas, let me know. Of course, I could install the man-db package as you mentioned but I would rather install individual man pages to limit the space required.

A little bit off topic: do you happen to know which .profile / startup script gets read when using "sudo gainroot" as opposed to "root"? I ask because I have some aliases set up in /etc/profile that works for user/root, but for some reason not when "sudo gainroot" is entered.

Estel 2013-03-19 09:58

Re: [Announce] Enhanced BusyBox package
 
man-db package should also assist in downloading new man pages from internet, shouldn't it?

iDont, Imve just noticed new update to busybox-power. I hope, that you won't forget about thumb users ;) Thanks a lot for keeping it updated!

/Estel

anthonie 2013-03-19 11:12

Re: [Announce] Enhanced BusyBox package
 
@sowwhatyoureap

I'd need to look into that man-problem you're having there as I don't have it on my N900 at the moment. I'll see if I can do that later today.

About the root and gainroot differences;

There are three ways to elevate user rights:

1. Using sudo, elevates user rights to root-level, temporarely, without changing current work directory. E.g. /home/user (your prompt will look like $).

2. Using sudo gainroot, changes user from user to root, without changing current workdirectory.
E.g. /home/user (your prompt will look like #).

3. Using root, changes user from user to root, and changes directory to root.
E.g. /root (your prompt will look like #).

For options 2 and 3, one would have to type "exit" to get back to a normal user level, while sudo maintains it's prompt and doesn't need that.

Ad 2. You can see what gainroot does by
Code:

cat /usr/sbin/gainroot
It checks to see if you are already root, and if not, it executes x--use-su and "su" stands for "switch user".

Ad 3. You can see what what root does by
Code:

cat /usr/bin/root
It executes exec sudo gainroot --use-su

What that means, practically is that if you need root rights and you want to remain in the directory where you already are, sudo or sudo gainroot is more practical, as it saves type and tabbing.

sowwhatyoureap 2013-03-19 14:43

Re: [Announce] Enhanced BusyBox package
 
Quote:

Originally Posted by anthonie (Post 1330005)
@sowwhatyoureap

I'd need to look into that man-problem you're having there as I don't have it on my N900 at the moment. I'll see if I can do that later today.

Thanks, if you have the time it would be much appreciated.

And thx for the recap on root / gainroot, didn't know root actually executed sudo gainroot.

Although the question remains -- if the user is changed to root via sudo gainroot, why doesn't commands (such as alias) in /etc/profile get executed? From what I've read, /etc/profile is suppose to be global, so why does the "sudo gainroot" ignore that?

anthonie 2013-03-19 15:41

Re: [Announce] Enhanced BusyBox package
 
Quote:

Originally Posted by sowwhatyoureap (Post 1330047)
Although the question remains -- if the user is changed to root via sudo gainroot, why doesn't commands (such as alias) in /etc/profile get executed? From what I've read, /etc/profile is suppose to be global, so why does the "sudo gainroot" ignore that?

I am not sure if I understood your question correctly and perhaps you could be more explicit about the format of the alias and/or the error message you get, but allow me speculate a bit.

If you would execute a command that needs to be executed as root, while you are already root, the sudo before that would in effect try to elevate rights that are already given. So, let's say you try and do this as root:

Code:

# sudo apt-get update
The error message coming back would be something along the lines of "root is not in sudoers file."

Like I said, I may have misunderstood your question completely, so perhaps it's just bollocks I am talking.

Sudo rules, by the way, can be found at

Code:

cat /etc/sudoers.d/01sudo
Files placed in that directory /etc/sudoers.d/ allow you to execute commands without sudo asking you for a password.

If you do an ls there, you'll notice the programs installed on your n900 that need sudo rights in so far they chose not to append an extra rule to the 01sudo file.

Edit: I'll try to have a look tonight at your man page thing. But the suggestion to simply install man-db really isn't a bad one allbeit less educational. ;)

iDont 2013-03-19 20:18

Re: [Announce] Enhanced BusyBox package
 
Quote:

Originally Posted by sowwhatyoureap (Post 1329759)
First, thanks iDont for the awesome job updating and improving the BusyBox package. I literally just today found out that this existed. Was thinking about switching to Bash a while earlier since I needed some utils from there, but seeing as they are available in this package it's all good. :D

Thanks!

Quote:

Originally Posted by sowwhatyoureap (Post 1329759)
I noticed that the command man is included in the package, and tried it out but there doesn't seem to be any man pages -- man -a returns nothing and /usr/share/man is empty (apart from README). Is it intentional and if so where can I find man pages for download? How much space would all man pages (for default commands and this package) require approximately?

Yes, the man pages are usually left out of Maemo's packages to save space. BusyBox' man page is ~92KiB and provides roughly the same content as "<busybox applet> --help" would show you.

MohammadAG created a man-db-n900 package that is configured to read man pages from /opt/man. He also created a second package - man-db-pages, which installs the actual man pages to /opt/man. But those man pages may not be (fully) applicable to BusyBox' applets, which often don't have the full capabilities of their bigger counterparts.

So if you're after BusyBox' own man page: IMO, I wouldn't bother. If you're after all the other man pages: installing man-db-n900 and man-db-pages would be your best bet.

You got me thinking, by the way. I could probably make busybox-power provide man-db-n900 and set it up so it will read man pages from /opt/man by default (and include BusyBox' man page by default in /opt/man/). This way, you won't have to install man-db-n900, as busybox-power provides everything you need. I smell a new feature for an upcoming busybox-power release :).

Quote:

Originally Posted by sowwhatyoureap (Post 1329933)
Had a look at the guide you provided but for some reason man just don't want to cooperate... I've set the MANPATH=/usr/share/man/man1:/usr/share/man (and used export) and placed the unpacked (was .gz in EasyDebian) man page for "find" -- "find.1" -- in the man1 dir but no go. "man find" still complains about "no entry" and "man -a" returns zero entries.

Try setting "MANPATH=/usr/share/man". And don't extract the .gz archive, just place it in /usr/share/man/*/ as-is, e.g. /usr/share/man/man1/find.1.gz.
That should work.

Quote:

Originally Posted by sowwhatyoureap (Post 1330047)
Although the question remains -- if the user is changed to root via sudo gainroot, why doesn't commands (such as alias) in /etc/profile get executed? From what I've read, /etc/profile is suppose to be global, so why does the "sudo gainroot" ignore that?

Basically, the login shell is responsible for some several things, e.g. parsing /etc/profile and setting up your environment. When sudo is ran without -i (simulate initial login), the command you're trying to run as root won't get passed to root's default login shell, hence /etc/profile won't get parsed.

Something similar goes for su: when su is executed without -l, --login or a plain dash ("-"), the shell you're trying to start won't get started as a login shell, hence /etc/profile won't get parsed.

sudo gainroot = sudo /bin/sh (note the absence of -i)
root = sudo gainroot --use-su = su - (note the inclusion of the dash)

Therefore, "root" will parse your /etc/profile, but "sudo gainroot" won't :).

FYI, how I got the above information:
cat /usr/bin/root
cat /usr/sbin/gainroot
man sudo
man su

iDont 2013-03-19 20:28

Re: [Announce] Enhanced BusyBox package
 
Quote:

Originally Posted by Estel (Post 1329990)
iDont, Imve just noticed new update to busybox-power. I hope, that you won't forget about thumb users ;) Thanks a lot for keeping it updated!

/Estel

Don't worry, I haven't forgotten about the -thumb users. Guess who runs cssu-thumb as well :).

I don't have upload rights to the community-thumb, so each busybox-power -thumb release has to be manually processed by freemangordon. And as you probably know, he's always busy with all kinds of exciting stuff, so busybox-power is probably not his top priority. Therefore, it might take some time before a new busybox-power release ends up in the community-thumb repository.

Anyway, the -thumb Debian archive has been uploaded to busybox-power's garage page, so you can install it manually if you wish: https://garage.maemo.org/frs/?group_id=2216. Sorry for the delay.

sowwhatyoureap 2013-03-20 01:10

Re: [Announce] Enhanced BusyBox package
 
Quote:

Originally Posted by anthonie (Post 1330078)
I am not sure if I understood your question correctly and perhaps you could be more explicit about the format of the alias and/or the error message you get, but allow me speculate a bit.

I probably wasn't being very clear, sorry. To be explicit, I've set up aliases for the ls command to make life easier on the N900, e.g. these:
Code:

alias ll='ls -lp'
alias l='ls -lAp'

As I've put them in /etc/profile, these get sourced properly for default user and running "root", yielding access to "l" and "ll" aliases from the terminal upon shell startup. The same does not apply to "sudo gainroot" as it appears -- iDont covers this in his post above.

Quote:

Originally Posted by iDont (Post 1330161)
You got me thinking, by the way. I could probably make busybox-power provide man-db-n900 and set it up so it will read man pages from /opt/man by default (and include BusyBox' man page by default in /opt/man/). This way, you won't have to install man-db-n900, as busybox-power provides everything you need. I smell a new feature for an upcoming busybox-power release :).

Probably a good idea since barebone man seems to not function properly at the moment -- see below.

Quote:

Originally Posted by iDont (Post 1330161)
Try setting "MANPATH=/usr/share/man". And don't extract the .gz archive, just place it in /usr/share/man/*/ as-is, e.g. /usr/share/man/man1/find.1.gz.
That should work.

Tried that and it apparently did make man locate the page, however running "man find" again I instead get
Code:

sh: gtbl: not found
sh: nroff: not found

suggesting that I'm missing commands gtbl and nroff. Googling, these appear to be associated with formatting and rendering the manual pages. Looking at the description for the man-db-n900 package it says it uses the groff suite to format and display man pages, so I guess I'm better off just installing that.

Quote:

Originally Posted by iDont (Post 1330161)
Basically, the login shell is responsible for some several things, e.g. parsing /etc/profile and setting up your environment. When sudo is ran without -i (simulate initial login), the command you're trying to run as root won't get passed to root's default login shell, hence /etc/profile won't get parsed.

Appreciate the Linux lessons, learning more by the day. :)

Found this little post explaining the difference (using bash) between login and non-login shells regarding what it sources and also mentions (non-)interactive shells: http://www.linuxquestions.org/questi...983/#post66932

So if I've understood correctly: in the case of "sudo gainroot", since it doesn't enter a login shell, it should instead source "~/.bashrc" if it exists. This applies to bash shell, but what happens in the BusyBox case as it uses ash instead? Where should I put my custom commands to be sourced at startup, i.e. which file does it source for non-login shells? Briefly tried modifying /root/.bashrc and copied it to /home/user and but no go -- probably not so surprising as it's not running bash.

reinob 2013-03-20 09:35

Re: [Announce] Enhanced BusyBox package
 
Quote:

Originally Posted by sowwhatyoureap (Post 1330197)
So if I've understood correctly: in the case of "sudo gainroot", since it doesn't enter a login shell, it should instead source "~/.bashrc" if it exists. This applies to bash shell, but what happens in the BusyBox case as it uses ash instead? Where should I put my custom commands to be sourced at startup, i.e. which file does it source for non-login shells? Briefly tried modifying /root/.bashrc and copied it to /home/user and but no go -- probably not so surprising as it's not running bash.

Busybox's shell (ash) sources the script referenced by the ENV variable, if set.

So you could put your aliases under /root/.bashrc, and then edit /usr/sbin/gainroot and change this line:
Code:

HISTFILE=/root/.ash_history /bin/sh
to
Code:

HISTFILE=/root/.ash_history ENV=/root/.bashrc /bin/sh
and you're set.

For a login shell ("root" = "sudo gainroot --use-su" == "sudo su -") /root/.profile will be sourced, which in turn will source /root/.bashrc.


All times are GMT. The time now is 02:04.

vBulletin® Version 3.8.8