⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 install.php

📁 php-4.4.7学习linux时下载的源代码
💻 PHP
📖 第 1 页 / 共 3 页
字号:
                                $this->ui->outputData("remote install failed: $label");                            } else {                                $this->ui->outputData("remote install ok: $label");                            }                        }                    }                }                $deps = $param->getDeps();                if ($deps) {                    if (isset($deps['group'])) {                        $groups = $deps['group'];                        if (!isset($groups[0])) {                            $groups = array($groups);                        }                        foreach ($groups as $group) {                            if ($group['attribs']['name'] == 'default') {                                // default group is always installed, unless the user                                // explicitly chooses to install another group                                continue;                            }                            $this->ui->outputData($param->getPackage() . ': Optional feature ' .                                $group['attribs']['name'] . ' available (' .                                $group['attribs']['hint'] . ')');                        }                        $extrainfo[] = 'To install use "pear install ' .                            $reg->parsedPackageNameToString(                                array('package' => $param->getPackage(),                                      'channel' => $param->getChannel()), true) .                                  '#featurename"';                    }                }                if (isset($options['installroot'])) {                    $reg = &$this->config->getRegistry();                }                $pkg = &$reg->getPackage($param->getPackage(), $param->getChannel());                // $pkg may be NULL if install is a 'fake' install via --packagingroot                if (is_object($pkg)) {                    $pkg->setConfig($this->config);                    if ($list = $pkg->listPostinstallScripts()) {                        $pn = $reg->parsedPackageNameToString(array('channel' =>                           $param->getChannel(), 'package' => $param->getPackage()), true);                        $extrainfo[] = $pn . ' has post-install scripts:';                        foreach ($list as $file) {                            $extrainfo[] = $file;                        }                        $extrainfo[] = 'Use "pear run-scripts ' . $pn . '" to run';                        $extrainfo[] = 'DO NOT RUN SCRIPTS FROM UNTRUSTED SOURCES';                    }                }            } else {                return $this->raiseError("$command failed");            }        }        if (count($extrainfo)) {            foreach ($extrainfo as $info) {                $this->ui->outputData($info);            }        }        return true;    }    // }}}    // {{{ doUninstall()    function doUninstall($command, $options, $params)    {        if (empty($this->installer)) {            $this->installer = &$this->getInstaller($this->ui);        }        if (isset($options['remoteconfig'])) {            $e = $this->config->readFTPConfigFile($options['remoteconfig']);            if (!PEAR::isError($e)) {                $this->installer->setConfig($this->config);            }        }        if (sizeof($params) < 1) {            return $this->raiseError("Please supply the package(s) you want to uninstall");        }        $reg = &$this->config->getRegistry();        $newparams = array();        $badparams = array();        foreach ($params as $pkg) {            $channel = $this->config->get('default_channel');            PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN);            $parsed = $reg->parsePackageName($pkg, $channel);            PEAR::staticPopErrorHandling();            if (!$parsed || PEAR::isError($parsed)) {                $badparams[] = $pkg;                continue;            }            $package = $parsed['package'];            $channel = $parsed['channel'];            $info = &$reg->getPackage($package, $channel);            if ($info === null &&                 ($channel == 'pear.php.net' || $channel == 'pecl.php.net')) {                // make sure this isn't a package that has flipped from pear to pecl but                // used a package.xml 1.0                $testc = ($channel == 'pear.php.net') ? 'pecl.php.net' : 'pear.php.net';                $info = &$reg->getPackage($package, $testc);                if ($info !== null) {                    $channel = $testc;                }            }            if ($info === null) {                $badparams[] = $pkg;            } else {                $newparams[] = &$info;                // check for binary packages (this is an alias for those packages if so)                if ($installedbinary = $info->getInstalledBinary()) {                    $this->ui->log('adding binary package ' .                        $reg->parsedPackageNameToString(array('channel' => $channel,                            'package' => $installedbinary), true));                    $newparams[] = &$reg->getPackage($installedbinary, $channel);                }                // add the contents of a dependency group to the list of installed packages                if (isset($parsed['group'])) {                    $group = $info->getDependencyGroup($parsed['group']);                    if ($group) {                        $installed = &$reg->getInstalledGroup($group);                        if ($installed) {                            foreach ($installed as $i => $p) {                                $newparams[] = &$installed[$i];                            }                        }                    }                }            }        }        $err = $this->installer->sortPackagesForUninstall($newparams);        if (PEAR::isError($err)) {            $this->ui->outputData($err->getMessage(), $command);            return true;        }        $params = $newparams;        // twist this to use it to check on whether dependent packages are also being uninstalled        // for circular dependencies like subpackages        $this->installer->setUninstallPackages($newparams);        $params = array_merge($params, $badparams);        foreach ($params as $pkg) {            $this->installer->pushErrorHandling(PEAR_ERROR_RETURN);            if ($err = $this->installer->uninstall($pkg, $options)) {                $this->installer->popErrorHandling();                if (PEAR::isError($err)) {                    $this->ui->outputData($err->getMessage(), $command);                    continue;                }                $savepkg = $pkg;                if ($this->config->get('verbose') > 0) {                    if (is_object($pkg)) {                        $pkg = $reg->parsedPackageNameToString($pkg);                    }                    $this->ui->outputData("uninstall ok: $pkg", $command);                }                if (!isset($options['offline']) && is_object($savepkg) &&                      defined('PEAR_REMOTEINSTALL_OK')) {                    if ($this->config->isDefinedLayer('ftp')) {                        $this->installer->pushErrorHandling(PEAR_ERROR_RETURN);                        $info = $this->installer->ftpUninstall($savepkg);                        $this->installer->popErrorHandling();                        if (PEAR::isError($info)) {                            $this->ui->outputData($info->getMessage());                            $this->ui->outputData("remote uninstall failed: $pkg");                        } else {                            $this->ui->outputData("remote uninstall ok: $pkg");                        }                    }                }            } else {                $this->installer->popErrorHandling();                if (is_object($pkg)) {                    $pkg = $reg->parsedPackageNameToString($pkg);                }                return $this->raiseError("uninstall failed: $pkg");            }        }        return true;    }    // }}}    // }}}    // {{{ doBundle()    /*    (cox) It just downloads and untars the package, does not do            any check that the PEAR_Installer::_installFile() does.    */    function doBundle($command, $options, $params)    {        $downloader = &$this->getDownloader($this->ui, array('force' => true, 'nodeps' => true,            'soft' => true), $this->config);        $reg = &$this->config->getRegistry();        if (sizeof($params) < 1) {            return $this->raiseError("Please supply the package you want to bundle");        }        if (isset($options['destination'])) {            if (!is_dir($options['destination'])) {                System::mkdir('-p ' . $options['destination']);            }            $dest = realpath($options['destination']);        } else {            $pwd = getcwd();            if (is_dir($pwd . DIRECTORY_SEPARATOR . 'ext')) {                $dest = $pwd . DIRECTORY_SEPARATOR . 'ext';            } else {                $dest = $pwd;            }        }        $downloader->setDownloadDir($dest);        $result = &$downloader->download(array($params[0]));        if (PEAR::isError($result)) {            return $result;        }        $pkgfile = &$result[0]->getPackageFile();        $pkgname = $pkgfile->getName();        $pkgversion = $pkgfile->getVersion();        // Unpacking -------------------------------------------------        $dest .= DIRECTORY_SEPARATOR . $pkgname;        $orig = $pkgname . '-' . $pkgversion;        $tar = &new Archive_Tar($pkgfile->getArchiveFile());        if (!@$tar->extractModify($dest, $orig)) {            return $this->raiseError('unable to unpack ' . $pkgfile->getArchiveFile());        }        $this->ui->outputData("Package ready at '$dest'");    // }}}    }    // }}}    function doRunScripts($command, $options, $params)    {        if (!isset($params[0])) {            return $this->raiseError('run-scripts expects 1 parameter: a package name');        }        $reg = &$this->config->getRegistry();        PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN);        $parsed = $reg->parsePackageName($params[0], $this->config->get('default_channel'));        PEAR::staticPopErrorHandling();        if (PEAR::isError($parsed)) {            return $this->raiseError($parsed);        }        $package = &$reg->getPackage($parsed['package'], $parsed['channel']);        if (is_object($package)) {            $package->setConfig($this->config);            $package->runPostinstallScripts();        } else {            return $this->raiseError('Could not retrieve package "' . $params[0] . '" from registry');        }        $this->ui->outputData('Install scripts complete', $command);        return true;    }}?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -