【问题标题】:How to install Nuget on Amazon Linux如何在 Amazon Linux 上安装 Nuget
【发布时间】:2017-05-14 05:41:30
【问题描述】:

我正在尝试在 Amazon Linux 映像上安装 Nuget。我的目标是对支持 .netcore 的 AWS .NET SDK 进行一些研究。

我已经尝试了三种(每次尝试都是新实例)主要安装方法。

1 - 安装 .netcore,然后从源代码编译 Nuget。

我按照here 的指示成功安装了 .netcore,尽管我修改了(我的更改以粗体显示)如何使用这些步骤对路径的更新进行持久化:

# sudo yum install libunwind libicu -y
# curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?LinkID=835019
# sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet
**# echo 'pathmunge /opt/dotnet' > /etc/profile.d/dotnetcore.sh**
**# chmod +x /etc/profile.d/dotnetcore.sh**
**# . /etc/profile**

然后我从这里https://github.com/NuGet/NuGet.Client 克隆了 Nuget 代码并运行 build.sh,它成功完成但没有创建带有 Nuget 可执行文件的工件子目录。此方法仅用于安装 NuGet CLI - 而不是包管理器 - 但两者均未安装。根据此站点,Linux 仅支持 CLI:https://docs.nuget.org/ndocs/guides/install-nuget(“NuGet CLI 是适用于 Windows、Mac OS X 和 Linux 的命令行实用程序,支持所有 NuGet 功能。”)

2 - 安装 Mono 并运行“yum install nuget”

我通过执行以下步骤成功安装了 Mono:

# sudo yum -y install cmake bison gettext glib2 freetype fontconfig libpng
         libpng-devel libX11 libX11-devel glib2-devel libexif glibc-devel 
         urw-fonts java       
         unzip gcc gcc-c++ automake autoconf libtool make bzip2 wget
# cd /usr/local/src
# sudo wget http://download.mono-project.com/sources/mono/mono-4.8.0.382.tar.bz2
# sudo tar jxf mono-4.8.0.382.tar.bz2
# cd mono-4.8.0
# sudo ./configure --prefix=/opt/mono
# sudo make 
# sudo make install

安装和测试 mono 后,我使用以下命令添加了一些存储库:

# rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF"
# yum-config-manager --add-repo http://download.mono-project.com/repo/centos/
# yum-config-manager --add-repo http://download.mono-project.com/repo/centos-nightly/

运行yum install nuget命令时收到依赖错误,结果:

