Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 4

0
votes
answers
85 views
+10

如何創建一個簡單的驅動程序? [Ubuntu]

-2

這個想法是創建一個可以通過設備進行通信的驅動程序和用戶應用程序。如何創建一個簡單的驅動程序? [Ubuntu]

當我編譯模塊時,將它附加到內核並創建設備,我沒有得到任何錯誤,但是當我啓動用戶應用程序時,它崩潰了。另外,在崩潰之後,我的電腦變慢了,有時甚至需要重啓我的系統。 我也讀過內核日誌文件,發現這個錯誤:[ 336.741386] BUG: unable to handle kernel NULL pointer dereference at (null)

你能告訴我,如果我的代碼有問題嗎?

驅動程序代碼:

#include <linux/kernel.h> 
#include <linux/module.h> 
#include <linux/fs.h>   // Allows to open/read/write/execute a device 
#include <linux/cdev.h>   // Char driver; makes cdev available 
#include <linux/semaphore.h> // Used to access semaphores; used for synchronization for avoiding crashes 
#include <asm/uaccess.h>  // Copy_to_user;copy_from_user 

struct fake_device{ 
    char data[100]; 
    struct semaphore sem; 
}virtual_device; 

struct cdev *mcdev;  // My Char device driver 
int major_number; 
int ret; 

dev_t dev_num; 

#define DEVICE_NAME "looperdevice" 

int device_open(struct inode *inode, struct file *filp){ 
    if(down_interruptible(&virtual_device.sem) != 0){ 
     printk(KERN_ALERT "looperdevice: could not lock device during open"); 
     return -1; 
    } 
    printk(KERN_INFO "looperdevice: opened device"); 
    return 0; 

} 
ssize_t device_read(struct file* filp, char* bufStoreData, size_t bufCount, loff_t* curOffset){ 
    printk(KERN_INFO "looperdevice: Reading from device"); 
    ret = copy_to_user(bufStoreData, virtual_device.data, bufCount); 
    return ret; 
} 

ssize_t device_write(struct file* filp, const char* bufSourceData, size_t bufCount, loff_t* curOffset){ 
    printk(KERN_INFO "looperdevice: Writing to device"); 
    ret = copy_from_user(virtual_device.data, bufSourceData, bufCount); 
    return ret; 
} 

int device_close(struct inode *inode, struct file *filp){ 
    printk(KERN_INFO "looperdevice: Closing device"); 
    up(&virtual_device.sem); // Set semaphore up 
    return 0; 
} 


struct file_operations fops = { 
    .owner = THIS_MODULE, 
    .open = device_open, 
    .release = device_close, 
    .write = device_write, 
    .read = device_read 
}; 

static int driver_entry(void){ 
    /* 
    Register our device in the system 
    alloc_chrdev_region(dev_t*, uint fminor, uint count, char* name) 
    */ 
    ret = alloc_chrdev_region(&dev_num, 0, 1, DEVICE_NAME); // Will store minor and max number into dev_num, for future extraction 
    if (ret < 0){ 
     printk(KERN_ALERT "looperdevice: failed to allocate a major number"); 
     return ret; 
    } 
    // Extracting major number 
    major_number = MAJOR(dev_num); 
    printk(KERN_INFO "looperdevice: major_number extracted, %d", major_number); 
    printk(KERN_INFO "	use "mknod /dev/%s c %d 0" for device file",DEVICE_NAME, major_number); 

    mcdev = cdev_alloc(); // Create our cdev structure already initializated 
    mcdev->ops = &fops;  // struct file operations 
    mcdev->owner = THIS_MODULE; 
    // Now that we created the cdev we have to add it to the kernel 
    // int cdev_add(struct cdev* dev, dev_t num, unsigned int count) 
    ret = cdev_add(mcdev, dev_num, 1); 
    if (ret < 0){ 
     printk(KERN_ALERT "looperdevice: unable to add cdev to kernel"); 
     return ret; 

    } 
    // Initialize our semaphore 
    sema_init(&virtual_device.sem, 1); 

    return 0; 
} 
static void driver_exit(void){ 
    cdev_del(mcdev); 
    unregister_chrdev_region(dev_num,1); 
    printk(KERN_ALERT "looperdevice: Unloaded module"); 

} 

module_init(driver_entry); 
module_exit(driver_exit); 

用戶應用代碼:

#include <stdio.h> 
#include <stdlib.h> 
#include <fcntl.h> 

#define DEVICE "/dev/looperdevice" 

