Каждый скрипт PowerShell полностью разбирается до того, как будет выполнен первый оператор в скрипте. Неразрешимый токен имени типа внутри определения класса считается ошибкой синтаксического анализа. Чтобы решить вашу проблему, вам необходимо загрузить свои типы до того, как будет проанализировано определение класса, поэтому определение класса должно быть в отдельном файле. Например:
Main.ps1:
Add-Type -AssemblyName System.Printing
Add-Type -AssemblyName ReachFramework
. $PSScriptRoot\Class.ps1
Class.ps1:
using namespace System.Management
using namespace System.Printing
Class PrinterObject
{
[string]$Name
[PrintServer]$Server
[PrintQueue]$Queue
[PrintTicket]$Ticket
[ManagementObject]$Unit
[bool]$IsDefault
}
Другая возможность была бы вставлять Class.ps1
в виде строки и используйте Invoke-Expression
для его выполнения. Это задержит парсинг определения класса до времени, в котором доступны типы.
Add-Type -AssemblyName System.Printing
Add-Type -AssemblyName ReachFramework
Invoke-Expression @‘
using namespace System.Management
using namespace System.Printing
Class PrinterObject
{
[string]$Name
[PrintServer]$Server
[PrintQueue]$Queue
[PrintTicket]$Ticket
[ManagementObject]$Unit
[bool]$IsDefault
}
’@
Это не так хорошо задокументировано (например, мне не удалось найти его ни в «Расширении R», ни в «Администраторе R»), но Брайан Рипли упомянул его несколько раз в списках.
Обычно во время компиляции R настройки регистрируются и сохраняются в $ R_HOME / etc / Makeconf
. Одна из возможностей - отредактировать этот файл напрямую, но у вас может не быть прав root или вы не хотите влиять на всех других пользователей. Так что, возможно, лучше создать
~/.R/Makevars
с записями
CC=gcc-4.4
CXX=g++-4.4
плюс любые флаги оптимизации и т.д., которые вы хотите установить. Это повлияет на все последующие использования R CMD INSTALL
или R CMD check
или ... которые вы запускаете.
Другие файлы в $ R_HOME / etc /
можно аналогичным образом переопределить локально из ~ / .R /
.
Взгляд configure.args
часть ?install.packages
и сравнивает это с ./configure --help
на, например, r исходное дерево.
Вы можете также, от удара, CC=clang R CMD INSTALL /path/to/package/source
.
HTH
Проверьте свой путь, чтобы убедиться, что / usr / local / bin предшествует / usr / bin. Если это так, просто убедитесь, что первым идет / usr / bin:
PATH=/usr/bin:${PATH}
(ничего страшного, если / usr / bin появится дважды).