Loaded plugins: priorities, update-motd, upgrade-helper
amzn-main/latest                                                                                                                      
amzn-updates/latest                                                                                                                   
Resolving Dependencies
--> Running transaction check
---> Package nuget.noarch 0:2.12+mono-0.xamarin.1 will be installed
--> Processing Dependency: mono(Microsoft.Build.Engine) = 4.0.0.0 for package: nuget-2.12+mono-0.xamarin.1.noarch
--> Processing Dependency: mono(System.ServiceModel) = 4.0.0.0 for package: nuget-2.12+mono-0.xamarin.1.noarch
--> Processing Dependency: mono(Microsoft.Build.Framework) = 4.0.0.0 for package: nuget-2.12+mono-0.xamarin.1.noarch
--> Processing Dependency: mono(System.Xml.Linq) = 4.0.0.0 for package: nuget-2.12+mono-0.xamarin.1.noarch
--> Processing Dependency: mono(System.Runtime.Serialization) = 4.0.0.0 for package: nuget-2.12+mono-0.xamarin.1.noarch
--> Processing Dependency: mono(WindowsBase) = 4.0.0.0 for package: nuget-2.12+mono-0.xamarin.1.noarch
--> Processing Dependency: mono(Microsoft.CSharp) = 4.0.0.0 for package: nuget-2.12+mono-0.xamarin.1.noarch
--> Processing Dependency: mono(System.ComponentModel.DataAnnotations) = 4.0.0.0 for package: nuget-2.12+mono-0.xamarin.1.noarch
--> Processing Dependency: mono(Microsoft.Build) = 4.0.0.0 for package: nuget-2.12+mono-0.xamarin.1.noarch
--> Processing Dependency: mono(System.Security) = 4.0.0.0 for package: nuget-2.12+mono-0.xamarin.1.noarch
--> Processing Dependency: mono(System.ComponentModel.Composition) = 4.0.0.0 for package: nuget-2.12+mono-0.xamarin.1.noarch
--> Processing Dependency: mono(mscorlib) = 4.0.0.0 for package: nuget-2.12+mono-0.xamarin.1.noarch
--> Processing Dependency: mono(System) = 4.0.0.0 for package: nuget-2.12+mono-0.xamarin.1.noarch
--> Processing Dependency: mono(System.Core) = 4.0.0.0 for package: nuget-2.12+mono-0.xamarin.1.noarch
--> Processing Dependency: mono(System.Xml) = 4.0.0.0 for package: nuget-2.12+mono-0.xamarin.1.noarch
--> Processing Dependency: mono(System.Data.Services.Client) = 4.0.0.0 for package: nuget-2.12+mono-0.xamarin.1.noarch
--> Running transaction check
---> Package mono-core.x86_64 0:4.9.0.1028-0.nightly.1 will be installed
--> Processing Dependency: mono(System.ServiceProcess) = 4.0.0.0 for package: mono-core-4.9.0.1028-0.nightly.1.x86_64
--> Processing Dependency: libgdiplus0 for package: mono-core-4.9.0.1028-0.nightly.1.x86_64
---> Package mono-data.x86_64 0:4.9.0.1028-0.nightly.1 will be installed
---> Package mono-devel.x86_64 0:4.9.0.1028-0.nightly.1 will be installed
--> Processing Dependency: mono-data-oracle = 4.9.0.1028 for package: mono-devel-4.9.0.1028-0.nightly.1.x86_64
--> Processing Dependency: mono-winforms = 4.9.0.1028 for package: mono-devel-4.9.0.1028-0.nightly.1.x86_64
--> Processing Dependency: libgdiplus-devel for package: mono-devel-4.9.0.1028-0.nightly.1.x86_64
--> Processing Dependency: libmonosgen-2.0.so.1()(64bit) for package: mono-devel-4.9.0.1028-0.nightly.1.x86_64
---> Package mono-wcf.x86_64 0:4.9.0.1028-0.nightly.1 will be installed
--> Processing Dependency: mono(System.Web.Extensions) = 4.0.0.0 for package: mono-wcf-4.9.0.1028-0.nightly.1.x86_64
---> Package mono-web.x86_64 0:4.9.0.1028-0.nightly.1 will be installed
--> Processing Dependency: mono(Mono.Data.Sqlite) = 4.0.0.0 for package: mono-web-4.9.0.1028-0.nightly.1.x86_64
---> Package mono-winfxcore.x86_64 0:4.9.0.1028-0.nightly.1 will be installed
--> Running transaction check
---> Package libgdiplus-devel.x86_64 0:3.12-1 will be installed
---> Package libgdiplus0.x86_64 0:3.12-1 will be installed
--> Processing Dependency: libpng15.so.15(PNG15_0)(64bit) for package: libgdiplus0-3.12-1.x86_64
--> Processing Dependency: libtiff.so.5(LIBTIFF_4.0)(64bit) for package: libgdiplus0-3.12-1.x86_64
--> Processing Dependency: libtiff.so.5()(64bit) for package: libgdiplus0-3.12-1.x86_64
--> Processing Dependency: libcairo.so.2()(64bit) for package: libgdiplus0-3.12-1.x86_64
--> Processing Dependency: libpng15.so.15()(64bit) for package: libgdiplus0-3.12-1.x86_64
---> Package libmonosgen-2_0-1.x86_64 0:4.9.0.1028-0.nightly.1 will be installed
---> Package mono-data-oracle.x86_64 0:4.9.0.1028-0.nightly.1 will be installed
---> Package mono-data-sqlite.x86_64 0:4.9.0.1028-0.nightly.1 will be installed
---> Package mono-extras.x86_64 0:4.9.0.1028-0.nightly.1 will be installed
---> Package mono-mvc.x86_64 0:4.9.0.1028-0.nightly.1 will be installed
---> Package mono-winforms.x86_64 0:4.9.0.1028-0.nightly.1 will be installed
--> Running transaction check
---> Package cairo.x86_64 0:1.12.14-6.8.amzn1 will be installed
--> Processing Dependency: libpixman-1.so.0()(64bit) for package: cairo-1.12.14-6.8.amzn1.x86_64
---> Package libgdiplus0.x86_64 0:3.12-1 will be installed
--> Processing Dependency: libpng15.so.15(PNG15_0)(64bit) for package: libgdiplus0-3.12-1.x86_64
--> Processing Dependency: libpng15.so.15()(64bit) for package: libgdiplus0-3.12-1.x86_64
---> Package libtiff.x86_64 0:4.0.3-25.27.amzn1 will be installed
--> Processing Dependency: libjbig.so.2.0()(64bit) for package: libtiff-4.0.3-25.27.amzn1.x86_64
--> Running transaction check
---> Package jbigkit-libs.x86_64 0:2.0-11.4.amzn1 will be installed
---> Package libgdiplus0.x86_64 0:3.12-1 will be installed
--> Processing Dependency: libpng15.so.15(PNG15_0)(64bit) for package: libgdiplus0-3.12-1.x86_64
--> Processing Dependency: libpng15.so.15()(64bit) for package: libgdiplus0-3.12-1.x86_64
---> Package pixman.x86_64 0:0.32.4-4.11.amzn1 will be installed
--> Finished Dependency Resolution
**Error: Package: libgdiplus0-3.12-1.x86_64 (download.mono-project.com_repo_centos_)**
       **Requires: libpng15.so.15()(64bit)**
