Ruby on Rails网站建议在Linux下从源代码安装Ruby.我在Ubuntu 9的干净安装中遇到了一些从源代码构建ruby的C库问题.
我在网上发现的关于在Ubuntu上安装ruby的所有说明都涉及使用预先打包的(.deb-based)ruby.显然,这不是铁人们推荐的.
当我做了一个干净的ruby源代码构建时,我发现Rubygems无法安装,因为zlib扩展不起作用.
出现两个问题:
1)没有构建zlib扩展.
解:
i)确保在ruby源的extn目录中的Setup文件中取消注释zlib,并且
ii)确保安装了这些zlib ubuntu软件包:
aptitude install zlib1g
aptitude install zlib1g-dbg
aptitude install zlib1g-dev
aptitude install zlibc
Run Code Online (Sandbox Code Playgroud)
2)在修复上面的问题1(并进行ruby的干净重建)之后,zlib仍然无法正常工作,因为扩展无法加载.
您可以通过运行此命令并输出"false"来查看模块无法加载:
puts require 'zlib'
Run Code Online (Sandbox Code Playgroud)
我观察到这发生在extn目录中的任何其他C扩展中,因此对于这些扩展而言似乎是一个更普遍的问题,而不仅仅是zlib特有的.
总结一下:
有没有办法可以找出模块无法加载的原因?某种痕迹/详细模式?
我必须在我的centos服务器上安装python的mysqldb模块.我有2个版本的python
我想为2.6版本的python安装mysqldb模块.我从这里安装它,但当我在线
python2.6 setup.py install
Run Code Online (Sandbox Code Playgroud)
它说
Traceback (most recent call last):
File "setup.py", line 5, in <module>
from setuptools import setup, Extension
ImportError: No module named setuptools
Run Code Online (Sandbox Code Playgroud)
所以我从这里开始安装设置工具.使用命令
setuptools-0.6c11-py2.6.egg
Run Code Online (Sandbox Code Playgroud)
因为我安装了2.6 python所以我安装了这个rpm.但是当我执行这个命令时,它说
Traceback (most recent call last):
File "<string>", line 1, in <module>
zipimport.ZipImportError: can't decompress data; zlib not available
Run Code Online (Sandbox Code Playgroud)
但是当我找到命令时,我确实找到了为zlib安装的包和rpm.
/usr/share/doc/zlib-1.2.3
/usr/share/doc/zlib-1.2.3/README
/var/cache/yum/base/packages/zlib-devel-1.2.3-4.el5.x86_64.rpm
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我.我确实想为我安装的python 2.6安装mysqldb模块
/usr/local/bin/
Run Code Online (Sandbox Code Playgroud)
目录.
任何帮助或想法将受到高度赞赏.
我有数GB的数据,用gzip压缩存储会很好.gnuplot可以打开压缩文件吗?如果它不能,有没有办法将数据传递给gnuplot,以便不需要将未压缩的文件写入磁盘?
我正在尝试按照本指南在我的UK2共享主机服务器上安装git:
http://www.randallkent.com/development/install-git-on-a-cpanel-shared-hosting-account
当我收到以下错误时,我已经完成了最后几步'make'和'make install':
config.status: executing config.mak.autogen commands
* new build flags
CC credential-store.o
In file included from credential-store.c:1:
cache.h:19:18: warning: zlib.h: No such file or directory
In file included from credential-store.c:1:
cache.h:21: error: expected specifier-qualifier-list before ‘z_stream’
make: *** [credential-store.o] Error 1
Run Code Online (Sandbox Code Playgroud)
我的托管服务提供商为我启用了zlib压缩,但我仍然无法安装git.
是否有我遗漏的东西或在我的托管服务器上不可能?
非常感谢
我正在尝试使用[http://www.zlib.net/]的minzip包装来压缩文件夹.只要文件名是英文,它就可以正常工作.有没有人试图修改minizip来支持unicode?
修改后的代码发布在下面.问题在于这个函数,第二个参数将const char*作为输入.当我进行转换时,它会丢失数据,文件名也不一样.
例如:中文 - 统一码.txt成为zip中的中文-t +ƒS+Çtáü.txt.
err = zipOpenNewFileInZip3_64( zf,outstr.c_str(),&zi,
NULL,0,NULL,0,NULL /* comment*/,
(opt_compress_level != 0) ? Z_DEFLATED : 0,
opt_compress_level,0,
/* -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, */
-MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY,
password,crcFile, zip64);
minizip.c
Version 1.1, February 14h, 2010
sample part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
Modifications of Unzip for Zip64
Copyright (C) 2007-2008 Even Rouault
Modifications for Zip64 support on both zip and unzip
Copyright (C) 2009-2010 Mathias …Run Code Online (Sandbox Code Playgroud) 我尝试通过使用cgo从golang调用c zlib来修复golang最慢的zip实现
但是我收到了一个错误
错误:'deflateInit'未声明(首次使用此功能)
deflateInit在zlib.h中定义
我错过了什么吗?谢谢你的任何提示.
package main
/*
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include "zlib.h"
*/
import "C"
import (
"fmt"
)
func main() {
fmt.Println("hmmm....")
fmt.Println(int(C.random()))
var strm C.struct_z_stream
fmt.Println(strm)
ret := C.deflateInit(&strm, 5) // trouble here
}
Run Code Online (Sandbox Code Playgroud) 我正在使用QuaZip库,它具有zlib依赖性.我想在Archlinux和Windows 7下编译我的CMake托管应用程序,我已经安装了Qt 5.3.0.
在Linux上:
我在这里读到" 如何将zlib添加到现有的qt安装 ",zlib是Qt安装的原生部分.但是在archlinux中没有这样的目录.因为我搜索了所有其他Qt包含目录,包括QtCore,但没有zlib的迹象.另一方面,zlib的系统安装可以通过FindZLIB.cmake模块在archlinux上找到.
在Windows上:
在Qt的Windows安装中,Qt include目录中有QtZlib文件夹,因此可以包含它.不过,编译器总是抱怨他无法从库链接zlib函数,错误日志在这里.我还尝试通过TARGET_LINK_LIBRARIES手动设置外部zlib库,但没有成功.
有没有人使用CMake在Qt5下连接Zlib?
我需要Windows和Ubuntu之间的跨平台压缩/解压缩.据我所知,从.NET 4.5开始,类DeflateStream使用zlib作为压缩库.我编写了两个小的测试程序来压缩数据,一个在C#上运行在Windows上,另一个在'C'上运行在Ubuntu上..NET平台是4.5.2.
C#代码正在使用CompressionLevel.Optimal
C代码使用Z_BEST_COMPRESSION
结果如下:
Input bytes: {9, 12, 13}
C# output: {227, 228, 225, 5, 0};
C output: {120, 218, 227, 228, 225, 5, 0, 0, 67, 0, 35}
Run Code Online (Sandbox Code Playgroud)
如您所见,C#中压缩数据的长度为5个字节,其中C为11个字节.似乎'C'zlib在页眉中添加2个额外字节,在页脚中添加4个额外字节.
如果需要,我可以共享代码.但是,它取自您在网上看到的标准示例,并且代码没有任何特殊之处.
我错过了什么吗?有办法解决吗?如果页眉和页脚总是保持不变,也许我总是可以添加额外的字节.问候.
我正在努力完成一项非常简单的任务,但我有点困惑,并坚持在nodejs中使用zlib.我正在构建功能,包括我从aws S3下载文件gziped,解压缩并逐行读取.我想用流完成所有这些,因为我相信它可以在nodejs中完成.
这是我目前的代码库:
//downloading zipped file from aws s3:
//params are configured correctly to access my aws s3 bucket and file
s3.getObject(params, function(err, data) {
if (err) {
console.log(err);
} else {
//trying to unzip received stream:
//data.Body is a buffer from s3
zlib.gunzip(data.Body, function(err, unzippedStream) {
if (err) {
console.log(err);
} else {
//reading line by line unzziped stream:
var lineReader = readline.createInterface({
input: unzippedStream
});
lineReader.on('line', function(lines) {
console.log(lines);
});
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
我收到一个错误说:
readline.js:113
input.on('data', ondata); …Run Code Online (Sandbox Code Playgroud) 我目前在玩zlib。
通常的示例大致如下(C / C ++伪代码)
z_stream zs;
memset(&zs, 0, sizeof(zs));
if (deflateInit(&zs, Z_DEFAULT_COMPRESSION) != Z_OK)
return false;
zs.next_in = input_data;
zs.avail_in = input_size;
zs.next_out = output_data;
zs.avail_out = output_size;
int result = deflate(&zs, Z_FINISH);
deflateEnd(&zs);
return result == Z_STREAM_END ? true : false;
Run Code Online (Sandbox Code Playgroud)
使用valgrind时,我看到deflateInit和memset并不是完全“免费”的操作,但是需要花费大量时间。
我的问题是,我可以重用z_stream和deflateInit?
例如,是否可以仅通过更新缓冲区多次放气?