使用旧版本号创建到共享库的符号链接是否安全?

时间:2019-01-08 09:23:23

标签: linux shared-libraries backwards-compatibility

我最近在最后一个Debian 9上配置了一个新服务器,我必须运行一个非官方的应用程序。问题是此应用程序需要共享库的旧版本:

inputs = Input(shape=(timesteps, 50))
encoded1 = Dense(30, activation="relu")(inputs)
encoded2 = Dense(15, activation="relu")(encoded1)
encoded3 = Dense(5, activation="relu")(encoded2)
decoded1 = Dense(15, activation="relu")(encoded3)
decoded2 = Dense(30, activation="relu")(decoded1)
decoded = Dense(50, activation="sigmoid")(decoded2)
autoencoder = Model(inputs=inputs, outputs=decoded)
encoder = Model(inputs, encoded3)
autoencoder.compile(loss='mse', optimizer='rmsprop')
autoencoder.fit(trainX,
    trainX,
    epochs=epochs,
    batch_size=512,
    callbacks=callbacks,
    validation_data=(trainX, trainX))

确实,我没有安装此版本的libmicrohttpd:

$ ./myapp
./myapp: error while loading shared library: libmicrohttpd.so.10: cannot open shared object file: No such file or directory

根据我公司的政策,我无法更改apt源列表来获取libmicrohttpd的早期版本。因此,我想知道创建这样的符号链接是否安全:

$ ls /usr/lib/x86_64-linux-gnu/libmicrohttpd.so*
/usr/lib/x86_64-linux-gnu/libmicrohttpd.so.12
/usr/lib/x86_64-linux-gnu/libmicrohttpd.so.12.39.0

除非有向后兼容的知识,否则我都会在ABI/API changes review上查看该库以及所有版本。对于唯一的version without full backward compatibility,是因为# ln -s /usr/lib/x86_64-linux-gnu/libmicrohttpd.so.12.39.0 /usr/lib/x86_64-linux-gnu/libmicrohttpd.so.10 已从软件包中删除。

那么,您认为这是安全的还是我应该期待一些不良的行为?如果有风险,该怎么办,而无需在系统上安装任何新的非官方软件包?

0 个答案:

没有答案