[arch-dev-public] install scripts in core

Allan McRae allan at archlinux.org
Mon Feb 2 20:08:23 EST 2009


Aaron Griffin wrote:
> On Sat, Jan 31, 2009 at 11:08 AM, Allan McRae <allan at archlinux.org> wrote:
>   
>> Dan McGee wrote:
>>     
>>> On Sat, Jan 31, 2009 at 7:18 AM, Allan McRae <allan at archlinux.org> wrote:
>>>
>>>       
>>>> Thomas Bächler wrote:
>>>>
>>>>         
>>>>> Allan McRae schrieb:
>>>>>
>>>>>
>>>>>           
>>>>>> fakeroot
>>>>>>  echo (coreutils)
>>>>>>
>>>>>>             
>>>>> echo is a shell builtin, /bin/echo will never be used.
>>>>>
>>>>> <snip>
>>>>> As I said, echo is a shell builtin, and unless we call /bin/echo
>>>>> explicitly, the builtin will be used (it's not only a builtin in bash,
>>>>> but
>>>>> also dash, so we should be fine). We could replace 'cat XYZ | command'
>>>>> with
>>>>> 'command < XYZ'.
>>>>>
>>>>>
>>>>>           
>>>>>> The install scripts for lilo and vi also fail if bash is not installed
>>>>>> (for some unknown reason).  Lilo is just and old style "/bin/true"
>>>>>> script so
>>>>>> is easily fixed but I do not understand these two issues...
>>>>>>
>>>>>>             
>>>>> No idea here too, maybe one of the commands calls /bin/sh or so. Making
>>>>> lilo and vi depend on "sh" or so is okay IMO.
>>>>>
>>>>>           
>>>> The echo stuff is just as weird as what is happening with vi and lilo.
>>>>  But
>>>> I can replicate the for errors the packages using echo with both
>>>> makchrootpkg and "pacman -Sr <root> pkg".  Installing bash before these
>>>> packages fixes the issue (dash does not).   Anyone know what is causing
>>>> this?
>>>>
>>>>         
>>> Yes- /bin/sh is a symlink to /bin/bash, in the bash package. dash
>>> cannot install this symlink as it would obviously conflict (although
>>> if Ubuntu can do it...). Pacman simply shells out to /bin/sh, so if
>>> you create the relevant symlink, things will just work with dash as
>>> well.
>>>
>>>       
>> OK, that explains why dash does not help, but why are those install scripts
>> failing?  Are you saying that the system needs bash installed before it can
>> run post_install scripts?  More directly to the issue, why do post_install
>> scripts with "echo" in them fail if bash is not installed when others seem
>> to run fine (or at least do not report an error)?
>>     
>
> The way pacman calls the scriptlets, it actually uses the shell from
> the _parent_ system. I know this for a fact, because Dan and I
> investigated, added checks for bash in the chroot, then realized it
> didn't matter and reverted it.
>
> Are you _sure_ it's bash failing like you suspect? What happens if you
> just install vi and library deps in a chroot and try to run things
> manually

I am fairly sure that these install scripts seem to need bash on the 
*child* system. 

lilo, vi, mlocate (after add coreutils dep) and fakeroot all fail to run 
their post install script with their current dependencies.  Pulling in 
bash to the chroot before them makes it work.  Bash pulls in ncurses and 
readline as well, but just adding these does not fix the problem.  So 
whatever the cause, having bash in the child system seems to fix it.  
For vi, mlocate and fakeroot, I think the "echo" line is causing it.  No 
idea with lilo...

This occurs both with "pacman -r" and "mkarchroot".

Allan






More information about the arch-dev-public mailing list