Minimal DAQmx 8.7 RT package?

[Windows XP - Labview 8.21 - DAQmx 8.7 - MAX 4.4.1] 
Hello,
I am trying to define the minimal installer package to install DAQmx RT on several clients stations. The things that the clients' stations must be able to do are:
Running an Labview 8.2 compiled program that has: DAQmx functions
Adding and editing channels and tasks in MAX
Using Labview 'additional installers' in project explorer I have first installed all varieties of 'Runtime 2' type of DAQmx 8.7 (beside MAX 4.4.1) and had always the same issue: I could go into MAX but was not able to add a task or a channel (create new by right-clicking in Data neighbourhood lead to an empty window). I have tried to add Visa, DAQ legacy,... to the Runtime 2, no success. I have even tried to install the MAX alone (from the folder coming from the original DAQmx 8.7 CD) but that did not improve.
Then I have selected the option 'Runtime' instead of 'Runtime 2' for DAQmx 8.7 and MAX works now as expected, I am able to edit and create new tasks and channels. But this does not answer my question which is: how do I build my minimal installer to perform the two tasks of executing a Labview 8.2 application with DAQmx functions in it and having a complete MAX interface.
What is the problem with MAX that impedes me to edit/add? What component am I am missing? 
Thanks for all your insights,
Christophe

Hi Christophe
In the DAQmx FAQ, you can find a description of what components are included in the different DAQmx runtime versions. As you will see in the list, the DAQ assistant is included in Runtime, but not DAQmx Runtime 2. In general, the DAQ assistant is a lot more than just the express VI in Labview. It provides you with a whole set of interactive features to configure your DAQ device, which also allows you to create channels from MAX:
The DAQ Assistant provides the following features:
DAQ Assistant Express Block in all supported versions of
LabVIEW.
DAQ Assistant in Measurement Studio and CVI.
DAQ Assistant Step in SignalExpress.
Ability to create NI-DAQmx tasks, global channels, and scales in
MAX.
Ability to create NI-DAQmx tasks, global channels, and scales in
the LabVIEW Project.
Ability to generate code in various ADEs from an NI-DAQmx task
or global channel.
So what you are seeing is normal behaviour. To be able to create tasks interactively in MAX, you will need the DAQ assistant, which is not included in Runtime 2.
Best Regards
Michiel
Applications Engineer
NI Belgium
http://www.ni.com/ask

