diff --git a/Change.log b/Change.log index c255a8c..551e170 100644 --- a/Change.log +++ b/Change.log @@ -1,7 +1,8 @@ CHANGE LOG 1.2.6 -* Исправлен порядок сборки, для корректной сборки модуля aufs2. +* Добавлена утилита cl-unmask для размаскировки пакетов. +* Исправлен порядок сборки, для корректной установки модуля aufs2. * Исправлено удаление файлов по профилю, при установке в режиме builder. 1.2.5 diff --git a/Makefile b/Makefile index 1b147bf..b8b5952 100644 --- a/Makefile +++ b/Makefile @@ -19,6 +19,8 @@ install: all @${FIND} install -wholename \*.svn -prune -o -type l -exec ${COPYLINK} {} ${DESTDIR}/usr/${NAME}/{} \; @${CHMOD} 755 ${DESTDIR}/usr/${NAME}/install/calculate @${CHMOD} 755 ${DESTDIR}/usr/${NAME}/install/cl-builder + @${CHMOD} 755 ${DESTDIR}/usr/${NAME}/install/cl-unmask @${MKDIR} ${DESTDIR}/usr/bin @${LN} ${DESTDIR}/usr/calculate/install/calculate ${DESTDIR}/usr/bin/calculate @${LN} ${DESTDIR}/usr/calculate/install/cl-builder ${DESTDIR}/usr/bin/cl-builder + @${LN} ${DESTDIR}/usr/calculate/install/cl-unmask ${DESTDIR}/usr/bin/cl-unmask diff --git a/install/calculate b/install/calculate index 26329cc..1b01262 100755 --- a/install/calculate +++ b/install/calculate @@ -57,6 +57,9 @@ if(defined $data{arg}{'vars'}){ #Сгенерируем новый initrd }elsif(defined $data{arg}{'initrd'}){ initrd(); +#Размаскируем пакеты +}elsif(defined $data{arg}{'unmask'}){ + autounmask(); #Установим по необходимости видеодрайвер }elsif(defined $data{arg}{'video'}){ video(); @@ -289,6 +292,7 @@ sub getarg{ "V" => '', "version" => '', "translate" => '', "initrd" => '', + "unmask" => '', "video" => '', "chroot" => '', "nodie" => '', #выводить минимум информации показывая неверно завершенную работу @@ -484,6 +488,9 @@ sub getarg{ if(defined $data{arg}{'initrd'}){ $data{CHECKSYSTEM_NOMES}++; } + if(defined $data{arg}{'unmask'}){ + $data{CHECKSYSTEM_NOMES}++; + } if(defined $data{arg}{'video'}){ $data{CHECKSYSTEM_NOMES}++; } @@ -565,10 +572,8 @@ sub getarg{ return ""; }elsif(defined $data{arg}{V} || defined $data{arg}{version}){ - printmes("Copyright (C) 2006-2008 Calculate Pack\n"); + printmes("Copyright (C) 2006-2009 Mir Calculate Ltd.\n"); printmes(gettext('This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.')); printmes ("\n"); - printmes(gettext('Written by')); printmes(" Alexander Tratsevsky\n"); - return ""; }elsif(defined $data{arg}{chroot}){ #выполним сложные команды из chroot-окружения @@ -741,7 +746,9 @@ sub checkerrors{ $data{mount} = "/mnt/builder"; } } - if(!$data{createiso}){ + if(defined $data{arg}{'unmask'}){ + $data{'chroot'} = ''; + }elsif(!$data{createiso}){ $data{'chroot'} = $data{mount}; }else{ $data{'chroot'} = "$data{tmpdir}/livecd"; @@ -866,13 +873,16 @@ sub welcome{ !defined $data{arg}{'userpasswd'} && !defined $data{arg}{'groupadd'} && !defined $data{arg}{'groupdel'} && - !defined $data{arg}{'groupmod'} + !defined $data{arg}{'groupmod'} && # !defined $data{arg}{'mailuseradd'} && # !defined $data{arg}{'mailuserdel'} && # !defined $data{arg}{'mailuserpasswd'} # && # !defined $data{arg}{'mailgroupadd'} && # !defined $data{arg}{'mailgroupdel'} + + !defined $data{arg}{'initrd'} && + !defined $data{arg}{'unmask'} ){ printmes(gettext('Installation')); printmes(" $data{calculatename} $data{'calculatesubname'}\n"); @@ -1929,7 +1939,9 @@ sub checksystem{ # Определим диск для установки # $data{rootinstall} #---------------------------------------------------------------------- - if(!$data{arg}{'profile'} && !$data{builder_chroot} && !defined $data{arg}{'update'} && !defined $data{arg}{'list'} && !defined $data{addition} && !$data{createiso}){ + if( + !$data{arg}{'profile'} && !$data{builder_chroot} && !defined $data{arg}{'update'} && !defined $data{arg}{'list'} && !defined $data{addition} && !$data{createiso} && !defined $data{arg}{'initrd'} && !defined $data{arg}{'unmask'} + ){ #выберем альтернативный диск для установки if(!$data{rootinstall} && getini("install.from")){ $data{rootinstall} = "/dev/".getini("install.from"); @@ -1963,7 +1975,6 @@ sub checksystem{ savelog(); exit; } - }elsif($data{builder_chroot}){ #определим подмонтированный раздел в который производится установка foreach(`$data{path} mount | grep "$data{mount} "`){ @@ -2197,7 +2208,6 @@ sub checksystem{ } } - #---------------------------------------------------------------------- # Считаем меню граба grub.conf для переноса настроек # $data{grub_another} @@ -2332,7 +2342,7 @@ sub checksystem{ #---------------------------------------------------------------------- $data{useproxy} = 'off'; $data{proxy_port} = ''; $data{http_proxy} = ''; $data{nfs} = ''; $data{ntp} = ''; - if(!$data{builder} && $data{netstat} eq 'on' && !defined $data{arg}{'initrd'} && !defined $data{arg}{'video'} && $data{lan} eq 'on' && $data{domain} ne 'local'){ + if(!$data{builder} && $data{netstat} eq 'on' && !defined $data{arg}{'initrd'} && !defined $data{arg}{'unmask'} && !defined $data{arg}{'video'} && $data{lan} eq 'on' && $data{domain} ne 'local'){ printmes(gettext('Network services')."\n"); #определим прокси-сервер if( @@ -2412,7 +2422,7 @@ sub checksystem{ if(!$data{builder} && ($data{system} eq 'desktop') && - $data{netstat} eq 'on' && !defined $data{arg}{'initrd'} && !defined $data{arg}{'video'} && $data{lan} eq 'on' && $data{server_url} + $data{netstat} eq 'on' && !defined $data{arg}{'initrd'} && !defined $data{arg}{'unmask'} && !defined $data{arg}{'video'} && $data{lan} eq 'on' && $data{server_url} ){ if( ( @@ -2680,9 +2690,11 @@ sub checksystem{ $data{emergerun2} = "\""; }else{ $data{emergerun1} = "$data{emergerun1} /usr/bin/emerge"; - } } - } - + } + }elsif(defined $data{arg}{'unmask'}){ + $data{emergerun1} = "/usr/bin/emerge"; + } } + #---------------------------------------------------------------------- # Определим переменные настройки make.conf # $data{use}, $data{uselist} @@ -4184,6 +4196,11 @@ sub list{ # #------------------------------------------------------------------------------ sub packages{ + #отработаем случай размаскировки в текущей системе --unmask + if(defined $data{arg}{'unmask'}){ + return split ' ', $data{arg}{'unmask'}; + } + #определим директории для нашей конфигурации файлов со списком пакетов my @dir; @@ -4285,8 +4302,11 @@ sub dependence{ if(!$hide){ my @packages = packages(); - system "$data{emergerun1} -pqvtuD @packages $data{emergerun2}"; - } + if(!defined $data{arg}{'unmask'}){ + system "$data{emergerun1} -pqvtuD @packages $data{emergerun2}"; + }else{ + system "$data{emergerun1} -p @packages $data{emergerun2}"; + } } if($pack){ return 1; @@ -4359,7 +4379,7 @@ sub emerge_pretend{ my $err; @packages = (@{$data{movie_pretend}}, @packages); #объединим со списком зависимых пакетов (дублируя расположим их сверху) - my $softly; if(!defined $data{addition}){$softly = "--softly";} + my $softly; if(!defined $data{addition} && !defined $data{arg}{'unmask'}){$softly = "--softly";} #вторая проверка на случай сборки на базе CLS foreach( `$data{emergerun1} -p --color n @packages $data{emergerun2} $softly 2>&1`, @@ -6895,3 +6915,10 @@ sub clearlog{ } printmes(" ".gettext('done')); printmes(".\n"); } + +#------------------------------------------------------------------------------ +# Авторазмаскировка пакетов +#------------------------------------------------------------------------------ +sub autounmask{ + dependence(); +} diff --git a/install/cl-unmask b/install/cl-unmask new file mode 100644 index 0000000..657c4c7 --- /dev/null +++ b/install/cl-unmask @@ -0,0 +1,27 @@ +#!/bin/bash +#------------------------------------------------------------------------------ +# cl-unmask +# Copyright ©2009 Mir Calculate Ltd. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +#------------------------------------------------------------------------------ + +if [ "$#" -eq "0" ] +then + echo "Unmask packages" + echo "Usage: cl-unmask package1 [package2 package3 ...]" + exit +fi + +/usr/calculate/install/calculate --unmask="$*"