int main(){ 
    int i, fd, ch; 
    char write_buf[100], read_buf[100]; 
    fd = open(DEVICE, O_RDWR); 
    if (fd == -1){ 
     printf("file %s either does not exist or has been locked by another process
", DEVICE); 
     exit(-1); 
    } 
    printf("Looper application v0.1 Beta
"); 
    while (ch != 3){ 
     printf("--------------MENU-------------
"); 
     printf("1. Read from device
2. Write to device
3. Exit"); 
     printf("Choose an option: "); 
     scanf("%d", &ch); 
     switch(ch){ 
      case 1: 
       // reading from device 
       read(fd, read_buf, sizeof(read_buf)); 
       printf("DEVICE: %s
", read_buf); 
       break; 
      case 2: 
       // Writing to device 
       printf("Enter Data: "); 
       gets(write_buf); 
       write(fd, write_buf, sizeof(write_buf)); 
       break; 
      case 3: 
       exit(0); 
       break; 
      default: 
       printf("Invalid option
"); 
       break; 
     } 
    } 
    return 0; 
} 

內核日誌文件:

[ 321.242532] driver: module license 'unspecified' taints kernel. 
[ 321.242534] Disabling lock debugging due to kernel taint 
[ 321.243024] looperdevice: major_number extracted, 241 
[ 321.243026] use "mknod /dev/looperdevice c 241 0" for device file 
[ 321.243028] looperdevice: unable to add cdev to kernel 
[ 336.741386] BUG: unable to handle kernel NULL pointer dereference at           (null) 
[ 336.741524] IP: __down_interruptible+0x51/0xf0 
[ 336.741563] PGD a3279067 
[ 336.741564] PUD a3278067 
[ 336.741589] PMD 0 

[ 336.741650] Oops: 0002 [#1] SMP 
[ 336.741680] Modules linked in: driver(POE) ccm bnep pci_stub vboxpci(OE) vboxnetadp(OE) vboxnetflt(OE) vboxdrv(OE) dm_crypt dell_wmi sparse_keymap uvcvideo videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_core videodev media dell_laptop dell_smbios btusb dcdbas btrtl btbcm btintel dell_smm_hwmon bluetooth arc4 iwldvm mac80211 intel_rapl x86_pkg_temp_thermal intel_powerclamp snd_hda_codec_hdmi coretemp kvm_intel kvm irqbypass crct10dif_pclmul crc32_pclmul ghash_clmulni_intel pcbc snd_hda_codec_idt snd_hda_codec_generic aesni_intel aes_x86_64 crypto_simd glue_helper cryptd intel_cstate intel_rapl_perf snd_hda_intel snd_hda_codec snd_hda_core snd_hwdep snd_pcm input_leds snd_seq_midi joydev snd_seq_midi_event serio_raw snd_rawmidi snd_seq binfmt_misc iwlwifi snd_seq_device snd_timer cfg80211 
[ 336.742291] lpc_ich shpchp snd mei_me soundcore mei wmi dell_smo8800 mac_hid dell_rbtn parport_pc ppdev lp parport autofs4 hid_generic usbhid hid i915 ahci libahci psmouse i2c_algo_bit drm_kms_helper sdhci_pci sdhci syscopyarea sysfillrect e1000e sysimgblt fb_sys_fops drm ptp pps_core fjes video 
[ 336.742530] CPU: 2 PID: 3578 Comm: app Tainted: P   OE 4.10.0-37-generiC#41~16.04.1-Ubuntu 
[ 336.742607] Hardware name: Dell Inc. Latitude E5430 vPro/0NVFXC, BIOS A16 08/19/2015 
[ 336.742673] task: ffff96ace1e08000 task.stack: ffffb4d500b68000 
[ 336.742727] RIP: 0010:__down_interruptible+0x51/0xf0 
[ 336.742771] RSP: 0018:ffffb4d500b6bba0 EFLAGS: 00010046 
[ 336.742817] RAX: 0000000000000000 RBX: ffffffffc0be84c8 RCX: 0000000000000002 
[ 336.742878] RDX: ffffffffc0be84d0 RSI: 0000000000000292 RDI: ffffffffc0be84c8 
[ 336.742938] RBP: ffffb4d500b6bbe8 R08: 0000000000000000 R09: 0000000000000000 
[ 336.742998] R10: 00000000000000f1 R11: ffff96acaa4d6338 R12: 7fffffffffffffff 
[ 336.743058] R13: ffff96ace1e08000 R14: ffff96ace294eb00 R15: ffffffffaf9c5c80 
[ 336.743120] FS: 00007fadeade0700(0000) GS:ffff96ad5e300000(0000) knlGS:0000000000000000 
[ 336.743188] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 
[ 336.743237] CR2: 0000000000000000 CR3: 00000000a337a000 CR4: 00000000001406e0 
[ 336.743298] Call Trace: 
[ 336.743329] ? exact_lock+0x11/0x20 
[ 336.743363] down_interruptible+0x4b/0x60 
[ 336.743403] device_open+0x15/0x30 [driver] 
[ 336.743442] chrdev_open+0xbf/0x1b0 
[ 336.743477] do_dentry_open+0x208/0x310 
[ 336.743514] ? cdev_put+0x30/0x30 
[ 336.743548] vfs_open+0x4c/0x70 
[ 336.743581] ? may_open+0x9b/0x100 
[ 336.743620] path_openat+0x2ac/0x1430 
[ 336.743660] ? page_add_file_rmap+0x58/0x140 
[ 336.743702] do_filp_open+0x91/0x100 
[ 336.743738] ? __alloc_fd+0x46/0x170 
[ 336.743774] do_sys_open+0x12d/0x280 
[ 336.743809] SyS_open+0x1e/0x20 
[ 336.743841] entry_SYSCALL_64_fastpath+0x1e/0xad 
[ 336.743883] RIP: 0033:0x7fadea912010 
[ 336.743916] RSP: 002b:00007ffcf9ce3238 EFLAGS: 00000246 ORIG_RAX: 0000000000000002 
[ 336.743982] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fadea912010 
[ 336.744042] RDX: 00007ffcf9ce3428 RSI: 0000000000000002 RDI: 00000000004009b8 
[ 336.746348] RBP: 00007ffcf9ce3330 R08: 00000000004009a0 R09: 00007fadeabf5ab0 
[ 336.748583] R10: 000000000000069d R11: 0000000000000246 R12: 00000000004006b0 
[ 336.750831] R13: 00007ffcf9ce3410 R14: 0000000000000000 R15: 0000000000000000 
[ 336.753533] Code: 00 00 48 83 e4 f0 48 83 ec 30 65 48 8b 04 25 28 00 00 00 48 89 44 24 28 31 c0 48 8b 47 10 48 89 14 24 48 89 67 10 48 89 44 24 08 <48> 89 20 4c 89 6c 24 10 c6 44 24 18 00 eb 38 4d 85 e4 7e 52 49 
[ 336.758651] RIP: __down_interruptible+0x51/0xf0 RSP: ffffb4d500b6bba0 
[ 336.761183] CR2: 0000000000000000 
[ 336.775501] ---[ end trace 3fcbe3000944b329 ]--- 

我希望你能幫助我:)

+1

'當我編譯模塊,將其連接到內核和創建設備,我沒有得到任何error' - 根據日誌,你**將模塊加載到內核時出現錯誤**:'looperdevice:無法將cdev添加到內核'。根據驅動程序的代碼,模塊的加載應該被取消(因爲返回負值),所以進一步的「BUG」看起來可疑。 – Tsyvarev

沙发
0
0

解決方案是添加模塊蝨子NSE:

MODULE_LICENSE("GPL"); 

謝謝:)

0
votes
answers
44 views
+10

Ubuntu如何將多個文本文件合併到一個終端中

0

我想將多個文本文件合併成一個文本文件。是否有任何命令在Ubuntu終端做到這一點,或者我必須手動做?Ubuntu如何將多個文本文件合併到一個終端中

+1

可能重複[在linux中使用bash腳本合併兩個文本文件](https://stackoverflow.com/questions/45368766/merge-two-text-files-using-bash-scripts-in-linux) –

沙发
0
0

嘗試cat

cat file1 file2 file3 > outputFile 

cat代表串聯。

>用於output redirection

如果outputFile中已經存在的東西,你要追加到它的其它文件的內容,使用

cat file1 file2 file3 >> outputFile 

>,如果它已經存在將刪掉的outputFile舊的內容。

看一看here以及。

+1

感謝你非常不知道這很容易 –

0
votes
answers
50 views
+10

「mkdir || echo && exit」即使mkdir成功退出

0

mkdir $ 2 ||回聲「我無法創建目錄$ 2」 & &出口8「mkdir || echo && exit」即使mkdir成功退出

大家好,這是我在這裏的第一篇文章,所以要善良。

我正在製作一個腳本,現在這條線困擾着我。

只有在無法創建目錄$ 2時纔會出現8號出口。 運行腳本併成功創建該目錄後,它仍然在8上退出。

我錯過了什麼嗎?我認爲只有在左側出現錯誤時,「||」後面的命令纔會發生。

我是Linux界的新手,作爲一個具有中小C經驗的人,我很困惑,幫忙! (使用Ubuntu,慶典,順便說一句)

+2

我認爲這是因爲運營商的優先。你可以放圓括號。如果mkdir失敗,則執行echo並返回true,以便執行第三個命令。也許你可以使用括號 – fernand0

+2

他是來自Unix和Linux SE的答案:https://unix.stackexchange.com/questions/88850/precedence-of-the-shell-logical-operators –

沙发
0
4

正如@ fernand0建議,問題是||&&符的優先級。您希望它運行類似mkdir || (echo && exit)的東西 - 即,如果mkdir失敗,則運行echo && exit部件。但是它實際上做的是運行類似(mkdir || echo) && exit的東西 - 也就是說,如果mkdirecho命令成功,它將運行exit部件。 echo幾乎總會成功,所以它幾乎總是會退出。

因此,您需要明確地對命令進行分組,以覆蓋此優先級。但不要使用(),因爲它在子shell中運行其內容,並且exit將僅僅退出子shell,而不是主腳本;您可以改爲使用{ },也可以使用明確的if塊。另外,您實際上不需要echo && exit,因爲只有在echo命令成功時才運行exitecho幾乎總是成功,但在罕見的情況下,它失敗了,我敢肯定你想腳本退出。

當我需要做這樣的事情在腳本中,我通常使用這個成語:

mkdir "$2" || { 
    echo "I can't create directory $2" >&2 
    exit 8 
} 

(注:如@CharlesDuffy建議,我加了周圍$2雙引號 - 雙引號變量如果它們包含任何空格,通配符等,引用幾乎總是一個好主意。我也送錯誤消息到標準錯誤(>&2),而不是標準輸出,這也是通常一個更好的方式來做事)

如果你想成爲更簡潔,你可以把它全部在一行。

mkdir "$2" || { echo "I can't create directory $2" >&2; exit 8; } 

注意,最終;(或換行)的}之前需要,或shell認爲}只是一個參數exit。你也可以去其他的方式,並使用一個明確的if塊:

if ! mkdir "$2"; then 
    echo "I can't create directory $2" >&2 
    exit 8 
fi 

這個選項是一樣聰明,簡潔的,但是這是一件好事 - 巧妙而簡潔的到底是什麼造成了首位這個問題;清晰明確的代碼更好。

+0

@CharlesDuffy完成! –

+0

你知道我有多愛你嗎?另外,你能幫我解決這個問題:> var = $(file -b $ 1 | grep「ISO」) 我在腳本中有這一行。如果文件失敗(例如:當沒有參數時),我收到一條關於它的用法的巨大錯誤消息。如何使用2>將該錯誤消息發送到/ dev/null?我嘗試了幾個選項,但都沒有工作。 – NuSuntStudent

+0

@NuSuntStudent你需要重定向打印錯誤命令的stderr,所以'var = $(file -b「$ 1」2>/dev/null | grep「ISO」)''。請注意,我還在'$ 1'周圍添加了雙引號,這會將錯誤消息更改爲關於未找到沒有名稱的文件。我建議在腳本的開頭添加腳本參數的健全性檢查(例如'if [-z「$ 1」];然後echo「Usage:...」>&2; exit 1; fi')。這允許您給出一個描述性錯誤,而不是用戶必須從腳本的哪些部分失敗中找出哪些問題。 –

板凳
0
-1

嘗試:

mkdir $1 
if [ $? -ne 0 ] ; then 
    echo "I can't create directory $1" 
    exit 8 
fi 
+1

這裏的降價引擎不是Github-flavored - 三重引號不會創建塊。在選擇多行代碼區域時,使用編輯器中的「{}」按鈕創建的四格縮進。 –

+1

不必要地測試'$?'是不好的形式。更好地寫'如果! mkdir「$ 1」;那麼' - 這樣,額外的日誌記錄或其他代碼更改就無法將您想要測試的操作與檢查本身解耦。 –

地板
0
1

||&&沒有你習慣於在其他語言的優先級。沒有語法化,它相當於(a || b) && c(嚴格爲從左到右),而不是a || (b && c)(其中&&||具有更高的優先級)。將命令與||&&混合在一起並不是一個好主意;而是使用if語句。

if ! mkdir "$2"; then 
    echo "I can't create directory $2" >&2 
    exit 8 
fi 

如果你真的想用列表的運營商,使用{ ... }到組適當的命令。

mkdir "$2" || { echo "I can't create directory $2" >&2; exit 8; } 
+2

'echo && exit'是不好的形式 - 如果'echo'失敗,我們真的想避免退出嗎?這應該是'mkdir「$ 2」|| {echo「...」>&2; 8號出口; }' –

+0

同意,雖然如果簡單的'echo'失敗了,你可能有更大的問題需要解決。 – chepner

0
votes
answers
43 views
+10

在Ubuntu下爲Go安裝tensorflow錯誤17.10

0

我按照以下步驟安裝了用於Go的tensorflow,沒有錯誤信息顯示。在Ubuntu下爲Go安裝tensorflow錯誤17.10

TF_TYPE="cpu" # Change to "gpu" for GPU support 
TARGET_DIRECTORY='/usr/local' 
curl -L  
    "https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-${TF_TYPE}-$(go env GOOS)-x86_64-1.4.0.tar.gz" | 
sudo tar -C $TARGET_DIRECTORY -xz 

sudo ldconfig 
go get github.com/tensorflow/tensorflow/tensorflow/go 

但測試失敗,go test github.com/tensorflow/tensorflow/tensorflow/go,有錯誤消息。

2017-11-18 06:25:59.874418: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX 
2017-11-18 06:25:59.877032: F tensorflow/core/framework/tensor.cc:822] Unexpected type: 23 
SIGABRT: abort 
PC=0x7f6c4afd70bb m=7 sigcode=18446744073709551610 
signal arrived during cgo execution 

goroutine 24 [syscall, locked to thread]: 
runtime.cgocall(0x656610, 0xc4200439c8, 0xc4200439f0) 
    /home/qcg/share/go/src/runtime/cgocall.go:132 +0xe4 fp=0xc420043998 sp=0xc420043958 pc=0x405434 
github.com/tensorflow/tensorflow/tensorflow/go._Cfunc_TF_SetAttrTensor(0x7f6c24003c10, 0x7f6c2400e060, 0x7f6c2400e250, 0x7f6c2400e1f0) 
    github.com/tensorflow/tensorflow/tensorflow/go/_test/_obj_test/_cgo_gotypes.go:890 +0x45 fp=0xc4200439c8 sp=0xc420043998 pc=0x52cb25 
github.com/tensorflow/tensorflow/tensorflow/go.setAttr.func18(0x7f6c24003c10, 0x7f6c2400e060, 0x7f6c2400e250, 0x7f6c2400e1f0) 
    /home/qcg/share/g/src/github.com/tensorflow/tensorflow/tensorflow/go/graph.go:273 +0xec fp=0xc420043a00 sp=0xc4200439c8 pc=0x538d0c 
github.com/tensorflow/tensorflow/tensorflow/go.setAttr(0x7f6c24003c10, 0xc42000e0c0, 0x6ef103, 0x5, 0x6b60c0, 0xc4200e2440, 0x0, 0x0) 
    /home/qcg/share/g/src/github.com/tensorflow/tensorflow/tensorflow/go/graph.go:273 +0x11b9 fp=0xc420043c00 sp=0xc420043a00 pc=0x52f759 
github.com/tensorflow/tensorflow/tensorflow/go.(*Graph).AddOperation(0xc42000e080, 0x6eef64, 0x5, 0xc42001a8d0, 0x6, 0x0, 0x0, 0x0, 0xc42007af00, 0x4b36cb, ...) 
    /home/qcg/share/g/src/github.com/tensorflow/tensorflow/tensorflow/go/graph.go:176 +0x4a0 fp=0xc420043d60 sp=0xc420043c00 pc=0x52e3a0 
github.com/tensorflow/tensorflow/tensorflow/go.Const(0xc42000e080, 0xc42001a8d0, 0x6, 0x6827a0, 0xc4200e22c0, 0xc42001a8d0, 0x6, 0x4d463d, 0x7aaad0) 
    /home/qcg/share/g/src/github.com/tensorflow/tensorflow/tensorflow/go/util_test.go:38 +0x221 fp=0xc420043e38 sp=0xc420043d60 pc=0x529d41 
github.com/tensorflow/tensorflow/tensorflow/go.TestOutputDataTypeAndShape.func1(0xc4200fa780) 
    /home/qcg/share/g/src/github.com/tensorflow/tensorflow/tensorflow/go/operation_test.go:137 +0x11e fp=0xc420043fa8 sp=0xc420043e38 pc=0x53619e 
testing.tRunner(0xc4200fa780, 0xc4200e2400) 
    /home/qcg/share/go/src/testing/testing.go:746 +0xd0 fp=0xc420043fd0 sp=0xc420043fa8 pc=0x4d46e0 
runtime.goexit() 
    /home/qcg/share/go/src/runtime/asm_amd64.s:2337 +0x1 fp=0xc420043fd8 sp=0xc420043fd0 pc=0x45f831 
created by testing.(*T).Run 
    /home/qcg/share/go/src/testing/testing.go:789 +0x2de 

goroutine 1 [chan receive]: 
testing.(*T).Run(0xc4200fa000, 0x6f51c9, 0x1a, 0x702600, 0x47b201) 
    /home/qcg/share/go/src/testing/testing.go:790 +0x2fc 
testing.runTests.func1(0xc4200fa000) 
    /home/qcg/share/go/src/testing/testing.go:1004 +0x64 
testing.tRunner(0xc4200fa000, 0xc420053de0) 
    /home/qcg/share/go/src/testing/testing.go:746 +0xd0 
testing.runTests(0xc4200e2220, 0xa413c0, 0x11, 0x11, 0xc420053e78) 
    /home/qcg/share/go/src/testing/testing.go:1002 +0x2d8 
testing.(*M).Run(0xc420053f18, 0xc420053f70) 
    /home/qcg/share/go/src/testing/testing.go:921 +0x111 
main.main() 
    github.com/tensorflow/tensorflow/tensorflow/go/_test/_testmain.go:82 +0xdb 

goroutine 20 [chan receive]: 
testing.(*T).Run(0xc4200fa3c0, 0xc420014860, 0x13, 0xc4200e2400, 0x2) 
    /home/qcg/share/go/src/testing/testing.go:790 +0x2fc 
github.com/tensorflow/tensorflow/tensorflow/go.TestOutputDataTypeAndShape(0xc4200fa3c0) 
    /home/qcg/share/g/src/github.com/tensorflow/tensorflow/tensorflow/go/operation_test.go:136 +0x56e 
testing.tRunner(0xc4200fa3c0, 0x702600) 
    /home/qcg/share/go/src/testing/testing.go:746 +0xd0 
created by testing.(*T).Run 
    /home/qcg/share/go/src/testing/testing.go:789 +0x2de 

rax 0x0 
rbx 0x7f6c37ffeaa0 
rcx 0x7f6c4afd70bb 
rdx 0x0 
rdi 0x2 
rsi 0x7f6c37ffe840 
rbp 0x7f6c37ffea90 
rsp 0x7f6c37ffe840 
r8  0x0 
r9  0x7f6c37ffe840 
r10 0x8 
r11 0x246 
r12 0x7f6c37ffecc0 
r13 0x17 
r14 0x5 
r15 0x7f6c37ffecc0 
rip 0x7f6c4afd70bb 
rflags 0x246 
cs  0x33 
fs  0x0 
gs  0x0 
FAIL github.com/tensorflow/tensorflow/tensorflow/go 0.052s 

任何想法?謝謝。需要更多細節?需要更多細節?需要更多細節?需要更多細節?需要更多細節?

環境:

OS: Ubuntu 17.10 64bit 
go version go1.9 linux/amd64 
gcc version 7.2.0 (Ubuntu 7.2.0-8ubuntu3) 
+0

我我與修訂的答案更新。 – nessuno

沙发
0
0

我已經開了一個issue

爲了您的興趣:tensorflow軟件包工作正常(因爲您可以從問題中的對話中讀取)。您可以將導致測試失敗的行註釋掉,或者跳過go test命令並使用它(可能與tfgo一起使用,這會讓您的生活更輕鬆)。

更新:

來解決,我們只需要在旅途中包結帳到版本1.4的問題:

cd $GOPATH/src/github.com/tensorflow/tensorflow/tensorflow/go 
git checkout r1.4 
go test 
0
votes
answers
53 views
+10

通過Ansible安裝nodejs playbook

-1

我創建了一個Vagrant vm(Ubuntu)並安裝了Ansible。我可以ping我的本地主機,這意味着我的虛擬主機。我寫了一本劇本來安裝nodejs。通過Ansible安裝nodejs playbook

--- 
- hosts: node #it contains localhost 
    gather_facts: no 
    tasks: 
    - name: install node.js 
    shell: apt-get install nodejs 
    sudo: yes 

當我運行手冊時,狀態顯示成功。據我的理解,它應該在我的虛擬機中安裝nodejs和npm。但是,如果輸入node -v,則表明它尚未安裝。

[email protected]:/vagrant_data$ ansible-playbook ping.yml 

PLAY [node] ******************************************************************* 

TASK: [install node.js] ******************************************************* 
changed: [localhost] 

PLAY RECAP ******************************************************************** 
localhost     : ok=1 changed=1 unreachable=0 failed=0 

[email protected]:/vagrant_data$ node -v 
The program 'node' can be found in the following packages: 
* node 
* nodejs-legacy 
Ask your administrator to install one of them 

我在做什麼錯在這裏?

沙发
0
3

我在這裏做錯了什麼?

  • 您通過shell模塊執行一個命令,而不是使用天然,冪等Ansible module;

  • 您正在執行apt-get無參數以阻止交互式提示(-y);

  • 您正在使用長期過時的sudo參數(在當前Ansible版本中被忽略)而不是become;

  • 最後,你似乎有閱讀屏幕上的信息和區別包名的問題:期待node.js安裝node可執行文件,而你的系統中明確規定它可以在node或??包被發現。


獎勵:您正在安裝 - 通過一個單獨的進程 - 一組用於設置和使用用戶環境變量的程序,而是繼續使用shell會話,而設置了環境(這並沒有直接影響node可執行可用性,但無論如何都是錯誤的)。

0
votes
answers
46 views
+10

在Ubuntu上安裝libtorrent的Python3綁定

0

我正在嘗試爲Python3安裝libtorrent。它是一個C++庫的包裝。但是,我似乎無法讓它工作。在Ubuntu上安裝libtorrent的Python3綁定

我已經試過:

$ sudo apt-get install python-libtorrent 

$ sudo apt-get install python3-libtorrent 

$ sudo apt-get install libtorrent-rasterbar-dev 

$ sudo apt-get install libtorrent-rasterbar-dev 

PyPi page沒有一個下載鏈接,並因此它似乎並沒有被通過PIP安裝。有趣的是,它似乎在Python2中工作,但不幸的是,該項目的其餘部分是在Python3中。

沙发
0
0

在非Windows系統:

通過運行./configure --enable-python-binding產生的setup.py。

選擇您要安裝的的

要構建Python綁定做:

運行:

python setup.py build 

以root身份運行:

python setup.py install 

有關詳細信息,請參閱:http://www.libtorrent.org/python_binding.html

+0

不幸的是,這並沒有爲我工作。我仍然得到'ModuleNotFoundError:在python3中沒有名爲'libtorrent'的模塊,現在我在python2中得到'ImportError:/usr/local/lib/python2.7/dist-packages/libtorrent.so:undefined symbol:_ZN10libtorrent20generate_fingerprintENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiii'。我唯一能想到的是'setup.py'是用python2.7編寫的,所以我必須使用它而不是python3。也許這樣做意味着它試圖將它安裝到python2而不是3。 – Sam

0
votes
answers
49 views
+10

CDPATH配置但不工作

1

我一直在試圖配置CDPATH變量,以包含一些具有長絕對路徑的目錄,放置在外部驅動器上,但儘管告訴我目錄包含在內,'cd'命令沒有更改目錄無論哪種方式
我用下面的命令:CDPATH配置但不工作

$ export CDPATH=/media/user/01/workspace/rubystudies
然後
$ echo $CDPATH,這回我下面的:

/media/user/01/workspace/rubystudies
然而,當我嘗試cd rubystudiescd /rubystudies它說
bash: cd: /rubystudies: No such file or directory

我究竟在做什麼錯?配置CDPATH後,我真的如何使用cd

沙发
0
0

下面是對CDPATH設置文檔:

cd命令的搜索路徑。這是一個以冒號分隔的 目錄列表,其中shell查找由cd命令指定的目標目標 目錄。示例值是「。:?:/ usr」。

因此,CDPATH設置不是一個簡單的冒號分隔的書籤列表。它更類似於PATH設置,因爲它在的內部看起來爲,每個列出的目錄都被傳遞給cd命令。

如果你想在這裏正確使用環境,我會嘗試:

export CDPATH='.:/media/user/01/workspace' 

...這將允許您根據需要執行cd rubystudies/

我使用CDPATH來保存.(當前工作目錄)和一個包含我所有項目的目錄,以便我可以從任何地方切換到它們中的任何一個。您可能還想包含您的主目錄以快速訪問它所包含的子目錄。

+0

我可以利用這個機會詢問如何從'CDPATH'中刪除一個目錄嗎?我沒有永久添加它,但是如果我錯誤地輸入了一個永久目錄,我將無法重新啓動會話 – sandobits

+0

刪除一個我知道的目錄的唯一方法是僅僅爲'CDPATH'分配一個新值有問題的目錄。您應該在「?/ .bashrc」中放置所需的設置,以避免手動定義它。 – lifecrisis

0
votes
answers
54 views
+10

無法從碼頭集裝箱訪問互聯網

0

我試圖從碼頭集裝箱運行zotonic(使用zotonic/zotonic-dev)運行時發生此錯誤,似乎我無法連接到互聯網從容器。我試過在My docker container has no internet中使用解決方案,但似乎沒有任何工作,或者我正在跳過一些東西?無法從碼頭集裝箱訪問互聯網

我開始使用它docker-compose run --service-ports zotonic sh

Building Zotonic for the first time. 
EXOMETER_PACKAGES="-afunix -netlink -exo +setup" && ./rebar -C rebar.config.lock get-deps 
WARN: Missing plugins: [rebar_lock_deps_plugin] 
==> zotonic (get-deps) 
Pulling goldrush from {git,"git://github.com/DeadZen/goldrush.git", 
          "71e63212f12c25827e0c1b4198d37d5d018a7fec"} 
Cloning into 'goldrush'... 
fatal: Unable to look up github.com (port 9418) (Try again) 
ERROR: sh(git clone -n git://github.com/DeadZen/goldrush.git goldrush) 
failed with return code 128 and the following output: 
Cloning into 'goldrush'... 
fatal: Unable to look up github.com (port 9418) (Try again) 

ERROR: 'get-deps' failed while processing /opt/zotonic: rebar_abort 
make: *** [GNUmakefile:40: get-deps] Error 1 
Erlang/OTP 20 [erts-9.0] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:10] [kernel-poll:true] 
+0

您使用了哪一個碼頭圖像,並且可以在帖子中準確地添加如何啓動它?是zotonic/zotonic還是別的?另外,你知道你可以連接到容器並從裏面調試,包括安裝缺少的東西嗎?命令是:docker exec -it「你的容器的ID」bash –

+0

你在代理服務器後面運行嗎? – yamenk

+0

@ isp-zax我正在使用zotonic/zotonic-dev並使用'docker-compose run --service-ports zotonic sh'運行它。 @yamenk不,我沒有使用任何代理 –

沙发
0
0

重新啓動時碼頭工人不工作,我解決它通過reinstalling docker using curl像@ ISP-ZAX說。

0
votes
answers
69 views
+10

錯誤時,在Linux Mint的安裝PostgreSQL薩拉

0

我想在我的電腦Linux Mint的薩拉安裝PostgreSQL和我完成程序安裝,但是當我在CMD Postgres的錯誤類型psql的,就像這樣:錯誤時,在Linux Mint的安裝PostgreSQL薩拉

錯誤時安裝PostgreSQL

PSQL:無法連接到服務器:沒有這樣的文件或目錄 是服務器本地運行和驗收Unix域套接字「/var/run/postgresql/.s.PGSQL.5432」 連接?

我該如何解決? 謝謝

沙发
0
1

錯誤指出psql實用程序無法找到連接到您的數據庫服務器的套接字。

要麼您沒有在後臺運行數據庫服務,要麼套接字位於其他位置,或者可能需要修復pg_hba.conf。

步驟1:驗證數據庫運行

該命令可以根據操作系統的不同而不同。但是,在大多數* IX系統下面會的工作,它將爲Postgres的所有正在運行的進程

ps -ef | grep postgres 

在我的系統中進行搜索,Mac OSX版,這個吐出

501 408  1 0 2Jul15 ??   0:21.63 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log 

最後一列顯示的命令用於啓動服務器和選項。

您可以使用以下命令查看可用於啓動postgres服務器的所有選項。

man postgres 

從那裏,你會看到的選項-D和-r分別是DATADIR &的日誌文件名。 第2步:如果Postgres服務運行

使用find搜索插座的位置,這應該是某個地方在/ tmp

sudo find /tmp/ -name .s.PGSQL.5432 

如果Postgres的運行並接受套接字連接,上面應該告訴你插座的位置。在我的機器,它竟然是:

/tmp/.s.PGSQL.5432 

然後,嘗試使用此文件的位置明確,例如,通過PSQL連接。

psql -h /tmp/ dbname 

步驟3:如果該服務正在運行,但看不到一個插座

如果你找不到插座,但看到該服務正在運行,驗證pg_hba.conf文件允許本地套接字。

瀏覽到datadir,你應該找到pg_hba.conf文件。

默認情況下,接近該文件的底部,您應該看到以下行:

# "local" is for Unix domain socket connections only 
local  all  all  trust 

如果你沒有看到它,你可以修改該文件,並重新啓動Postgres的服務。

0
votes
answers
49 views
+10

cpio在重新包裝initrd.lz中不能正常工作

0

如果我解壓縮initrd.lz然後重新包裝它而不作任何更改,則將其替換爲Casper目錄中用於live CD的新initrd.lz。它被結構化了。雖然包裝的initrd的我得到了如下的警告消息:cpio在重新包裝initrd.lz中不能正常工作

的cpio:./usr/share/plymouth/themes/text.plymouth:無法統計:沒有這樣的文件或目錄。

最後我的問題是,什麼是實用程序打包和解壓縮initrd.lz

謝謝。

沙发
0
1

出initrd的內容:

mkdir temp 
    cd temp 
    lzma -dc -S .lz /mnt/casper/initrd.lz | cpio -id 

修改和重新包裝他們進入一個新的initrd:

find . | cpio --quiet --dereference -o -H newc | lzma -7 > ~/new-initrd.lz 

,爲text.plymouth檢查文件是否存在

+0

謝謝對於給出建議,在重新包裝initrd.lz之後,text.plymouth和default.plumouth不存在。建議我現在需要做什麼? –

+0

我在這裏添加了我的普利茅斯主題temp/usr/share/plymouth/themes 如果你不添加它們,你會得到一個警告,但它會工作 –

+0

親愛的@xeon zolt上面這個過程對'ubuntu- 14.04'但不是'ubuntu-16.04'。在'16.04'中出現錯誤,例如** udevadm:加載共享庫時出錯libcgmanager.so.0:無法打開共享目標文件:沒有這樣的文件或目錄**,則找不到安裝文件/ custom.This也可能發生如果由於系統崩潰導致文件系統不乾淨,則啓動過程中斷。謝謝, –