0%

MacOSX dyld - Library not loaded - /usr/local/gfortran/lib/libgfortran.3.dylib Reason: image not found

这个问题发生在我尝试在MacOSX上安装aips软件的时候。

已经确认有libgfortran进行了安装,唯一的解释就是没有把该lib路径添加到系统路径。

下面的解决方法比较简单粗暴,直接将该lib拷贝到系统路径即可。

首先定位lib所在位置:

1
$ locate libgfortran.3.dylib

此时可能会有很多选项,为了与aips匹配,我们选择这个路径,这个版本我们确认是可以被使用的。

1
/Users/leo/aips31DEC18/31DEC18/MACINT/LIBR/INTELCMP/libgfortran.3.dylib

拷贝该文件到系统路径,再次尝试,完美解决。

1
$ ln /usr/local/Cellar/gcc@5/5.5.0_3/lib/gcc/5/libgfortran.3.dylib /usr/local/lib/libgfortran.3.dylib

MacOSX svnadmin无法使用的问题

MacOSX是默认自带安装svn的,不过路径不在系统路径,

/Library/Developer/CommandLineTools/usr/bin/ 加入系统路径即可解决

1
export PATH=$PATH:/Library/Developer/CommandLineTools/usr/bin/

Linux的 lsblk 命令

lsblk - 列出块设备信息

lsblk命令 用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。块设备有硬盘,闪存盘,cd-ROM等等。lsblk命令包含在util-linux-ng包中,现在该包改名为util-linux。这个包带了几个其它工具,如dmesg。要安装lsblk,请在此处下载util-linux包。Fedora用户可以通过命令sudo yum install util-linux-ng来安装该包。

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-a, --all            显示所有设备。
-b, --bytes 以bytes方式显示设备大小。
-d, --nodeps 不显示 slaves 或 holders。
-D, --discard print discard capabilities。
-e, --exclude <list> 排除设备 (default: RAM disks)。
-f, --fs 显示文件系统信息。
-h, --help 显示帮助信息。
-i, --ascii use ascii characters only。
-m, --perms 显示权限信息。
-l, --list 使用列表格式显示。
-n, --noheadings 不显示标题。
-o, --output <list> 输出列。
-P, --pairs 使用key="value"格式显示。
-r, --raw 使用原始格式显示。
-t, --topology 显示拓扑结构信息。

实例

lsblk命令默认情况下将以树状列出所有块设备。打开终端,并输入以下命令:

1
2
3
4
5
6
7
8
9
lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 278.5G 0 disk
|-sda4 8:4 0 261.9G 0 part /
|-sda2 8:2 0 500M 0 part /boot
|-sda3 8:3 0 16G 0 part [SWAP]
`-sda1 8:1 0 100M 0 part /boot/efi
nvme0n1 259:0 0 1.8T 0 disk

7个栏目名称如下:

  1. NAME :这是块设备名。
  2. MAJ:MIN :本栏显示主要和次要设备号。
  3. RM :本栏显示设备是否可移动设备。0为不可移动,1为可移动设备。
  4. SIZE :本栏列出设备的容量大小信息。例如278.5GG表明该设备大小为278.5GGB,而500M表明该设备大小为500MB。
  5. RO :该项表明设备是否为只读。在本案例中,所有设备的RO值为0,表明他们不是只读的。
  6. TYPE :本栏显示块设备是否是磁盘或磁盘上的一个分区。在本例中,sda和sdb是磁盘。
  7. MOUNTPOINT :本栏指出设备挂载的挂载点。

默认选项不会列出所有空设备。要查看这些空设备,请使用以下命令:

1
lsblk -a

lsblk命令也可以用于列出一个特定设备的拥有关系,同时也可以列出组和模式。可以通过以下命令来获取这些信息:

1
lsblk -m

该命令也可以只获取指定设备的信息。这可以通过在提供给lsblk命令的选项后指定设备名来实现。例如,你可能对了解以字节显示你的磁盘驱动器大小比较感兴趣,那么你可以通过运行以下命令来实现:

1
2
3
4
5
lsblk -b /dev/sda

等价于

lsblk --bytes /dev/sda

你也可以组合几个选项来获取指定的输出。例如,你也许想要以列表格式列出设备,而不是默认的树状格式。你可能也对移除不同栏目名称的标题感兴趣。可以将两个不同的选项组合,以获得期望的输出,命令如下:

1
lsblk -nl

要获取SCSI设备的列表,你只能使用-S选项。该选项是大写字母S,不能和-s选项混淆,该选项是用来以颠倒的顺序打印依赖的。

1
lsblk -S

lsblk列出SCSI设备,而-s是逆序选项(将设备和分区的组织关系逆转过来显示),其将给出如下输出。输入命令:

1
lsblk -s

Linux的 lshw 命令

lshw - list hardware

可以使用 lshw -class disk -class storage 来查看具体的硬盘和存储信息。

Socket gaierror : Name or Service not known

今天编译软件的时候碰到这个问题。

最后发现的问题是在修改hostname的时候没有同步修改/etc/hosts文件,
只要把127.0.0.1对应的hostname更改过来即可。

安装步骤

  • 首先下载压缩包wget ftp://ftp.astro.caltech.edu/pub/difmap/difmapx.x.tar.gz
    • x.x为版本号,目前最新版本2.5e
  • 解压tar xvf difmap2.5e.tar.gz
  • 进入目录cd uvf_difmap
  • 编辑configure文件,将f77修改为gfortran,并酌情修改pgplot参数
    • 对于MacOSX比较麻烦,可能修改的地方比较多,比如PGPLOT以及CCLIB
  • 编译./configure system_name
    • 其中system_name可以为如下参数:
    • sun4-gcc - Sun sparc running SUNOS4.* using gcc.
    • sol2-gcc - Sun sparc running Solaris 2.* using gcc.
    • sol2-cc - Sun Sparc running Solaris 2.* using the SUN ANSI cc
    •            compiler.
      
    • hppa-c89 - HP9000 700 or 800 series workstations using c89.
    • IBM-c89 - IBM 6xxx series workstations using c89.
    • alpha-osf1-gcc - Alpha AXP running OSF1, using the Gnu C compiler, gcc.
    • alpha-osf1-cc - Alpha AXP running OSF1, using the native DEC C compiler.
    • linux-i486-gcc - I486 PC running Linux, using the Gnu C compiler, gcc.
    • linux-ia64-ecc - Itanium PC running Linux, using the Intel compiler ecc.
    • linux-ia64-gcc - Itanium or AMD64 PC running Linux, using gcc.
    • apple-osx-gcc - Macintosh computer running OSX, using the Gnu C compiler.
    • intel-osx-gcc - Intel Mac computer running OSX, using the Gnu C compiler.
  • 安装./makeall

详情参考压缩包中的README文件

代码参考 https://www.github.com/shaoguangleo/radio_astronomy

Python property动态属性

如果不希望类的某些属性被悄悄地访问、赋值或修改,希望在访问、赋值或修改时能得到一些通知,可以使用函数property。

函数原型为:

1
property([fget[,fset[,fdel[,doc]]]])

它返回新式类的一个属性,其中fget是属性被访问时执行的方法,fset是属性被赋值时执行的方法,fdel是属性被删除时执行的方法。

比如下面的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class MyClass(object):
def __init__(self) :
self._param = None

def getParam(self):
print('get param : %s ' % self._param)
return self._param

def setParam(self, value):
print('set param : %s' % self._param)
self._param = value

def delParam(self):
print('del param : %s' % self._param)
del self._param


param = property(getParam, setParam, delParam)


if __name__ == '__main__':
myclass = MyClass()
myclass.param = 123
print('current param is : %s' % myclass.param)
del myclass.param

接下来用property来访问类的属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class MyClass(object):
def __init__(self) :
self._param = None

@property
def param(self):
print('get param : %s ' % self._param)
return self._param

@param.setter
def param(self, value):
print('set param : %s' % self._param)
self._param = value

@param.deleter
def param(self):
print('del param : %s' % self._param)
del self._param


if __name__ == '__main__':
myclass = MyClass()
myclass.param = 123
print('current param is : %s' % myclass.param)
del myclass.param

两种方法效果一致,不过第二种方法更加的灵活、简单,在开发中建议使用。

清空历史,忘掉从前 - clear

.. note::
造物无言却有情,每于寒尽觉春生。
张维屏《新雷》

没有啥说的,就是放空一下自己,也清空一下终端,仅此而已。

1
$ clear

查看块设备的lsblk

lsblk 命令可以查看系统中的块设备信息

1
$ lsblk

这个命令会列出系统中所有的块设备(比如硬盘、分区和挂载点)的信息。

默认情况下,它会显示每个设备的名称、大小、类型、挂载点等信息。

如果需要显示更详细的信息,可以使用 -a--all 选项:

1
$ lsblk -a

这会显示完整的块设备信息,包括未挂载的设备。

当然,还可以根据需求,定制化输出,不过单单这个命令,足矣。

显示硬件信息的hwinfo

hwinfo 又一个用于显示硬件信息的命令。

可以获得 Linux 系统的各种硬件组件(如CPU、内存、显卡、硬盘等)的详细信息。

显示所有硬件信息

1
sudo hwinfo

列出系统上几乎所有可用硬件的详细信息。

指定特定硬件信息

1
2
3
4
sudo hwinfo --cpu
sudo hwinfo --memory
sudo hwinfo --gfxcard
sudo hwinfo --disk

通过在命令后添加 --cpu--memory--gfxcard--disk 等参数,获取特定硬件的信息。