Similar Messages

  • Is the Swing Package in Java obsolete?

    hey guys,
    i'm just a newbie java enthusiast here and all the while i've been learning to manipulate data in minimal ways using the Swing package especially the JOptionPane class.
    is this class/package already obsolete? a person here in school told me so? well?

    Your friend probably confused it with AWT, -which was used for doing gui stuff back in the dark ages before Swing came along.
    Nowdays people use Swing instead of AWT for doing gui stuff in Java, so awt could in some ways be considered obsolete (except of course that Swing uses quite a bit of awt stuff behind the scenes!)
    If you dont use Swing what will you use for gui?

  • Execute Package Utility Requires Integration Services

    Hi,
    I am trying to run an SSIS package from a client SQL Server Management Studio 2008 and am getting the message "The Execute Package Utility requires Integration Services to be installed by one of these editions of SQL Server 2008..."
    I installed SP1 and CU6 on the PC and am still getting the message.  Any ideas?  Any help is appreciated.
    Thanks

    Hello,
    I was getting same error message and This post helped me.
    I got more info from below:
    http://www.rad.pasfu.com/index.php?/archives/41-Minimum-Requirement-To-Execute-SSIS-Package.html
    Minimum Requirement To Execute SSIS Package
    A very common question is that : 
    what is minimal requirements for run a package? 
    Minimal Requirements to run SSIS package is :
    DTEXEC which can be installed
    with Integration Service at the SQL Server setup media. Note that you should Install Integration Services, because if you install DTEXEC without Integration Service then you will got this message when you try to execute a package from DTEXEC command line:
    The SQL Server Execute Package Utility requires Integration Services to be installed by one of these editions of SQL Server 2008: Standard, Enterprise, Developer, or Evaluation. To Install Integration Services,
    run SQL Server Setup and select Integration Services. 
     This is same operation on a machine who has Integration Service Installed:
    Another option to execute SSIS package is with BIDS, you can select it during SQL Server setup steps.
    So as a result you need to have one of these options to run a package on a machine: SSIS or BIDS.
    Thanks Shiven:) If Answer is Helpful, Please Vote

  • No video from OSMF with any version of AIR from 14 through 17 - where is bugbase nowadays?

    Hi,
    I am investigating an issue with Samsung S5 and our established video player that has been running live for a couple of years now.
    When run on Samsung S5 (not sure what others, but this is the one we discovered it on), video playback fails entirely, 100%, without any explanation or error.
    EG: If I create the minimal video playback app as per the below (based on OSMF2), the video utterly fails to display in any way shape manner or form.
    Two things on this;
    1. I tried logging a bug, but the bugbase has moved _again_ so where can I go to log the bug?
    2. Does anybody have any ideas as to the potential cause and (better) any potential resolution?
    Thanks,
    G
    REPLICATE USING THE MINIMAL ACTIONSCRIPT MOBILE APPLICATION BELOW:
    package
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import org.osmf.events.MediaPlayerCapabilityChangeEvent;
    import org.osmf.media.MediaElement;
    import org.osmf.media.MediaFactory;
    import org.osmf.media.MediaPlayerSprite;
    import org.osmf.media.URLResource;
    public class MinimalVideo extends Sprite
    public const URL_TO_MEDIA_PACKAGED_IN_PROJECT_TO_ELIMINATE_CONCERNS_OF_WRONG_URL:String = "audia5.mp4";
    private var player:MediaPlayerSprite;
    public function MinimalVideo()
    super();
    // support autoOrients
    stage.align = StageAlign.TOP_LEFT;
    stage.scaleMode = StageScaleMode.NO_SCALE;
    var ve:MediaPlayerSprite = new MediaPlayerSprite();
    this.addChild(ve);
    player = ve;
    player.mediaPlayer.addEventListener(MediaPlayerCapabilityChangeEvent.CAN_PLAY_CHANGE,toggl ePlay);
    trace("Start play");
    var mf:MediaFactory = player.mediaFactory;
    var ur:URLResource = new URLResource("URL_TO_MEDIA_PACKAGED_IN_PROJECT_TO_ELIMINATE_CONCERNS_OF_WRONG_URL");
    var me:MediaElement = mf.createMediaElement(ur);
    player.media = me;
    protected function togglePlay(event:MediaPlayerCapabilityChangeEvent):void {
    trace("Can play change.");
    if(player.mediaPlayer.canPlay) player.mediaPlayer.play();

    PS: For the avoidance of doubt;
    var ur:URLResource = new URLResource("URL_TO_MEDIA_PACKAGED_IN_PROJECT_TO_ELIMINATE_CONCERNS_OF_WRONG_URL");
    Should be:
    var ur:URLResource = new URLResource(URL_TO_MEDIA_PACKAGED_IN_PROJECT_TO_ELIMINATE_CONCERNS_OF_WRONG_URL);
    But it still doesn't work!

  • Deploy AcroReader v9.1.1 with Customization Wizard 9

    Hello:
    I'm trying to determine if I can deploy the latest security update [v91.1.] to my [v9.1] clients using the customization wizard or how to minimally create a [silent] installer package that I can push using a script.
    It seems like I was able to do this with the last security update [v9.1.0], but the package I downloaded from the Adobe web site this morning [adberdrupd911_all_incr.msp] is not in the [msi] format the wizard needs.
    Also, there didn't seem to be any [installation] documentation with the package or on the web site [that I could find].
    Any recommendations on how to use the customization wizard for deployment or how to correctly expand the [base] installer package to get to a setup.exe file would be greatly appreciated.
    Thanks,
    Bob

    I am deploying Reader 9.1 to 4000 PCs and there is a security patch and one of my tech send me this email:
    --Adobe Will Patch Zero-Day Flaw Next Week (May 4, 2009) Adobe plans to push out a patch next week to address a zero-day flaw in Acrobat and Reader that could be exploited to create denial of service conditions or execute arbitrary code.  Adobe will issue fixes for Reader and Acrobat versions 7, 8 and 9 for Windows and for versions 8 and 9 for Mac and Unix.  Adobe has also acknowledged a second flaw in Reader for Unix that will be fixed in forthcoming Adobe Reader for Unix updates.
    Until the fixes are available, Adobe recommends disabling JavaScript in both Reader and Acrobat.
    But I can't find the patch, appears that deploying 9.1 will take care this but reading your forum seems that there is another version 9.1.1...
    There is a patch?????
    Thanks guys!!
    Adrian

  • How to modify DTS packages with minimal changes?

    Hello All,
    Our client have around 500 DTS packages. Each package loads the data in a file into SQL Server 2000 database. Due to some changes in thier transaction systems, now we will receive more than one file (as of now 2 files) with same structure (and different
    file name) that needs to be loaded into same table in SQL Server 2000. In the destination we are expected to add a new column which identifies from which file the particular record was loaded. Currently, the DTS packages have a configurator task which is configured
    with file name (using INI file).
    We are expecting to do this with minimal change in DTS packages so that the existing functionality is not affected.
    Please suggest me with some inputs to achieve this?
    Thanks in advance.
    Ganesh S

    AFAIK, only manual changes available in DTS for its packages being binary objects.
    Arthur My Blog

  • ER: Minimal ojdeploy package for build servers

    Hi,
    I'd love to see a minimal installation package that would install only what's required to run ojdeploy on a headless build server. Many development teams (if they're well organised :D) have a continuous integration server, which is often a headless Linux environment. I don't like the fact that to run a build requires a huge JDeveloper installation on your build environment - I think a smaller, ojdeploy-only type installation would be a great addition.
    With the help of John Stegeman (and the JDevLibsForAnt plugin) I've gone the Ant route, but I think there are a number of complicating factors in the way JDeveloper manages project dependencies that cause real headaches for those attempting to create their own build scripts with Ant. Ultimately, I think using a standard tool to build and manage JDeveloper projects (Ant, Ivy, Maven, etc) needs to be made a lot easier. However if Oracle is going to prescribe ojdeploy as the only real option right now, I think it should be possible to use that tool without installing the entire, vast IDE.
    Do those close to the ADF team have any thoughts on this?
    Cheers!

    Japher,
    Having just completed the drafts of some OTN articles on things like ANT and Build servers, I have to say that I partially agree with you, but not completely. My goal was also to be able to have a build server that didn't require anything to be installed from the IDE. When the articles are published (should be soon), you'll see that it was quite a large amount of work to set up and manage. Maven could help here somewhat, but that support is in its infancy as well.
    Given that configuring build servers is a relatively infrequent task, I'm now starting to shift my thinking. I ask myself, why not install JDeveloper on the build server? Even if I have to install 4 versions (note that there have been 4 releases so far of 11g), that's what, about an hour to install them and maybe 6-7GB of disk space? The benefits I get - not having to manage all those JDeveloper libraries, not having to figure out what goes in each WAR/EAR file, etc, etc. If I try to manage this myself, I would have to somehow manage all the different versions of the ADF libraries by either putting them in source control (and wow is it fun trying to upgrade JDeveloper if you take that approach ;) ) or do the same level of management in Maven, which is a bit easier, but Maven support in JDeveloper is just now emerging, and not quite ready for prime time without some additional work, as has been discussed here on this forum before.
    Believe me, I fully understand your point of view, as I came from that same perspective myself. I am now moving my thinking along and thinking that ojdeploy is a really good way of doing things. Yes, if we can get a stripped down install without all of the other bits we don't need (i.e. a WLS server, GUI, etc) so much the better, so I think I agree with your original ER, namely, can we have a stripped-down JDeveloper install with just the bits needed to run ojdeploy on build servers - it's a nice-to-have thing, although it's not all that onerous in my opinion to have to install the full JDeveloper (by the way, on my laptop, I have every version of JDev from 10.1.3.2 to 11.1.1.2 installed, together with a few odd installs of the OA Framework as well).
    So, although I agree with your ER, I don't agree that ojdeploy is only viable for very simple situations. I noted some bugs where ojdeploy didn't work properly in the very first 11g release, but I havent had the opportunity to check whether it is fixed in the latest release (see [url http://forums.oracle.com/forums/thread.jspa?messageID=3878795]here)
    Best,
    John

  • OS Package Minimal Requirement

    Hi
    We will need to apply O/S hardening on our iPlanet Application Server 6.5. We would like to know the minimal O/S Package List that has to be installed.
    Clive Chan

    Just java with the same or higher version as used by you.
    Java is platform independent so as a Java runtime can be installed on your friends PC it should run your application.
    Unless of course your application is so heavy that your friends hardware is not sufficient.
    good luck

  • Complete DE with minimal packages

    I want to install a DE  with minimal packages how can i achive it
    I want a file manager , panel and GUI for laptop power management.
    very light media player and library manager and wifi manager
    I want to achive it with minimal packages and all with good GUI.
    Thanks

    fuscia wrote:...(or, if you want to be cool, like me, dwm)?...
    I second that DWM thing. Just install dwm/wmii (dwm i found was easier to configure cuz its just straight up C code for everything). You can install/use anything you want for programs. I used to use nautilus (from my gnome days). But i then switched to thunar/vim for my file managing. I use thunar when i wanna see thumbnails etc (which is not that often). thunar does not manage the desktop for me, and you dont need that with dwm anywyas, everything is a couple of keystrokes away...
    The bad: changing smthg requires you to re code and recompile, but i'm cool with that, i even put my dwm folder in git . Plus it takes a full 3 and 1/2 minutes to compile (makepkg -e) install and restart dwm (install via pacman of course). Also no eyecandy at all, like any other tiling manager and the fact that it's tiling, if you come from windows gnome kde etc, its a little bit of a thing you have to get used to ,but you want a light one right, and dwm is the lightest of em all.
    -Tj

  • Cannot package and deploy VB6.0/NI-DAQmx project (error429)

    Solved!
    Go to Solution.

    Hey vecsol,
    Also, please verify that when you create the deployment package, you're following the instructions in
    the Measurement Studio Help
    Start >> National Instruments >>
    Measurement Studio >> Help >> Measurement Studio
    Reference
    Then in the table of contents navigate to
    VB Reference
    Help >> Tutorials >> Distributing and Installing Measurement Studio
    Applications >> Distributing Programs Development with Measurement Studio
    for Visual Basic.
    This way we can be sure you're performing the correct steps.
    David Pratt
    AES - Test Side Products
    NIC

  • JCO minimal package for start development

    Hi, I'm starting a specification for interation between a Java System (my side) and a SAP on a customer and I like how get then jCO library, that I think useful to get a few information with RFC from SAP ?
    I don't have a OSS login to acess a SAP download area and on SAP Community I don't find a small package that has the java connector (jCO) !
    Any other idea about interation from others ways is accepted.
    Thanks for all,
    Evandro

    for apache2, try binami.org and downloand one of their LAMP style stacks based on platform.
    for coldfusion, download coldfusion8 for developers.

  • Minimizing Solaris packages and size when running Sunray

    Hello All,
    Does anybody have knowledge concerning the smallest Solaris install that will support Sunray Server software? The default install is way too large as I am testing different customer setups under vmware (this makes it easy when you are limited in the amount of HW you have to test with) and would like to conserve my disk space. It would also benefit the customer in the long run as they get a smaller (and possibly faster with less daemons) install when finally implemented directly.
    I would like to start with a disk install and the "END USER" config (if possible) and subtract packages from there. Then after testing move on to a jumpstart with package delete keywords. If someone has done this exercise before your insight would be appreciated.
    Regards,
    Tucker

    It turned out to be my switch. I tried setting the speed and media type manually, using ndd, spanning 100/full down to 20/half, nothing worked. The instant I connected the Solaris box directly to the upstream link the problem went away. I also seem to have problems with a Linksys VPN router attached to this switch. So I guess I need a new switch, perhaps a managed switch is more in order.

  • Creating a boot disk with minimal system

    I just upgraded to Tiger. I have an external FireWire drive that has two partitions. One (large) partition is for a backup of my Mac's entire hard drive. The other (much smaller partition) is a boot drive - that boots from Mac OS 9. It's time to update the OS on the boot drive (and put a copy of Retrospect on it - in case I ever need to recover from a disaster).
    My question is, how do I install a "minimal" system (10.4) on the smaller partition, and make it a bootable drive. The partition has 4.0GB of space. (I hope 4 gigs is enough.)
    I apologize if this question is already answered elsewhere on this site. I looked in the knowledge base and in several forums and couldn't find the answer.

    Hi Clinto
    Those 'minimal' installs date back to a time when you could run a Mac with just the System, the Finder and a couple of extensions. (Well I exaggerate but you know what I mean.)
    They would omit most extensions, inits and control panels (QuickTime, AppleScript, networking, printer drivers etc etc), the idea being that you could squeeze the bare bones of the OS onto a floppy and boot in an emergency.
    When you install OSX you are offered options not to install printer drivers or foreign language packages. And that's about as minimal as it gets. All the key technologies do get installed, along with the standard-issue applications like Safari, Mail, TextEdit... They're inextricably linked in a way that the elements of the different Classic OS's never were.
    The page referred to above says you need a minimum of 3GB of install space for Tiger.
    Hope this helps.
    H

  • Lenovo System Update 5.0.3 failes to download packages

    Hello, 
    SU shows an error dialog saying "An error occurred while downloading packages.".
    I reinstalled SU and Solution Center and updated BIOS. But it still does not work...
    I checked several posts in this community.
    System Update fails to download updates
    Lenovo System Update 5.03 on T430u doesn't report software updates
    And I knew that tvsu_log_xxx.txt has important information for debugging.
    It turned out that SU failed to download "HelloLevel_9_08_00.xml" for the following reason.
    "An error ocurred while setting the digital certificates for this download"
    What is this? Do the digital certificates mean SSL certificate?
    Anyone know how to solve this?
    Regards,
    Yusuke Yamasaki
    systeminfo
    OS Name: Microsoft Windows 7 Professional
    OS Version: 6.1.7601 Service Pack 1 Build 7601
    System Manufacturer: LENOVO
    System Model: 20ANCTO1WW
    System Type: x64-based PC
    Processor(s): 1 Processor(s) Installed.
    [01]: Intel64 Family 6 Model 60 Stepping 3 GenuineIntel ~2701 Mhz
    BIOS Version: LENOVO GLET65WW (2.19 ), 2014/01/14
    tvsu_log_140219182345.txt
    [Lenovo System Update build: 2013-10-31 5.03.0008] 2014/02/19 18:23:45
    Info 2014-02-19 , 06:23:45
    場所 Tvsu.Environment.EnvironmentManager..ctor()
    Message: Starting Environment Manager...
    Info 2014-02-19 , 06:23:45
    場所 Tvsu.Nls.NlsResources..ctor()
    Message: Starting the instance of NLS@Runtime
    Info 2014-02-19 , 06:23:46
    場所 Tvsu.Nls.NlsResources..ctor()
    Message:
    The active language is: JP
    The default language is: JP
    The OS language is: JP
    The language loaded type is: OS
    Severe 2014-02-19 , 06:23:46
    場所 Tvsu.Sdk.SuSdk.StartApplication()
    Message: Application runs with the framework: 4.0.30319.18444
    Info 2014-02-19 , 06:23:46
    場所 Tvsu.Engine.DataBase.InitializeDataBase()
    Message: Initializing the DataBase from file: updates.ser
    Info 2014-02-19 , 06:23:46
    場所 Tvsu.Sdk.SuSdk.StartApplication()
    Message: Starting the Application
    Info 2014-02-19 , 06:23:46
    場所 Tvsukernel.Logic.GUIController.StartGUI(Boolean showsplash)
    Message: Starting GUI...
    Info 2014-02-19 , 06:23:46
    場所 Tvsukernel.Logic.GUIController.StartGUI(Boolean showsplash)
    Message: MainFrame created successfully
    Info 2014-02-19 , 06:23:46
    場所 Tvsukernel.Logic.GUIController.StartGUI(Boolean showsplash)
    Message: GUI -- Welcome screen
    Info 2014-02-19 , 06:23:46
    場所 Tvsukernel.Logic.GUIController.BackToMain()
    Message: Setting Welcome screen...
    Info 2014-02-19 , 06:23:46
    場所 Tvsukernel.FlowScreens.MainFrame.SetScreen(String screen, RoutedEventHandler[] eh)
    Message: Loading Welcome screen on Action pane.
    Info 2014-02-19 , 06:23:50
    場所 Tvsukernel.Logic.GUIController.SearchUpdates(Object sender, EventArgs args)
    Message: Starting the Search process...
    Info 2014-02-19 , 06:23:50
    場所 Tvsukernel.FlowScreens.MainFrame.SetScreen(String screen, RoutedEventHandler[] eh)
    Message: Loading Search screen on Action pane.
    Info 2014-02-19 , 06:23:50
    場所 Tvsukernel.Logic.ProgressThread.InitSearch()
    Message: GUI -- Reporting progress for the Search
    Info 2014-02-19 , 06:23:50
    場所 Tvsu.Sdk.SuSdk.GetSystemProperties()
    Message: Get the System Properties
    Info 2014-02-19 , 06:23:50
    場所 Tvsu.Engine.Task.Task.StartExecution()
    Message: PreTask
    Info 2014-02-19 , 06:23:50
    場所 Tvsu.Engine.Task.Task.StartExecution()
    Message: Start
    Info 2014-02-19 , 06:23:50
    場所 Tvsu.Engine.Task.Task.Start()
    Message: Starting the task
    Info 2014-02-19 , 06:23:50
    場所 Tvsu.Engine.Task.Task.Start()
    Message: The current process is:HelloProcess
    Info 2014-02-19 , 06:23:50
    場所 Tvsu.Engine.Task.Task.Start()
    Message: Executing the PreProcess HelloProcess
    Info 2014-02-19 , 06:23:50
    場所 Tvsu.Engine.Task.Task.Start()
    Message: Executing the StartProcess HelloProcess
    Info 2014-02-19 , 06:23:50
    場所 Tvsu.Engine.Process.HelloProcess.DownloadHelpFile()
    Message: The chm help file is already present in the system
    Info 2014-02-19 , 06:23:50
    場所 Tvsu.Engine.Process.HelloProcess.Start()
    Message: The test.properties file was not found, the normal Hello process will continue.
    Info 2014-02-19 , 06:23:50
    場所 Tvsu.Engine.Process.HelloProcess.Start()
    Message: HelloProcess Started
    Info 2014-02-19 , 06:23:50
    場所 Tvsu.Engine.Process.HelloProcess.Start()
    Message: Client level: HelloLevel_9_08_00
    Info 2014-02-19 , 06:23:50
    場所 Tvsu.Engine.Process.HelloProcess.DownloadUDF(String helloClientLevel)
    Message: The UDF will be downloaded from: https://download.lenovo.com/ibmdl/pub/pc/pccbbs/agent/SSClientCommon/HelloLevel_9_08_00.xml
    Info 2014-02-19 , 06:23:50
    場所 Tvsu.Engine.Process.HelloProcess.DownloadUDF(String helloClientLevel)
    Message: The UDF will be downloaded to-> C:\ProgramData\Lenovo\SystemUpdate\session\system\SSClientCommon\HelloLevel_9_08_00.xml
    Info 2014-02-19 , 06:23:50
    場所 Tvsukernel.CustomControls.Step.<>c__DisplayClass7.<set_Image>b__6()
    Message: Setting PROCESSING status.
    Info 2014-02-19 , 06:23:50
    場所 Tvsu.ConnectionSettings.ConnectionSettings.GetConnectionForURL(String url)
    Message: Creating a new Connection Settings Bean instance to Host: download.lenovo.com
    Info 2014-02-19 , 06:23:50
    場所 Tvt.ConnectionSettings.ConnectionSettings.GetConnectionForURL(String url)
    Message: Direct connection found
    Info 2014-02-19 , 06:23:50
    場所 Tvsu.FileDownloader.HttpsDownload.SetCertificates()
    Message: Setting certificates...
    Info 2014-02-19 , 06:23:50
    場所 Tvsu.FileDownloader.HttpsDownload.SetCertificates()
    Message: An error ocurred while setting the digital certificates for this download
    Exception:
    Message: 'System.Net.ServicePointManager' のタイプ初期化子が例外をスローしました。
    Type: System.TypeInitializationException
    場所 System.Net.ServicePointManager.set_CertificatePolicy(ICertificatePolicy value)
    場所 Tvsu.FileDownloader.HttpsDownload.SetCertificates()
    Info 2014-02-19 , 06:23:50
    場所 Tvsu.FileDownloader.HttpsDownload.StartDownload(FileDownloadInfo fileInfo, downloadingDelegate downDelegate)
    Message: An exception ocurred while downloading https://download.lenovo.com/ibmdl/pub/pc/pccbbs/agent/SSClientCommon/HelloLevel_9_08_00.xml
    Status set to FAILED
    Exception:
    Message: 構成システムを初期化できませんでした。
    Type: System.Configuration.ConfigurationErrorsException
    場所 Tvsu.FileDownloader.HttpsDownload.doDownloadByHttps(FileDownloadInfo fileInfo, downloadingDelegate downDelegate)
    場所 Tvsu.FileDownloader.HttpsDownload.StartDownload(FileDownloadInfo fileInfo, downloadingDelegate downDelegate)
    Info 2014-02-19 , 06:23:50
    場所 Tvsu.FileDownloader.GeneralDownloader.Download(FileToDownloadBean bean, downloadingDelegate downDelegate)
    Message: Some error occurred in download module :
    Exception:
    Message: 構成システムを初期化できませんでした。
    Type: System.Configuration.ConfigurationErrorsException
    場所 Tvsu.FileDownloader.HttpsDownload.StartDownload(FileDownloadInfo fileInfo, downloadingDelegate downDelegate)
    場所 Tvsu.FileDownloader.GeneralDownloader.Download(FileToDownloadBean bean, downloadingDelegate downDelegate)
    Info 2014-02-19 , 06:23:50
    場所 Tvsu.Engine.Process.HelloProcess.Start()
    Message: UDF download status is -> Failed
    Severe 2014-02-19 , 06:23:50
    場所 Tvsu.Engine.Process.HelloProcess.Start()
    Message: Could't connect to the HelloServer, no UDF file was downloaded
    Info 2014-02-19 , 06:23:50
    場所 Tvsu.Egather.EgatherManager.GetEgatherParser(String type)
    Message: Running egather minimal.....
    Info 2014-02-19 , 06:23:50
    場所 Tvsu.Egather.EgatherExecutor.RunAsWindowsService(String directory, String command, String arguments)
    Message: /execute ia.exe /arguments -filename"""C:\Program Files (x86)\Lenovo\System Update\egather\sysrecomin""" -probes REGIONAL_SETTINGS GATHERER_INFORMATION SYSTEM_SUMMARY -local /directory C:\Program Files (x86)\Lenovo\System Update\egather\ /type COMMAND /timeout 300000
    Info 2014-02-19 , 06:23:50
    場所 Tvsu.Egather.EgatherExecutor.RunAsWindowsService(String directory, String command, String arguments)
    Message: FileName Path: C:\Program Files (x86)\Lenovo\System Update\TvsuCommandLauncher.exe
    Info 2014-02-19 , 06:23:51
    場所 Tvsu.Egather.EgatherExecutor.ExecuteEgather(String fileOutput, String args)
    Message: RC eGatherer: 0
    Info 2014-02-19 , 06:23:51
    場所 Tvsu.Engine.Process.HelloProcess.Start()
    Message: MTM received from eGather: 20ANCTO1WW
    Info 2014-02-19 , 06:23:51
    場所 Tvsu.Engine.Process.HelloProcess.Start()
    Message: Data to be set in the Environment Manager to use with Quest:
    QOS (Quest OS): Windows 7
    QOSLang (Quest language): JP
    MTM: 20ANCTO1WW
    Info 2014-02-19 , 06:23:51
    場所 Tvsu.Engine.Task.Task.Start()
    Message: Executing the PostProcess HelloProcess
    Info 2014-02-19 , 06:23:51
    場所 Tvsu.Engine.Task.Task.Start()
    Message: The process HelloProcesshas been finished.
    Info 2014-02-19 , 06:23:51
    場所 Tvsu.Engine.Task.Task.StartExecution()
    Message: PostTask
    Info 2014-02-19 , 06:23:51
    場所 Tvsu.Sdk.SuSdk.GetSystemProperties()
    Message: Return the System Properties
    Info 2014-02-19 , 06:23:51
    場所 Tvsu.Sdk.SuSdk.GetApplicableUpdates(searchingFolderDelegate spd, showErrMsgDelegate sed)
    Message: Get Applicable Updates
    Info 2014-02-19 , 06:23:51
    場所 Tvsu.Engine.Task.Task.StartExecution()
    Message: PreTask
    Info 2014-02-19 , 06:23:51
    場所 Tvsu.Engine.Task.Task.StartExecution()
    Message: Start
    Info 2014-02-19 , 06:23:51
    場所 Tvsu.Engine.Task.Task.Start()
    Message: Starting the task
    Info 2014-02-19 , 06:23:51
    場所 Tvsu.Engine.Task.Task.Start()
    Message: The current process is:HelpCenterQuestProcess
    Info 2014-02-19 , 06:23:51
    場所 Tvsu.Engine.Task.Task.Start()
    Message: Executing the PreProcess HelpCenterQuestProcess
    Info 2014-02-19 , 06:23:51
    場所 Tvsu.Engine.Task.Task.Start()
    Message: Executing the StartProcess HelpCenterQuestProcess
    Info 2014-02-19 , 06:23:51
    場所 Tvsu.Engine.Process.HelpCenterQuestProcess.LaunchEgather()
    Message: Launching Egather
    Info 2014-02-19 , 06:23:51
    場所 Tvsu.Egather.EgatherManager.GetEgatherParser(String type)
    Message: Running egather complete.....
    Info 2014-02-19 , 06:23:51
    場所 Tvsu.Engine.Process.HelpCenterQuestProcess.LaunchHelpCenterProcess()
    Message: Launching HelpCenter
    Info 2014-02-19 , 06:23:51
    場所 Tvsu.Egather.EgatherExecutor.RunAsWindowsService(String directory, String command, String arguments)
    Message: /execute ia.exe /arguments -filename"""C:\Program Files (x86)\Lenovo\System Update\egather\sysreco""" -silent -local -section SYSTEM_SUMMARY REGIONAL_SETTINGS SMBIOS_INFORMATION Firmware_Information Installed_Software SMBIOS_INFORMATION DEVICE_DRIVERS_AND_SERVICES IDE_DEVICE_INFORMATION DEVICE_MANAGER_SETTINGS -p device_manager enable_hardwareid /directory C:\Program Files (x86)\Lenovo\System Update\egather\ /type COMMAND /timeout 300000
    Info 2014-02-19 , 06:23:51
    場所 Tvsu.Egather.EgatherExecutor.RunAsWindowsService(String directory, String command, String arguments)
    Message: FileName Path: C:\Program Files (x86)\Lenovo\System Update\TvsuCommandLauncher.exe
    Severe 2014-02-19 , 06:23:51
    場所 Tvsu.Engine.Process.HelpCenterQuestProcess.LaunchHelpCenterProcess()
    Message: An error ocurred while contacting the help center
    Exception:
    Message: 構成システムを初期化できませんでした。
    Type: System.Configuration.ConfigurationErrorsException
    場所 System.Configuration.ConfigurationManager.PrepareConfigSystem()
    場所 System.Configuration.ConfigurationManager.GetSection(String sectionName)
    場所 System.Configuration.PrivilegedConfigurationManager.GetSection(String sectionName)
    場所 System.Net.Configuration.WebRequestModulesSectionInternal.GetSection()
    場所 System.Net.WebRequest.get_PrefixList()
    場所 System.Net.WebRequest.Create(Uri requestUri, Boolean useUriBase)
    場所 System.Net.WebRequest.Create(String requestUriString)
    場所 Tvsu.Engine.Process.HelpCenterQuestProcess.IfModifiedSince(String url, DateTime dtSince, DateTime& dtActual)
    場所 Tvsu.Engine.Process.HelpCenterQuestProcess.DownloadCatalogDescriptorFile()
    場所 Tvsu.Engine.Process.HelpCenterQuestProcess.LaunchHelpCenterProcess()
    Info 2014-02-19 , 06:23:51
    場所 Tvsukernel.CustomControls.Step.<>c__DisplayClass7.<set_Image>b__6()
    Message: Setting DONE status.
    Info 2014-02-19 , 06:23:51
    場所 Tvsukernel.CustomControls.Step.<>c__DisplayClass7.<set_Image>b__6()
    Message: Setting PROCESSING status.
    Info 2014-02-19 , 06:23:52
    場所 Tvsu.Engine.Task.Task.Start()
    Message: Executing the PostProcess HelpCenterQuestProcess
    Severe 2014-02-19 , 06:23:52
    場所 Tvsu.Engine.Task.Task.StartExecution()
    Message: An error occurred while the task: ApplicableUpdatesTask executed the process: HelpCenterQuestProcessthe message from exception is種類 'Tvt.FileDownloader.DownloadException' の例外がスローされました。
    Exception:
    Message: 種類 'Tvt.FileDownloader.DownloadException' の例外がスローされました。
    Type: Tvt.FileDownloader.DownloadException
    場所 Tvsu.Engine.Task.Task.Start()
    場所 Tvsu.Engine.Task.Task.StartExecution()
    Info 2014-02-19 , 06:23:52
    場所 Tvsukernel.CustomControls.Step.<>c__DisplayClass7.<set_Image>b__6()
    Message: Setting FAILED status.
    Info 2014-02-19 , 06:23:52
    場所 Tvsukernel.Logic.GUIController.ShowErrorMessage(Exception e)
    Message: Error while downloading packages.
    Exception:
    Message: 種類 'Tvt.FileDownloader.DownloadException' の例外がスローされました。
    Type: Tvt.FileDownloader.DownloadException
    場所 Tvsu.Engine.Task.Task.StartExecution()
    場所 Tvsu.Sdk.SuSdk.GetApplicableUpdates(searchingFolderDelegate spd, showErrMsgDelegate sed)
    場所 Tvsukernel.Logic.ProgressThread.InitSearch()
    Info 2014-02-19 , 06:23:52
    場所 Tvsukernel.Dialogs.Messages.ShowStaticMessage(String message, String title, MessageType t, Boolean check)
    Message: Showing ERROR Message: < パッケージのダウンロード中にエラーが発生しました。 >
    Info 2014-02-19 , 06:23:58
    場所 Tvsukernel.Logic.GUIController.BackToMain()
    Message: Setting Welcome screen...
    Info 2014-02-19 , 06:23:58
    場所 Tvsukernel.FlowScreens.MainFrame.SetScreen(String screen, RoutedEventHandler[] eh)
    Message: Loading Welcome screen on Action pane.
    Info 2014-02-19 , 06:23:58
    場所 Tvsu.Egather.EgatherExecutor.ExecuteEgather(String fileOutput, String args)
    Message: RC eGatherer: 0
    Info 2014-02-19 , 06:24:02
    場所 Tvsukernel.FlowScreens.MainFrame.cmContextHelpSUhelp_Click(Object sender, RoutedEventArgs e)
    Message: Context Help will be displayed.
    Info 2014-02-19 , 06:24:08
    場所 Tvsukernel.Logic.GUIController.AskBeforeClosing()
    Message: Close System Update?
    Info 2014-02-19 , 06:24:08
    場所 Tvsukernel.Dialogs.Messages.ShowStaticMessage(String message, String title, MessageType t, Boolean check)
    Message: Showing QUESTION Message: < 本当に System Update を終了しますか? >
    Info 2014-02-19 , 06:24:09
    場所 Tvsukernel.Logic.GUIController.AskBeforeClosing()
    Message: Application will close now? True
    Info 2014-02-19 , 06:24:09
    場所 Tvsukernel.FlowScreens.MainFrame.OnClosing(CancelEventArgs e)
    Message: User wanted to close System Update, or the package force a reboot.
    Severe 2014-02-19 , 06:24:09
    場所 Tvsu.Sdk.SuSdk.ShutDownApplication()
    Message: Has happened an exception while the UNCAuthenticator.Shutdown() was executedShare name can not be null or empty
    Info 2014-02-19 , 06:24:09
    場所 Tvsu.Engine.DataBase.ShutDownDataBase()
    Message: Shutting down the DataBase, saving any data into file: updates.ser
    Info 2014-02-19 , 06:24:09
    場所 Tvsu.Environment.EnvironmentManager.closeEM()
    Message: Closing Environment Manager.
    Info 2014-02-19 , 06:24:09
    場所 Tvsu.Sdk.SuSdk.ShutDownApplication()
    Message: Shut Down the Application
    Solved!
    Go to Solution.

    I'm having a similar problem with 5.0.5.  Whenever it gets to "Downloading Package Information", it will show "15% Lenovo Help Center" and it dies there.  Errors below in the log.  
    If I look at the XML file mentioned below, it's zero-length (empty).
    Severe 2014-04-01 , 05:43:14
    at Tvsu.Engine.Process.HelloProcess.Start()
    Message: Error reading C:\ProgramData\Lenovo\SystemUpdate\session\system\SSClientCommon\HelloLevel_9_09_00.xml, this XML file is not well-formed
    Exception:
    Message: Root element is missing.
    Type: System.Xml.XmlException
    at System.Xml.XmlTextReaderImpl.Throw(Exception e)
    at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
    at System.Xml.XmlTextReaderImpl.Read()
    at System.Xml.XPath.XPathDocument.LoadFromReader(XmlReader reader, XmlSpace space)
    at System.Xml.XPath.XPathDocument..ctor(TextReader textReader)
    at Tvsu.Engine.Process.HelloProcess.ParseUDF(String udfPath)
    at Tvsu.Engine.Process.HelloProcess.Start()
    Severe 2014-04-01 , 05:43:17
    at Tvsu.Engine.Process.HelpCenterQuestProcess.LaunchHelpCenterProcess()
    Message: An error ocurred while contacting the help center
    Exception:
    Message: Index and length must refer to a location within the string.
    Parameter name: length
    Type: System.ArgumentOutOfRangeException
    at System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy)
    at Tvsu.Engine.Process.HelpCenterQuestProcess.GetCatalogDescriptorFileName()
    at Tvsu.Engine.Process.HelpCenterQuestProcess.DownloadCatalogDescriptorFile()
    at Tvsu.Engine.Process.HelpCenterQuestProcess.LaunchHelpCenterProcess()
    Severe 2014-04-01 , 05:43:18
    at Tvsu.Engine.Task.Task.StartExecution()
    Message: An error occurred while the task: ApplicableUpdatesTask executed the process: HelpCenterQuestProcessthe message from exception isException of type 'Tvt.FileDownloader.DownloadException' was thrown.
    Exception:
    Message: Exception of type 'Tvt.FileDownloader.DownloadException' was thrown.
    Type: Tvt.FileDownloader.DownloadException
    at Tvsu.Engine.Task.Task.Start()
    at Tvsu.Engine.Task.Task.StartExecution()
    Info 2014-04-01 , 05:43:18
    at Tvsukernel.Logic.GUIController.ShowErrorMessage(Exception e)
    Message: Error while downloading packages.
    Exception:
    Message: Exception of type 'Tvt.FileDownloader.DownloadException' was thrown.
    Type: Tvt.FileDownloader.DownloadException
    at Tvsu.Engine.Task.Task.StartExecution()
    at Tvsu.Sdk.SuSdk.GetApplicableUpdates(searchingFolderDelegate spd, showErrMsgDelegate sed)
    at Tvsukernel.Logic.ProgressThread.InitSearch()
    Info 2014-04-01 , 05:43:18
    at Tvsukernel.Dialogs.Messages.ShowStaticMessage(String message, String title, MessageType t, Boolean check)
    Message: Showing ERROR Message: < An error occurred while downloading packages. >

  • [new] webmin(-minimal)

    Heya all,
    since there were quite some requests for this. I made a PKGBUILD for webmin. I have to say ... this wasn't an easy one for me. I choose for webmin-minimal so that peopel can add the modules they want.
    However, when you look at the code, you'll see that it needs improvements ...
    What is done:
    it builds and installs. It creates a new user and group, both called webmin. these groups will be deleted when you uninstall the package (see comments if this is good or bad).
    ~Todo:
    * No SSL can be used ... this is pretty critical I think. There is an SSLeay package in testing I saw, but webmin couldn't find it.
    * I also get an error in the webmin-log that it can find  a/the perl PAM-module ...
    * The web-interface seems to function, but you can't request a proces-list: this is maybe a bug in the program?? Webmin requests "proc/index_.cgi", but that file doesn't exist. The file "proc/index.cgi" exists however.
    * I've written code the generate a random initial password. However, this code doesn't seem to function. For the moment there is a static password ... but I suppose you'll change it when you install webmin. Anyway, Ithink it would be better if the initial one would be a random password. This code belongs in the install-file to my opinion and not in the PKGVUILD like now, but this requires some effort to implement since there is some code for setting up the password in the setup-file.
    * A lot of comments in the code ...
    Now it's time to sleep ... .
    PKGBUILD:
    #Michel Branbants <[email protected]>
    pkgname=webmin
    pkgver=1.170
    pkgrel=1
    pkgdesc="Webmin is a web-based interface for system administration for Unix. Using any browser that supports tables and forms (and Java for the File Manager module), you can setup user accounts, Apache, DNS, file sharing and so on. Webmin consists of a simple web server, and a number of CGI programs which directly update system files like /etc/inetd.conf and /etc/passwd. The web server and all CGI programs are written in Perl version 5, and use no non-standard Perl modules."
    url="http://www.webmin.com"
    depends=('perl>=5.0' 'coreutils')
    backup=('etc/webmin/miniserv.conf')
    install=webmin.install
    source=(http://belnet.dl.sourceforge.net/sourceforge/webadmin/$pkgname-$pkgver-minimal.tar.gz
    setup.sh.patch
    copyconfig.pl.patch
    webmin.install)
    md5sums=('a2bc5d04524c52af8955c703179e8af4' '0332a42a04a9c522d483e8d2d61fcee1'
    '72f5472f6b8fedf02cf8222cf962053b' '521d14ee48a8203f3765cadc9fbd9379')
    build() {
    cd $startdir/src/$pkgname-$pkgver
    patch ./setup.sh $startdir/setup.sh.patch
    patch ./copyconfig.pl $startdir/copyconfig.pl.patch
    declare -r local installDir="/usr/share/webmin"
    #configdir must be an absolute path
    declare -r local configDir="/etc/webmin"
    #this is the var_dir-variable
    declare -r local logAndPidDir="/var/webmin"
    #I added 2 new dirs to the setup-script, but I'm not completely sure if I just may add them. And what's var_dir's purpose now?So, for the log and run-files these directories should be used
    declare -r local logDir="/var/log/webmin"
    declare -r local pidDir="/var/run/webmin"
    declare -r local os_type="generic-linux"
    declare -r local os_version="2.6"
    declare -r local real_os_type="Generic Linux"
    declare -r local real_os_version="2.6"
    declare -r local webminServerport="10000"
    #username maybe not contain a ':' or a ' '(a space :)) and may not be "webmin"
    declare -r local adminLoginname="admin"
    #password may not contain a ':'.
    #dit moet eigenlijk in de install-file
    echo "generating initial administrator password ..."
    declare -r local adminpass=$(genPassword 8)
    echo "#The first and last quote of the loginpass-value are only to delimit the password and aren't part of the password!
    initial webmin administrator-account:
    loginname:$adminLoginname
    loginpass:"$adminpass"" > $startdir/SHRED or REMOVE ME-webminAdminAccount
    echo "info written to "SHRED or REMOVE ME-webminAdminAccount""
    #no SSL need SSLeay installed somewhere perl can find it!
    #post-setup-script: (line 735) setup-post.sh
    ./setup.sh "$installDir" "$startdir/pkg" "$configDir" "$logAndPidDir" "$webminServerport" "$adminLoginname" "$adminpass" "$os_type" "$os_version" "$real_os_type" "$real_os_version" "$logDir" "$pidDir"
    echo "administrator-account-info written to "$startdir/SHRED or REMOVE ME-webminAdminAccount""
    #$1 = length of Password. Must be AT LEAST 8 CHARACTERS. Some people will say this is not necessary maybe or not enough. Anyway this password is the initial password.
    genPassword() {
    declare -r local passLength=$1
    if [[ 8 -gt $passLength ]]; then
    #writing to stderr
    echo "password length needs to be at least 8 characters" 1>&2
    return 1
    fi
    declare local pass=$(genRandomString $passLength)
    #the password may not contain ':'.
    #Replace all occurences of ':' with another character. Mayeb first check if there is a problem ...
    #could be endless loop .. but I would suppose it is a random generator ... I try maximum 3 times
    #to avoid an endless loop, else the character 'A' will be chosen to replace ':'
    declare local replacement=':';
    declare -i local iter=1;
    while [[ ':' == $replacement ]] && [[ $iter -le 3 ]]; do
    replacement=`head -c 1 /dev/random`
    iter=$iter+1
    done
    if [[ ':' == $replacement ]]; then
    replacement='A'
    fi
    pass=${pass//:/$replacement}
    echo "$pass"
    return 0
    #$1 = length of string.
    genRandomString() {
    declare -ri local stringLength=$1;
    #/dev/random instead od /dev/urandom will be used for more chance on a good random values.
    #/dev/random can however block if not enough input is available
    declare local string
    read -n $stringLength string < /dev/random
    #echo "$string"
    echo "QueCeraCera"
    webmin.install:
    #Contributor: Michel Brabants <[email protected]>
    # This is a default template for a post-install scriptlet. You can
    # remove any functions you don't need (and this header).
    # arg 1: the new package version
    pre_install() {
    /bin/true
    # arg 1: the new package version
    post_install() {
    declare -r local USER="webmin"
    declare -r local GROUP="webmin"
    #searching for free gid in range of 1-100 : error should be captured : todo
    declare -ri freeGid=$(getFreeGid);
    echo -n "Creating group $GROUP : ";
    if [[ 0 -eq `/usr/sbin/groupadd -g $freeGid $GROUP` ]]; then
    echo " OK";
    else
    echo " FAILED";
    fi
    #searching for free uid in range of 1-1000 : error should be captured : todo
    declare -ri freeUid=$(getFreeUid);
    echo -n "Creating user $USER with primary group $GROUP";
    if [[ 0 -eq `/usr/sbin/useradd -c "user for webmin" -g "$GROUP" -G "$AUDIO_GROUP" -s "/bin/false" -u $freeUid $USER` ]]; then
    echo " OK";
    else
    echo " FAILED;"
    fi
    update_permissions $USER $GROUP;
    # arg 1: the new package version
    # arg 2: the old package version
    pre_upgrade() {
    /bin/true
    # arg 1: the new package version
    # arg 2: the old package version
    post_upgrade() {
    #we don't add the user again ... or should we check if it still exists?
    declare -r local USER="webmin"
    declare -r local GROUP="webmin"
    update_permissions $USER $GROUP;
    # arg 1: the old package version
    pre_remove() {
    /bin/true
    # arg 1: the old package version
    post_remove() {
    rm -rf /var/log/webmin
    rm -rf /var/run/webmin
    declare -r local USER="webmin"
    declare -r local GROUP="webmin"
    #delete the webmin user. Mayeb to tricky? Somebody may be using it already
    #userdel seems to delete the user and the group
    echo -n "Deleting user $USER and group $GROUP: ";
    if [[ 0 -eq `/usr/sbin/userdel $USER` ]]
    then
    echo " OK";
    else
    echo " FAILED";
    fi
    #echo -n "Deleting group $GROUP : ";
    #if [[ 6 -eq `/usr/sbin/groupdel $GROUP` ]]
    #then
    # echo " OK";
    # else
    # echo " FAILED";
    #fi
    # arg 1: username
    # arg 2: groupname
    #would be better if we used the file-list that is in the package?
    update_permissions() {
    declare -r local USER=$1;
    declare -r local GROUP=$2;
    echo "Setting owner:group of webmin-files to $USER:$GROUP and setting permissions ...";
    #change file- and directory-permissions
    chown -R $USER:$GROUP /etc/webmin
    chmod -R o= /etc/webmin
    chown -R $USER:$GROUP /usr/share/webmin
    chmod -R o= /usr/share/webmin
    chown -R $USER:$GROUP /var/log/webmin
    chmod u+s,g+s,o=,o+t /var/log/webmin
    chown -R $USER:$GROUP /var/run/webmin
    chmod u+s,g+s,o=,o+t /var/run/webmin
    echo "Setting owner:group and permissions : DONE"
    #the almighty bash :). You can use functions together with pipes :).
    getFreeUid() {
    echo "$(uidRangeFilter 1 1000 | sort -g | getFreeId 1 1000)";
    getFreeGid() {
    echo "$(gidRangeFilter 1 100 | sort -g | getFreeId 1 100)"
    #give all existing uid's back within the range of $1-$2
    uidRangeFilter() {
    #going into restricted mode
    set -r;
    declare -ri local minId=$1;
    declare -ri local maxId=$2;
    if [[ $maxId -lt $minId ]]; then
    echo "maximum rangebound is smaller than minimum rangebound.";
    echo "command: ./uidRangeFilter minimumBound maximumBound"
    exit 1;
    fi
    #should mayeb check on overflow. Surely since this is a critical file
    #IFS = internal field separator/delimiter
    IFS=:;
    while read name passwd uid theRest; do
    if [[ $uid -ge $minId ]] && [[ $uid -le $maxId ]]; then
    echo "$uid";
    fi;
    done < /etc/passwd;
    #give all existing gid's back within the range of $1-$2
    gidRangeFilter() {
    #going into restricted mode
    set -r;
    declare -ri local minId=$1;
    declare -ri local maxId=$2;
    if [[ $maxId -lt $minId ]]; then
    echo "maximum rangebound is smaller than minimum rangebound.";
    echo "command: ./gidRangeFilter minimumBound maximumBound"
    exit 1;
    fi
    #should mayeb check on overflow. Surely since this is a critical file
    #IFS = internal field separator/delimiter
    IFS=:;
    while read name passwd gid theRest; do
    if [[ $gid -ge $minId ]] && [[ $gid -le $maxId ]]; then
    echo "$gid";
    fi;
    done < /etc/group;
    #find a freeId that is in the range of $1-$2 given that the input-stream contains already occupied id's, sorted from small to big.
    getFreeId() {
    #enter restricted mode
    set -r;
    declare -ri local minId=$1;
    declare -ri local maxId=$2;
    if [[ $maxId -lt $minId ]]; then
    echo "maximum id is smaller than minimum id.";
    echo "command: ./freeId minimumId maximumId"
    exit 1;
    fi;
    declare -i local freeId=$minId;
    #uid's are within the requested range and sorted from small to big
    while read uid; do
    #userId is occupied
    if [[ $freeId -eq $uid ]]; then
    let freeId+=1;
    else
    echo "$freeId";
    return;
    fi;
    done
    if [[ $maxId -ge $freeId ]]; then
    echo "$freeId";
    return;
    fi;
    #no free userId found
    echo "";
    return;
    op=$1
    shift
    $op $*
    setup.sh.patch:
    --- setup.sh 2004-12-03 01:19:35.000000000 +0100
    +++ setup-new.sh 2004-12-03 01:53:42.000000000 +0100
    @@ -32,6 +32,22 @@
    PERLLIB="$PERLLIB:$perllib"
    fi
    +declare -r local DESTDIR=$2;
    +declare -r local config_dir=$3;
    +#what is the purpose for var_dir?
    +declare -r local var_dir=$4;
    +#what is the influence of placing the log- and pid-files in another directory than var_dir?
    +declare -r local os_type=$8;
    +#leaned something new: from $9 paramters need to be surrounded by brackets!!
    +declare -r local os_version=${9};
    +declare -r local real_os_type=${10};
    +declare -r local real_os_version=${11};
    +declare -r local port=$5;
    +declare -r local login=$6;
    +declare -r local password=$7;
    +declare -r local log_dir=${12};
    +declare -r local pid_dir=${13};
    +
    echo "***********************************************************************"
    echo "* Welcome to the Webmin setup script, version $ver *"
    echo "***********************************************************************"
    @@ -40,40 +56,40 @@
    echo ""
    # Only root can run this
    -id | grep "uid=0(" >/dev/null
    -if [ $? != "0" ]; then
    - uname -a | grep -i CYGWIN >/dev/null
    - if [ $? != "0" ]; then
    - echo "ERROR: The Webmin install script must be run as root";
    - echo "";
    - exit 1;
    - fi
    -fi
    +#id | grep "uid=0(" >/dev/null
    +#if [ $? != "0" ]; then
    +# uname -a | grep -i CYGWIN >/dev/null
    +# if [ $? != "0" ]; then
    +# echo "ERROR: The Webmin install script must be run as root";
    +# echo "";
    +# exit 1;
    +# fi
    +#fi
    # Use the supplied destination directory, if any
    if [ "$1" != "" ]; then
    wadir=$1
    - echo "Installing Webmin from $srcdir to $wadir ..."
    - if [ ! -d "$wadir" ]; then
    - mkdir "$wadir"
    + echo "Installing Webmin from $srcdir to $DESTDIR$wadir ..."
    + if [ ! -d "$DESTDIR$wadir" ]; then
    + mkdir -p "$DESTDIR$wadir"
    if [ "$?" != "0" ]; then
    - echo "ERROR: Failed to create $wadir"
    + echo "ERROR: Failed to create $DESTDIR$wadir"
    echo ""
    exit 1
    fi
    else
    # Make sure dest dir is not in use
    - ls "$wadir" | grep -v rpmsave >/dev/null 2>&1
    - if [ "$?" = "0" -a ! -r "$wadir/setup.sh" ]; then
    - echo "ERROR: Installation directory $wadir contains other files"
    + ls "$DESTDIR$wadir" | grep -v rpmsave >/dev/null 2>&1
    + if [ "$?" = "0" -a ! -r "$DESTDIR$wadir/setup.sh" ]; then
    + echo "ERROR: Installation directory $DESTDIR$wadir contains other files"
    echo ""
    exit 1
    fi
    fi
    else
    - echo "Installing Webmin in $wadir ..."
    + echo "Installing Webmin in $DESTDIR$wadir ..."
    fi
    -cd "$wadir"
    +cd "$DESTDIR$wadir"
    # Validate source directory
    allmods=`cd "$srcdir"; echo */module.info | sed -e 's//module.info//g'`
    @@ -108,16 +124,16 @@
    echo ""
    exit 2
    fi
    -if [ ! -d $config_dir ]; then
    - mkdir $config_dir;
    +if [ ! -d $DESTDIR$config_dir ]; then
    + mkdir -p $DESTDIR$config_dir;
    if [ $? != 0 ]; then
    - echo "ERROR: Failed to create directory $config_dir"
    + echo "ERROR: Failed to create directory $DESTDIR$config_dir"
    echo ""
    exit 2
    fi
    fi
    -if [ -r "$config_dir/config" ]; then
    - echo "Found existing Webmin configuration in $config_dir"
    +if [ -r "$DESTDIR$config_dir/config" ]; then
    + echo "Found existing Webmin configuration in $DESTDIR$config_dir"
    echo ""
    upgrading=1
    fi
    @@ -197,9 +213,9 @@
    rm -f $config_dir/module.infos.cache
    else
    # Config directory exists .. make sure it is not in use
    - ls $config_dir | grep -v rpmsave >/dev/null 2>&1
    + ls $DESTDIR$config_dir | grep -v rpmsave >/dev/null 2>&1
    if [ "$?" = "0" -a "$config_dir" != "/etc/webmin" ]; then
    - echo "ERROR: Config directory $config_dir is not empty"
    + echo "ERROR: Config directory $DESTDIR$config_dir is not empty"
    echo ""
    exit 2
    fi
    @@ -223,14 +239,55 @@
    exit ""
    exit 3
    fi
    - if [ ! -d $var_dir ]; then
    - mkdir $var_dir
    + if [ ! -d $DESTDIR$var_dir ]; then
    + mkdir -p $DESTDIR$var_dir
    if [ $? != 0 ]; then
    - echo "ERROR: Failed to create directory $var_dir"
    + echo "ERROR: Failed to create directory $DESTDIR$var_dir"
    echo ""
    exit 3
    fi
    fi
    +
    + abspath=`echo $log_dir | grep "^/"`
    + if [ "$abspath" = "" ]; then
    + echo "Log-file-directory(log_dir) must be an absolute path"
    + echo ""
    + exit 3
    + fi
    + if [ "$log_dir" = "/" ]; then
    + echo "Log directory(log_dir) cannot be /"
    + echo ""
    + exit 3
    + fi
    + if [ ! -d $DESTDIR$log_dir ]; then
    + mkdir -p $DESTDIR$log_dir;
    + if [[ $? != 0 ]]; then
    + echo "ERROR: Failed to create directory $DESTDIR$log_dir"
    + echo ""
    + exit 3
    + fi
    + fi
    +
    + abspath=`echo $pid_dir | grep "^/"`
    + if [ "$abspath" = "" ]; then
    + echo "Pid-file-directory(pid_dir) must be an absolute path"
    + echo ""
    + exit 3
    + fi
    + if [ "$pid_dir" = "/" ]; then
    + echo "Pid directory(pid_dir) cannot be /"
    + echo ""
    + exit 3
    + fi
    + if [ ! -d $DESTDIR$pid_dir ]; then
    + mkdir -p $DESTDIR$pid_dir;
    + if [[ $? != 0 ]]; then
    + echo "ERROR:Failed to create directory $DESTDIR$log_dir"
    + echo ""
    + exit 3
    + fi
    + fi
    +
    echo ""
    # Ask where perl is installed
    @@ -256,7 +313,7 @@
    fi
    else
    printf "Full path to perl (default $perldef): "
    - read perl
    +# read perl
    if [ "$perl" = "" ]; then
    perl=$perldef
    fi
    @@ -386,6 +443,7 @@
    echo ""
    exit 14
    fi
    +
    printf "Login password: "
    if [ "$password" = "" -a "$crypt" = "" ]; then
    stty -echo
    @@ -425,82 +483,84 @@
    fi
    # Ask whether to run at boot time
    - if [ "$atboot" = "" ]; then
    - initsupp=`grep "^os_support=" "$srcdir/init/module.info" | sed -e 's/os_support=//g' | grep $os_type`
    - atboot=0
    - if [ "$initsupp" != "" ]; then
    - printf "Start Webmin at boot time (y/n): "
    - read atbootyn
    - if [ "$atbootyn" = "y" -o "$atbootyn" = "Y" ]; then
    - atboot=1
    - fi
    - else
    - echo "Webmin does not support being started at boot time on your system."
    - fi
    - fi
    + #if [ "$atboot" = "" ]; then
    + # initsupp=`grep "^os_support=" "$srcdir/init/module.info" | sed -e 's/os_support=//g' | grep $os_type`
    + # atboot=0
    + # if [ "$initsupp" != "" ]; then
    + # printf "Start Webmin at boot time (y/n): "
    + # read atbootyn
    + # if [ "$atbootyn" = "y" -o "$atbootyn" = "Y" ]; then
    + # atboot=1
    + # fi
    + # else
    + # echo "Webmin does not support being started at boot time on your system."
    + # fi
    + #fi
    + #user has to decide this for him/herself
    + atboot=0
    makeboot=$atboot
    # Copy files to target directory
    echo "***********************************************************************"
    - if [ "$wadir" != "$srcdir" ]; then
    - echo "Copying files to $wadir .."
    - (cd "$srcdir" ; tar cf - . | (cd "$wadir" ; tar xf -))
    + if [ "$DESTDIR$wadir" != "$srcdir" ]; then
    + echo "Copying files to $DESTDIR$wadir .."
    + (cd "$srcdir" ; tar cf - . | (cd "$DESTDIR$wadir" ; tar xf -))
    echo "..done"
    echo ""
    fi
    # Create webserver config file
    - echo $perl > $config_dir/perl-path
    - echo $var_dir > $config_dir/var-path
    + echo $perl > $DESTDIR$config_dir/perl-path
    + echo $var_dir > $DESTDIR$config_dir/var-path
    echo "Creating web server config files.."
    cfile=$config_dir/miniserv.conf
    - echo "port=$port" >> $cfile
    - echo "root=$wadir" >> $cfile
    - echo "mimetypes=$wadir/mime.types" >> $cfile
    - echo "addtype_cgi=internal/cgi" >> $cfile
    - echo "realm=Webmin Server" >> $cfile
    - echo "logfile=$var_dir/miniserv.log" >> $cfile
    - echo "errorlog=$var_dir/miniserv.error" >> $cfile
    - echo "pidfile=$var_dir/miniserv.pid" >> $cfile
    - echo "logtime=168" >> $cfile
    - echo "ppath=$ppath" >> $cfile
    - echo "ssl=$ssl" >> $cfile
    - echo "env_WEBMIN_CONFIG=$config_dir" >> $cfile
    - echo "env_WEBMIN_VAR=$var_dir" >> $cfile
    - echo "atboot=$atboot" >> $cfile
    - echo "logout=$config_dir/logout-flag" >> $cfile
    - echo "listen=10000" >> $cfile
    - echo "denyfile=\.pl$" >> $cfile
    - echo "log=1" >> $cfile
    - echo "blockhost_failures=5" >> $cfile
    - echo "blockhost_time=60" >> $cfile
    - echo "syslog=1" >> $cfile
    + echo "port=$port" >> $DESTDIR$cfile
    + echo "root=$wadir" >> $DESTDIR$cfile
    + echo "mimetypes=$wadir/mime.types" >> $DESTDIR$cfile
    + echo "addtype_cgi=internal/cgi" >> $DESTDIR$cfile
    + echo "realm=Webmin Server" >> $DESTDIR$cfile
    + echo "logfile=$log_dir/miniserv.log" >> $DESTDIR$cfile
    + echo "errorlog=$log_dir/miniserv.error" >> $DESTDIR$cfile
    + echo "pidfile=$pid_dir/miniserv.pid" >> $DESTDIR$cfile
    + echo "logtime=168" >> $DESTDIR$cfile
    + echo "ppath=$ppath" >> $DESTDIR$cfile
    + echo "ssl=$ssl" >> $DESTDIR$cfile
    + echo "env_WEBMIN_CONFIG=$config_dir" >> $DESTDIR$cfile
    + echo "env_WEBMIN_VAR=$var_dir" >> $DESTDIR$cfile
    + echo "atboot=$atboot" >> $DESTDIR$cfile
    + echo "logout=$config_dir/logout-flag" >> $DESTDIR$cfile
    + echo "listen=10000" >> $DESTDIR$cfile
    + echo "denyfile=\.pl$" >> $DESTDIR$cfile
    + echo "log=1" >> $DESTDIR$cfile
    + echo "blockhost_failures=5" >> $DESTDIR$cfile
    + echo "blockhost_time=60" >> $DESTDIR$cfile
    + echo "syslog=1" >> $DESTDIR$cfile
    if [ "$allow" != "" ]; then
    - echo "allow=$allow" >> $cfile
    + echo "allow=$allow" >> $DESTDIR$cfile
    fi
    if [ "$session" != "" ]; then
    - echo "session=$session" >> $cfile
    + echo "session=$session" >> $DESTDIR$cfile
    else
    - echo "session=1" >> $cfile
    + echo "session=1" >> $DESTDIR$cfile
    fi
    if [ "$pam" != "" ]; then
    - echo "pam=$pam" >> $cfile
    + echo "pam=$pam" >> $DESTDIR$cfile
    fi
    md5pass=`$perl -e 'print crypt("test", "\$1\$A9wB3O18\$zaZgqrEmb9VNltWTL454R/") eq "\$1\$A9wB3O18\$zaZgqrEmb9VNltWTL454R/" ? "1n" : "0n"'`
    ufile=$config_dir/miniserv.users
    if [ "$crypt" != "" ]; then
    - echo "$login:$crypt:0" > $ufile
    + echo "$login:$crypt:0" > $DESTDIR$ufile
    else
    if [ "$md5pass" = "1" ]; then
    - $perl -e 'print "$ARGV[0]:",crypt($ARGV[1], "$1$XXXXXXXX"),":0n"' "$login" "$password" > $ufile
    + $perl -e 'print "$ARGV[0]:",crypt($ARGV[1], "$1$XXXXXXXX"),":0n"' "$login" "$password" > $DESTDIR$ufile
    else
    - $perl -e 'print "$ARGV[0]:",crypt($ARGV[1], "XX"),":0n"' "$login" "$password" > $ufile
    + $perl -e 'print "$ARGV[0]:",crypt($ARGV[1], "XX"),":0n"' "$login" "$password" > $DESTDIR$ufile
    fi
    fi
    - chmod 600 $ufile
    - echo "userfile=$ufile" >> $cfile
    + chmod 600 $DESTDIR$ufile
    + echo "userfile=$ufile" >> $DESTDIR$cfile
    kfile=$config_dir/miniserv.pem
    openssl version >/dev/null 2>&1
    @@ -517,74 +577,74 @@
    root@$host
    EOF
    if [ "$?" = "0" ]; then
    - cat $tempdir/cert $tempdir/key >$kfile
    + cat $tempdir/cert $tempdir/key >$DESTDIR$kfile
    fi
    rm -f $tempdir/cert $tempdir/key
    fi
    if [ ! -r $kfile ]; then
    # Fall back to the built-in key
    - cp "$wadir/miniserv.pem" $kfile
    + cp "$DESTDIR$wadir/miniserv.pem" $DESTDIR$kfile
    fi
    - chmod 600 $kfile
    - echo "keyfile=$config_dir/miniserv.pem" >> $cfile
    + chmod 600 $DESTDIR$kfile
    + echo "keyfile=$config_dir/miniserv.pem" >> $DESTDIR$cfile
    - chmod 600 $cfile
    + chmod 600 $DESTDIR$cfile
    echo "..done"
    echo ""
    echo "Creating access control file.."
    afile=$config_dir/webmin.acl
    - rm -f $afile
    + rm -f $DESTDIR$afile
    if [ "$defaultmods" = "" ]; then
    - echo "$login: $allmods" >> $afile
    + echo "$login: $allmods" >> $DESTDIR$afile
    else
    - echo "$login: $defaultmods" >> $afile
    + echo "$login: $defaultmods" >> $DESTDIR$afile
    fi
    - chmod 600 $afile
    + chmod 600 $DESTDIR$afile
    echo "..done"
    echo ""
    if [ "$login" != "root" -a "$login" != "admin" ]; then
    # Allow use of RPC by this user
    - echo rpc=1 >>$config_dir/$login.acl
    + echo rpc=1 >>$DESTDIR$config_dir/$login.acl
    fi
    fi
    if [ "$noperlpath" = "" ]; then
    echo "Inserting path to perl into scripts.."
    - (find "$wadir" -name '*.cgi' -print ; find "$wadir" -name '*.pl' -print) | $perl "$wadir/perlpath.pl" $perl -
    + (find "$DESTDIR$wadir" -name '*.cgi' -print ; find "$DESTDIR$wadir" -name '*.pl' -print) | $perl "$DESTDIR$wadir/perlpath.pl" $perl -
    echo "..done"
    echo ""
    fi
    echo "Creating start and stop scripts.."
    -rm -f $config_dir/stop $config_dir/start $config_dir/restart
    -echo "#!/bin/sh" >>$config_dir/start
    -echo "echo Starting Webmin server in $wadir" >>$config_dir/start
    -echo "trap '' 1" >>$config_dir/start
    -echo "LANG=" >>$config_dir/start
    -echo "export LANG" >>$config_dir/start
    -echo "#PERLIO=:raw" >>$config_dir/start
    -echo "unset PERLIO" >>$config_dir/start
    -echo "export PERLIO" >>$config_dir/start
    -echo "PERLLIB=$PERLLIB" >>$config_dir/start
    -echo "export PERLLIB" >>$config_dir/start
    +rm -f $DESTDIR$config_dir/stop $DESTDIR$config_dir/start $DESTDIR$config_dir/restart
    +echo "#!/bin/sh" >>$DESTDIR$config_dir/start
    +echo "echo Starting Webmin server in $wadir" >>$DESTDIR$config_dir/start
    +echo "trap '' 1" >>$DESTDIR$config_dir/start
    +echo "LANG=" >>$DESTDIR$config_dir/start
    +echo "export LANG" >>$DESTDIR$config_dir/start
    +echo "#PERLIO=:raw" >>$DESTDIR$config_dir/start
    +echo "unset PERLIO" >>$DESTDIR$config_dir/start
    +echo "export PERLIO" >>$DESTDIR$config_dir/start
    +echo "PERLLIB=$PERLLIB" >>$DESTDIR$config_dir/start
    +echo "export PERLLIB" >>$DESTDIR$config_dir/start
    uname -a | grep -i 'HP/*UX' >/dev/null
    if [ $? = "0" ]; then
    - echo "exec '$wadir/miniserv.pl' $config_dir/miniserv.conf &" >>$config_dir/start
    + echo "exec '$wadir/miniserv.pl' $config_dir/miniserv.conf &" >>$DESTDIR$config_dir/start
    else
    - echo "exec '$wadir/miniserv.pl' $config_dir/miniserv.conf" >>$config_dir/start
    + echo "exec '$wadir/miniserv.pl' $config_dir/miniserv.conf" >>$DESTDIR$config_dir/start
    fi
    -echo "#!/bin/sh" >>$config_dir/stop
    -echo "echo Stopping Webmin server in $wadir" >>$config_dir/stop
    -echo "pidfile=`grep "^pidfile=" $config_dir/miniserv.conf | sed -e 's/pidfile=//g'`" >>$config_dir/stop
    -echo "kill `cat $pidfile`" >>$config_dir/stop
    +echo "#!/bin/sh" >>$DESTDIR$config_dir/stop
    +echo "echo Stopping Webmin server in $wadir" >>$DESTDIR$config_dir/stop
    +echo "pidfile=`grep "^pidfile=" $config_dir/miniserv.conf | sed -e 's/pidfile=//g'`" >>$DESTDIR$config_dir/stop
    +echo "kill `cat $pidfile`" >>$DESTDIR$config_dir/stop
    -echo "#!/bin/sh" >>$config_dir/restart
    -echo "$config_dir/stop && $config_dir/start" >>$config_dir/restart
    +echo "#!/bin/sh" >>$DESTDIR$config_dir/restart
    +echo "$config_dir/stop && $config_dir/start" >>$DESTDIR$config_dir/restart
    -chmod 755 $config_dir/start $config_dir/stop
    +chmod 755 $DESTDIR$config_dir/start $DESTDIR$config_dir/stop
    echo "..done"
    echo ""
    @@ -593,13 +653,13 @@
    else
    echo "Copying config files.."
    fi
    -$perl "$wadir/copyconfig.pl" "$os_type" "$os_version" "$wadir" $config_dir "" $allmods
    +$perl "$DESTDIR$wadir/copyconfig.pl" "$os_type" "$os_version" "$wadir" $config_dir "$DESTDIR" "" $allmods
    if [ "$upgrading" != 1 ]; then
    # Store the OS and version
    - echo "os_type=$os_type" >> $config_dir/config
    - echo "os_version=$os_version" >> $config_dir/config
    - echo "real_os_type=$real_os_type" >> $config_dir/config
    - echo "real_os_version=$real_os_version" >> $config_dir/config
    + echo "os_type=$os_type" >> $DESTDIR$config_dir/config
    + echo "os_version=$os_version" >> $DESTDIR$config_dir/config
    + echo "real_os_type=$real_os_type" >> $DESTDIR$config_dir/config
    + echo "real_os_version=$real_os_version" >> $DESTDIR$config_dir/config
    if [ -r /etc/system.cnf ]; then
    # Found a caldera system config file .. get the language
    source /etc/system.cnf
    @@ -608,61 +668,62 @@
    elif [ "$CONF_LST_LANG" = "uk" ]; then
    CONF_LST_LANG=en
    fi
    - grep "lang=$CONF_LST_LANG," "$wadir/lang_list.txt" >/dev/null 2>&1
    + grep "lang=$CONF_LST_LANG," "$DESTDIR$wadir/lang_list.txt" >/dev/null 2>&1
    if [ "$?" = 0 ]; then
    - echo "lang=$CONF_LST_LANG" >> $config_dir/config
    + echo "lang=$CONF_LST_LANG" >> $DESTDIR$config_dir/config
    fi
    fi
    # Turn on logging by default
    - echo "log=1" >> $config_dir/config
    + echo "log=1" >> $DESTDIR$config_dir/config
    else
    # one-off hack to set log variable in config from miniserv.conf
    - grep log= $config_dir/config >/dev/null
    + grep log= $DESTDIR$config_dir/config >/dev/null
    if [ "$?" = "1" ]; then
    - grep log= $config_dir/miniserv.conf >> $config_dir/config
    - grep logtime= $config_dir/miniserv.conf >> $config_dir/config
    - grep logclear= $config_dir/miniserv.conf >> $config_dir/config
    + grep log= $DESTDIR$config_dir/miniserv.conf >> $DESTDIR$config_dir/config
    + grep logtime= $DESTDIR$config_dir/miniserv.conf >> $DESTDIR$config_dir/config
    + grep logclear= $DESTDIR$config_dir/miniserv.conf >> $DESTDIR$config_dir/config
    fi
    fi
    -echo $ver > $config_dir/version
    +echo $ver > $DESTDIR$config_dir/version
    echo "..done"
    echo ""
    # Set passwd_ fields in miniserv.conf from global config
    for field in passwd_file passwd_uindex passwd_pindex passwd_cindex passwd_mindex; do
    - grep $field= $config_dir/miniserv.conf >/dev/null
    + grep $field= $DESTDIR$config_dir/miniserv.conf >/dev/null
    if [ "$?" != "0" ]; then
    - grep $field= $config_dir/config >> $config_dir/miniserv.conf
    + grep $field= $DESTDIR$config_dir/config >> $DESTDIR$config_dir/miniserv.conf
    fi
    done
    -grep passwd_mode= $config_dir/miniserv.conf >/dev/null
    +grep passwd_mode= $DESTDIR$config_dir/miniserv.conf >/dev/null
    if [ "$?" != "0" ]; then
    - echo passwd_mode=0 >> $config_dir/miniserv.conf
    + echo passwd_mode=0 >> $DESTDIR$config_dir/miniserv.conf
    fi
    # If Perl crypt supports MD5, then make it the default
    if [ "$md5pass" = "1" ]; then
    - echo md5pass=1 >> $config_dir/config
    + echo md5pass=1 >> $DESTDIR$config_dir/config
    fi
    # Set a special theme if none was set before
    if [ "$theme" = "" ]; then
    - theme=`cat "$wadir/defaulttheme" 2>/dev/null`
    + theme=`cat "$DESTDIR$wadir/defaulttheme" 2>/dev/null`
    fi
    -oldthemeline=`grep "^theme=" $config_dir/config`
    +oldthemeline=`grep "^theme=" $DESTDIR$config_dir/config`
    oldtheme=`echo $oldthemeline | sed -e 's/theme=//g'`
    -if [ "$theme" != "" ] && [ "$oldthemeline" = "" ] && [ -d "$wadir/$theme" ]; then
    - echo "theme=$theme" >> $config_dir/config
    - echo "preroot=$theme" >> $config_dir/miniserv.conf
    +if [ "$theme" != "" ] && [ "$oldthemeline" = "" ] && [ -d "$DESTDIR$wadir/$theme" ]; then
    + echo "theme=$theme" >> $DESTDIR$config_dir/config
    + echo "preroot=$theme" >> $DESTDIR$config_dir/miniserv.conf
    fi
    # Set the product field in the global config
    -grep product= $config_dir/config >/dev/null
    +grep product= $DESTDIR$config_dir/config >/dev/null
    if [ "$?" != "0" ]; then
    - echo product=webmin >> $config_dir/config
    + echo product=webmin >> $DESTDIR$config_dir/config
    fi
    +#I disbled makeboot. If enabled, then $DESTIDIR needs tp be added to this section
    if [ "$makeboot" = "1" ]; then
    echo "Configuring Webmin to start at boot time.."
    (cd "$wadir/init" ; WEBMIN_CONFIG=$config_dir WEBMIN_VAR=$var_dir "$wadir/init/atboot.pl")
    @@ -671,8 +732,8 @@
    fi
    if [ "$nouninstall" = "" ]; then
    - echo "Creating uninstall script $config_dir/uninstall.sh .."
    - cat >$config_dir/uninstall.sh <<EOF
    + echo "Creating uninstall script $DESTDIR$config_dir/uninstall.sh .."
    + cat >$DESTDIR$config_dir/uninstall.sh <<EOF
    #!/bin/sh
    printf "Are you sure you want to uninstall Webmin? (y/n) : "
    read answer
    @@ -688,89 +749,91 @@
    echo "Done!"
    fi
    EOF
    - chmod +x $config_dir/uninstall.sh
    + chmod +x $DESTDIR$config_dir/uninstall.sh
    echo "..done"
    echo ""
    fi
    echo "Changing ownership and permissions .."
    -chown -R root $config_dir
    -chgrp -R bin $config_dir
    -chmod -R og-rw $config_dir
    -chmod 755 $config_dir/{sendmail,qmailadmin,postfix}*/config >/dev/null 2>&1
    -chmod 755 $config_dir/{sendmail,qmailadmin,postfix}*/autoreply.pl >/dev/null 2>&1
    -chmod 755 $config_dir/{sendmail,qmailadmin,postfix}*/filter.pl >/dev/null 2>&1
    -chmod 755 $config_dir/squid*/squid-auth.pl >/dev/null 2>&1
    -chmod 755 $config_dir/squid*/users >/dev/null 2>&1
    -chmod +r $config_dir/version
    +chown -R root $DESTDIR$config_dir
    +chgrp -R bin $DESTDIR$config_dir
    +chmod -R og-rw $DESTDIR$config_dir
    +chmod 755 $DESTDIR$config_dir/{sendmail,qmailadmin,postfix}*/config >/dev/null 2>&1
    +chmod 755 $DESTDIR$config_dir/{sendmail,qmailadmin,postfix}*/autoreply.pl >/dev/null 2>&1
    +chmod 755 $DESTDIR$config_dir/{sendmail,qmailadmin,postfix}*/filter.pl >/dev/null 2>&1
    +chmod 755 $DESTDIR$config_dir/squid*/squid-auth.pl >/dev/null 2>&1
    +chmod 755 $DESTDIR$config_dir/squid*/users >/dev/null 2>&1
    +chmod +r $DESTDIR$config_dir/version
    if [ "$nochown" = "" ]; then
    - chown -R root "$wadir"
    - chgrp -R bin "$wadir"
    - chmod -R og-w "$wadir"
    - chmod -R a+rx "$wadir"
    -fi
    -if [ $var_dir != "/var" ]; then
    - chown -R root $var_dir
    - chgrp -R bin $var_dir
    - chmod -R og-rwx $var_dir
    + chown -R root "$DESTDIR$wadir"
    + chgrp -R bin "$DESTDIR$wadir"
    + chmod -R og-w "$DESTDIR$wadir"
    + chmod -R a+rx "$DESTDIR$wadir"
    +fi
    +if [ $DESTDIR$var_dir != "/var" ]; then
    + chown -R root $DESTDIR$var_dir
    + chgrp -R bin $DESTDIR$var_dir
    + chmod -R og-rwx $DESTDIR$var_dir
    fi
    echo "..done"
    echo ""
    # Save target directory if one was specified
    -if [ "$wadir" != "$srcdir" ]; then
    - echo $wadir >$config_dir/install-dir
    +if [ "$DESTDIR$wadir" != "$srcdir" ]; then
    + echo $wadir >$DESTDIR$config_dir/install-dir
    else
    - rm -f $config_dir/install-dir
    + rm -f $DESTDIR$config_dir/install-dir
    fi
    -if [ "$nopostinstall" = "" ]; then
    - echo "Running postinstall scripts .."
    - (cd "$wadir" ; WEBMIN_CONFIG=$config_dir WEBMIN_VAR=$var_dir "$wadir/run-postinstalls.pl")
    - echo "..done"
    - echo ""
    -fi
    +#This is not for now ... this is for in the install-script
    +#if [ "$nopostinstall" = "" ]; then
    +# echo "Running postinstall scripts .."
    +# (cd "$wadir" ; WEBMIN_CONFIG=$config_dir WEBMIN_VAR=$var_dir "$wadir/run-postinstalls.pl")
    +# echo "..done"
    +# echo ""
    +#fi
    # Run package-defined post-install script
    -if [ -r "$srcdir/setup-post.sh" ]; then
    - . "$srcdir/setup-post.sh"
    -fi
    -if [ "$nostart" = "" ]; then
    - if [ "$inetd" != "1" ]; then
    - echo "Attempting to start Webmin mini web server.."
    - $config_dir/start
    - if [ $? != "0" ]; then
    - echo "ERROR: Failed to start web server!"
    - echo ""
    - exit 14
    - fi
    - echo "..done"
    - echo ""
    - fi
    - echo "***********************************************************************"
    - echo "Webmin has been installed and started successfully. Use your web"
    - echo "browser to go to"
    - echo ""
    - host=`hostname`
    - if [ "$ssl" = "1" ]; then
    - echo " https://$host:$port/"
    - else
    - echo " http://$host:$port/"
    - fi
    - echo ""
    - echo "and login with the name and password you entered previously."
    - echo ""
    - if [ "$ssl" = "1" ]; then
    - echo "Because Webmin uses SSL for encryption only, the certificate"
    - echo "it uses is not signed by one of the recognized CAs such as"
    - echo "Verisign. When you first connect to the Webmin server, your"
    - echo "browser will ask you if you want to accept the certificate"
    - echo "presented, as it does not recognize the CA. Say yes."
    - echo ""
    - fi
    -fi
    +#if [ -r "$srcdir/setup-post.sh" ]; then
    +# . "$srcdir/setup-post.sh"
    +#fi
    +
    +#don't start the webserver
    +#if [ "$nostart" = "" ]; then
    +# if [ "$inetd" != "1" ]; then
    +# echo "Attempting to start Webmin mini web server.."
    +# $config_dir/start
    +# if [ $? != "0" ]; then
    +# echo "ERROR: Failed to start web server!"
    +# echo ""
    +# exit 14
    +# fi
    +# echo "..done"
    +# echo ""
    +# fi
    +
    +# echo "***********************************************************************"
    +# echo "Webmin has been installed and started successfully. Use your web"
    +# echo "browser to go to"
    +# echo ""
    +# host=`hostname`
    +# if [ "$ssl" = "1" ]; then
    +# echo " https://$host:$port/"
    +# else
    +# echo " http://$host:$port/"
    +# fi
    +# echo ""
    +# echo "and login with the name and password you entered previously."
    +# echo ""
    +# if [ "$ssl" = "1" ]; then
    +# echo "Because Webmin uses SSL for encryption only, the certificate"
    +# echo "it uses is not signed by one of the recognized CAs such as"
    +# echo "Verisign. When you first connect to the Webmin server, your"
    +# echo "browser will ask you if you want to accept the certificate"
    +# echo "presented, as it does not recognize the CA. Say yes."
    +# echo ""
    +# fi
    +#fi
    if [ "$oldwadir" != "$wadir" -a "$upgrading" = 1 -a "$deletedold" != 1 ]; then
    echo "The directory from the previous version of Webmin"
    copyconfig.pl.patch:
    --- copyconfig.pl 2004-12-02 23:17:37.000000000 +0100
    +++ copyconfig-new.pl 2004-12-03 01:00:26.000000000 +0100
    @@ -9,12 +9,13 @@
    $ver = $ARGV[1];
    $wadir = $ARGV[2];
    $confdir = $ARGV[3];
    +$DESTDIR = $ARGV[4];
    # Find all clones
    -opendir(DIR, $wadir);
    +opendir(DIR, $DESTDIR.$wadir);
    foreach $f (readdir(DIR)) {
    - if (readlink("$wadir/$f")) {
    - @st = stat("$wadir/$f");
    + if (readlink("$DESTDIR.$wadir/$f")) {
    + @st = stat("$DESTDIR.$wadir/$f");
    push(@{$clone{$st[1]}}, $f);
    @@ -24,7 +25,7 @@
    @mods = @ARGV[4..$#ARGV];
    foreach $m (@mods) {
    # Find any range-number config files
    - $srcdir = "$wadir/$m";
    + $srcdir = "$DESTDIR.$wadir/$m";
    $rangefile = undef;
    opendir(DIR, $srcdir);
    while($f = readdir(DIR)) {

    Goto settings general usage there u will see your apps and under documents &amp;data u will see wot each app uses, the only way to get rid of it is by deleting the app and reinstalling this will free up space..

Maybe you are looking for