**Error: Package: libgdiplus0-3.12-1.x86_64 (download.mono-project.com_repo_centos_)**
       **Requires: libpng15.so.15(PNG15_0)(64bit)**
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest

我尝试使用 --skip-broken 命令重新安装,但 nuget 没有安装。

此时我尝试通过从此处http://www.libpng.org/pub/png/libpng.html构建最新的 Libpng 代码来手动更新 Libpng 包

此时我开始达到我 linux 能力的极限。我能够成功地构建 libpng 与

./configure
make
make install

但我不确定更新的库或者我现在是否有两个版本的 libpng。我不确定如何查看 Yum 正在使用哪个版本。

3 - 安装 .net core 然后运行“yum install nuget”

我得到了与尝试 #2 完全相同的错误。

【问题讨论】:

  • 如果您使用 .NET Core,那么 dotnet restore 是包装 NuGet 还原操作的方式。如果您使用 Mono,请停止从源代码构建,因为您还不知道它是如何工作的。 Mono 项目主页清楚地显示了如何从 Xamarin repo 安装二进制文件,但您需要找到一台干净的机器才能在此阶段开始。

标签: amazon-ec2 mono nuget .net-core libpng


【解决方案1】:

刚遇到同样的问题,可以通过手动安装libpng来解决。如果你现在在同一个环境,首先删除当前的libpng

yum remove libpng

之后你可以这样做:

mkdir -p /tmp/dependencies
cd /tmp/dependencies
wget https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/Packages/l/libpng15-1.5.28-2.fc26.x86_64.rpm
yum install -y libpng15-1.5.28-2.fc26.x86_64.rpm
yum install -y yum-utils
rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF"
yum-config-manager --add-repo http://download.mono-project.com/repo/centos/
yum clean all
yum makecache
yum install -y mono-complete nuget
cd
rm -rf /tmp/dependencies

注意:确保您的机器上还有enabled EPEL

也可能是你没有清除yum缓存依赖导致没有成功。

【讨论】:

    猜你喜欢
    • 2017-09-04
    • 2016-03-18
    • 1970-01-01
    • 2015-02-05
    • 2017-04-02
    • 2014-09-19
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多