[TH] zła kolejno

Arkadiusz Patyk areq w pld-linux.org
Sob, 29 Wrz 2007, 02:30:11 CEST


On Fri, 28 Sep 2007 16:54:48 +0200, you wrote:
> 2. Zaprojektowac/napisac %post i/lub triggery, ktore nie beda
> potrzebowaly ani /bin/sh ani glibc do dzialania. /me nie  umie.
> AFAIR to chyba skrypty LUA były obsługiwane wewnętrznie
> http://blog.labix.org/2004/03/23/embedding-lua-interpreter-into-rpm/
>>> > > Ok, wygląda sensownie, a jakiś przykład problematycznego skryptu?
>> > pdksh
>> Dodam, ze chodzi o wykonanie:
>>         echo "/bin/ksh" > /etc/shells
>rpm -E '%{lua: f = io.open("/etc/shells", "w"); f:write("/bin/ksh\n");
>f:close(); }'
>>         echo "/bin/sh" >> /etc/shells
>rpm -E '%{lua: f = io.open("/etc/shells", "a"); f:write("/bin/sh\n");
>f:close(); }'


czyli obecne:
%post
if [ ! -f /etc/shells ]; then
        umask 022
        echo "/bin/ksh" > /etc/shells
        echo "/bin/sh" >> /etc/shells
else
        while read SHNAME; do
                if [ "$SHNAME" = "/bin/ksh" ]; then
                        HAS_KSH=1
                elif [ "$SHNAME" = "/bin/sh" ]; then
                        HAS_SH=1
                fi
        done < /etc/shells
        [ -n "$HAS_KSH" ] || echo "/bin/ksh" >> /etc/shells
        [ -n "$HAS_SH" ] || echo "/bin/sh" >> /etc/shells
fi

zamieniamy na:
%post -p <lua>
t = {};
f = io.open("/etc/shells", "r")
if f then
   for l in f:lines() do  t[l]=l; end
   f:close()
end
for _, s in ipairs({"/bin/ksh", "/bin/sh"}) do
   if not t[s] then
      f = io.open("/etc/shells", "a"); f:write(s.."\n"); f:close();
   end
end

(to mój pierwszy skrypt w LUA ;-) )

Pozdrawiam,
-- 
Arkadiusz Patyk [areq<>pld-linux:org] [http://rescuecd.pld-linux.org/]
[IRC:areq GG:1383 jid:arek<>patyk:net]


Więcej informacji o liście dyskusyjnej pld-devel-pl